linear_algebra.matrix.mv_polynomialMathlib.LinearAlgebra.Matrix.MvPolynomial

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -4,8 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 -/
 import LinearAlgebra.Matrix.Determinant
-import Data.MvPolynomial.Basic
-import Data.MvPolynomial.CommRing
+import Algebra.MvPolynomial.Basic
+import Algebra.MvPolynomial.CommRing
 
 #align_import linear_algebra.matrix.mv_polynomial from "leanprover-community/mathlib"@"86d1873c01a723aba6788f0b9051ae3d23b4c1c3"
 
Diff
@@ -89,7 +89,7 @@ theorem det_mvPolynomialX_ne_zero [DecidableEq m] [Fintype m] [CommRing R] [Nont
     det (mvPolynomialX m m R) ≠ 0 := by
   intro h_det
   have := congr_arg Matrix.det (mv_polynomial_X_map_matrix_eval (1 : Matrix m m R))
-  rw [det_one, ← RingHom.map_det, h_det, RingHom.map_zero] at this 
+  rw [det_one, ← RingHom.map_det, h_det, RingHom.map_zero] at this
   exact zero_ne_one this
 #align matrix.det_mv_polynomial_X_ne_zero Matrix.det_mvPolynomialX_ne_zero
 -/
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 -/
-import Mathbin.LinearAlgebra.Matrix.Determinant
-import Mathbin.Data.MvPolynomial.Basic
-import Mathbin.Data.MvPolynomial.CommRing
+import LinearAlgebra.Matrix.Determinant
+import Data.MvPolynomial.Basic
+import Data.MvPolynomial.CommRing
 
 #align_import linear_algebra.matrix.mv_polynomial from "leanprover-community/mathlib"@"86d1873c01a723aba6788f0b9051ae3d23b4c1c3"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module linear_algebra.matrix.mv_polynomial
-! leanprover-community/mathlib commit 86d1873c01a723aba6788f0b9051ae3d23b4c1c3
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.LinearAlgebra.Matrix.Determinant
 import Mathbin.Data.MvPolynomial.Basic
 import Mathbin.Data.MvPolynomial.CommRing
 
+#align_import linear_algebra.matrix.mv_polynomial from "leanprover-community/mathlib"@"86d1873c01a723aba6788f0b9051ae3d23b4c1c3"
+
 /-!
 # Matrices of multivariate polynomials
 
Diff
@@ -41,15 +41,18 @@ noncomputable def mvPolynomialX [CommSemiring R] : Matrix m n (MvPolynomial (m 
 #align matrix.mv_polynomial_X Matrix.mvPolynomialX
 -/
 
+#print Matrix.mvPolynomialX_apply /-
 -- TODO: set as an equation lemma for `mv_polynomial_X`, see mathlib4#3024
 @[simp]
 theorem mvPolynomialX_apply [CommSemiring R] (i j) :
     mvPolynomialX m n R i j = MvPolynomial.X (i, j) :=
   rfl
 #align matrix.mv_polynomial_X_apply Matrix.mvPolynomialX_apply
+-/
 
 variable {m n R S}
 
+#print Matrix.mvPolynomialX_map_eval₂ /-
 /-- Any matrix `A` can be expressed as the evaluation of `matrix.mv_polynomial_X`.
 
 This is of particular use when `mv_polynomial (m × n) R` is an integral domain but `S` is
@@ -59,25 +62,31 @@ theorem mvPolynomialX_map_eval₂ [CommSemiring R] [CommSemiring S] (f : R →+*
     (mvPolynomialX m n R).map (MvPolynomial.eval₂ f fun p : m × n => A p.1 p.2) = A :=
   ext fun i j => MvPolynomial.eval₂_X _ (fun p : m × n => A p.1 p.2) (i, j)
 #align matrix.mv_polynomial_X_map_eval₂ Matrix.mvPolynomialX_map_eval₂
+-/
 
+#print Matrix.mvPolynomialX_mapMatrix_eval /-
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `ring_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R]
     (A : Matrix m m R) :
     (MvPolynomial.eval fun p : m × m => A p.1 p.2).mapMatrix (mvPolynomialX m m R) = A :=
   mvPolynomialX_map_eval₂ _ A
 #align matrix.mv_polynomial_X_map_matrix_eval Matrix.mvPolynomialX_mapMatrix_eval
+-/
 
 variable (R)
 
+#print Matrix.mvPolynomialX_mapMatrix_aeval /-
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `alg_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_aeval [Fintype m] [DecidableEq m] [CommSemiring R] [CommSemiring S]
     [Algebra R S] (A : Matrix m m S) :
     (MvPolynomial.aeval fun p : m × m => A p.1 p.2).mapMatrix (mvPolynomialX m m R) = A :=
   mvPolynomialX_map_eval₂ _ A
 #align matrix.mv_polynomial_X_map_matrix_aeval Matrix.mvPolynomialX_mapMatrix_aeval
+-/
 
 variable (m R)
 
+#print Matrix.det_mvPolynomialX_ne_zero /-
 /-- In a nontrivial ring, `matrix.mv_polynomial_X m m R` has non-zero determinant. -/
 theorem det_mvPolynomialX_ne_zero [DecidableEq m] [Fintype m] [CommRing R] [Nontrivial R] :
     det (mvPolynomialX m m R) ≠ 0 := by
@@ -86,6 +95,7 @@ theorem det_mvPolynomialX_ne_zero [DecidableEq m] [Fintype m] [CommRing R] [Nont
   rw [det_one, ← RingHom.map_det, h_det, RingHom.map_zero] at this 
   exact zero_ne_one this
 #align matrix.det_mv_polynomial_X_ne_zero Matrix.det_mvPolynomialX_ne_zero
+-/
 
 end Matrix
 
Diff
@@ -83,7 +83,7 @@ theorem det_mvPolynomialX_ne_zero [DecidableEq m] [Fintype m] [CommRing R] [Nont
     det (mvPolynomialX m m R) ≠ 0 := by
   intro h_det
   have := congr_arg Matrix.det (mv_polynomial_X_map_matrix_eval (1 : Matrix m m R))
-  rw [det_one, ← RingHom.map_det, h_det, RingHom.map_zero] at this
+  rw [det_one, ← RingHom.map_det, h_det, RingHom.map_zero] at this 
   exact zero_ne_one this
 #align matrix.det_mv_polynomial_X_ne_zero Matrix.det_mvPolynomialX_ne_zero
 
Diff
@@ -41,12 +41,6 @@ noncomputable def mvPolynomialX [CommSemiring R] : Matrix m n (MvPolynomial (m 
 #align matrix.mv_polynomial_X Matrix.mvPolynomialX
 -/
 
-/- warning: matrix.mv_polynomial_X_apply -> Matrix.mvPolynomialX_apply is a dubious translation:
-lean 3 declaration is
-  forall (m : Type.{u1}) (n : Type.{u2}) (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] (i : m) (j : n), Eq.{max (succ (max u1 u2)) (succ u3)} (MvPolynomial.{max u1 u2, u3} (Prod.{u1, u2} m n) R _inst_1) (Matrix.mvPolynomialX.{u1, u2, u3} m n R _inst_1 i j) (MvPolynomial.X.{u3, max u1 u2} R (Prod.{u1, u2} m n) _inst_1 (Prod.mk.{u1, u2} m n i j))
-but is expected to have type
-  forall (m : Type.{u2}) (n : Type.{u1}) (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] (i : m) (j : n), Eq.{max (max (succ u2) (succ u1)) (succ u3)} (MvPolynomial.{max u1 u2, u3} (Prod.{u2, u1} m n) R _inst_1) (Matrix.mvPolynomialX.{u2, u1, u3} m n R _inst_1 i j) (MvPolynomial.X.{u3, max u1 u2} R (Prod.{u2, u1} m n) _inst_1 (Prod.mk.{u2, u1} m n i j))
-Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_apply Matrix.mvPolynomialX_applyₓ'. -/
 -- TODO: set as an equation lemma for `mv_polynomial_X`, see mathlib4#3024
 @[simp]
 theorem mvPolynomialX_apply [CommSemiring R] (i j) :
@@ -56,12 +50,6 @@ theorem mvPolynomialX_apply [CommSemiring R] (i j) :
 
 variable {m n R S}
 
-/- warning: matrix.mv_polynomial_X_map_eval₂ -> Matrix.mvPolynomialX_map_eval₂ is a dubious translation:
-lean 3 declaration is
-  forall {m : Type.{u1}} {n : Type.{u2}} {R : Type.{u3}} {S : Type.{u4}} [_inst_1 : CommSemiring.{u3} R] [_inst_2 : CommSemiring.{u4} S] (f : RingHom.{u3, u4} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1)) (Semiring.toNonAssocSemiring.{u4} S (CommSemiring.toSemiring.{u4} S _inst_2))) (A : Matrix.{u1, u2, u4} m n S), Eq.{succ (max u1 u2 u4)} (Matrix.{u1, u2, u4} m n S) (Matrix.map.{max (max u1 u2) u3, u4, u1, u2} m n (MvPolynomial.{max u1 u2, u3} (Prod.{u1, u2} m n) R _inst_1) S (Matrix.mvPolynomialX.{u1, u2, u3} m n R _inst_1) (MvPolynomial.eval₂.{u3, u4, max u1 u2} R S (Prod.{u1, u2} m n) _inst_1 _inst_2 f (fun (p : Prod.{u1, u2} m n) => A (Prod.fst.{u1, u2} m n p) (Prod.snd.{u1, u2} m n p)))) A
-but is expected to have type
-  forall {m : Type.{u2}} {n : Type.{u1}} {R : Type.{u4}} {S : Type.{u3}} [_inst_1 : CommSemiring.{u4} R] [_inst_2 : CommSemiring.{u3} S] (f : RingHom.{u4, u3} R S (Semiring.toNonAssocSemiring.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_2))) (A : Matrix.{u2, u1, u3} m n S), Eq.{max (max (succ u2) (succ u1)) (succ u3)} (Matrix.{u2, u1, u3} m n S) (Matrix.map.{max (max u2 u1) u4, u3, u2, u1} m n (MvPolynomial.{max u1 u2, u4} (Prod.{u2, u1} m n) R _inst_1) S (Matrix.mvPolynomialX.{u2, u1, u4} m n R _inst_1) (MvPolynomial.eval₂.{u4, u3, max u2 u1} R S (Prod.{u2, u1} m n) _inst_1 _inst_2 f (fun (p : Prod.{u2, u1} m n) => A (Prod.fst.{u2, u1} m n p) (Prod.snd.{u2, u1} m n p)))) A
-Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_eval₂ Matrix.mvPolynomialX_map_eval₂ₓ'. -/
 /-- Any matrix `A` can be expressed as the evaluation of `matrix.mv_polynomial_X`.
 
 This is of particular use when `mv_polynomial (m × n) R` is an integral domain but `S` is
@@ -72,9 +60,6 @@ theorem mvPolynomialX_map_eval₂ [CommSemiring R] [CommSemiring S] (f : R →+*
   ext fun i j => MvPolynomial.eval₂_X _ (fun p : m × n => A p.1 p.2) (i, j)
 #align matrix.mv_polynomial_X_map_eval₂ Matrix.mvPolynomialX_map_eval₂
 
-/- warning: matrix.mv_polynomial_X_map_matrix_eval -> Matrix.mvPolynomialX_mapMatrix_eval is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_eval Matrix.mvPolynomialX_mapMatrix_evalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `ring_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R]
     (A : Matrix m m R) :
@@ -84,9 +69,6 @@ theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R
 
 variable (R)
 
-/- warning: matrix.mv_polynomial_X_map_matrix_aeval -> Matrix.mvPolynomialX_mapMatrix_aeval is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_aeval Matrix.mvPolynomialX_mapMatrix_aevalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `alg_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_aeval [Fintype m] [DecidableEq m] [CommSemiring R] [CommSemiring S]
     [Algebra R S] (A : Matrix m m S) :
@@ -96,12 +78,6 @@ theorem mvPolynomialX_mapMatrix_aeval [Fintype m] [DecidableEq m] [CommSemiring
 
 variable (m R)
 
-/- warning: matrix.det_mv_polynomial_X_ne_zero -> Matrix.det_mvPolynomialX_ne_zero is a dubious translation:
-lean 3 declaration is
-  forall (m : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} m] [_inst_2 : Fintype.{u1} m] [_inst_3 : CommRing.{u2} R] [_inst_4 : Nontrivial.{u2} R], Ne.{succ (max u1 u2)} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (Matrix.det.{max u1 u2, u1} m (fun (a : m) (b : m) => _inst_1 a b) _inst_2 (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (MvPolynomial.commRing.{u2, u1} R (Prod.{u1, u1} m m) _inst_3) (Matrix.mvPolynomialX.{u1, u1, u2} m m R (CommRing.toCommSemiring.{u2} R _inst_3))) (OfNat.ofNat.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) 0 (OfNat.mk.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) 0 (Zero.zero.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (MulZeroClass.toHasZero.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (NonUnitalNonAssocSemiring.toMulZeroClass.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (NonAssocRing.toNonUnitalNonAssocRing.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (Ring.toNonAssocRing.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (CommRing.toRing.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (MvPolynomial.commRing.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))))))))))
-but is expected to have type
-  forall (m : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} m] [_inst_2 : Fintype.{u2} m] [_inst_3 : CommRing.{u1} R] [_inst_4 : Nontrivial.{u1} R], Ne.{succ (max u2 u1)} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (Matrix.det.{max u2 u1, u2} m (fun (a : m) (b : m) => _inst_1 a b) _inst_2 (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3) (Matrix.mvPolynomialX.{u2, u2, u1} m m R (CommRing.toCommSemiring.{u1} R _inst_3))) (OfNat.ofNat.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) 0 (Zero.toOfNat0.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (CommMonoidWithZero.toZero.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (CommSemiring.toCommMonoidWithZero.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (CommRing.toCommSemiring.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))))))
-Case conversion may be inaccurate. Consider using '#align matrix.det_mv_polynomial_X_ne_zero Matrix.det_mvPolynomialX_ne_zeroₓ'. -/
 /-- In a nontrivial ring, `matrix.mv_polynomial_X m m R` has non-zero determinant. -/
 theorem det_mvPolynomialX_ne_zero [DecidableEq m] [Fintype m] [CommRing R] [Nontrivial R] :
     det (mvPolynomialX m m R) ≠ 0 := by
Diff
@@ -73,10 +73,7 @@ theorem mvPolynomialX_map_eval₂ [CommSemiring R] [CommSemiring S] (f : R →+*
 #align matrix.mv_polynomial_X_map_eval₂ Matrix.mvPolynomialX_map_eval₂
 
 /- warning: matrix.mv_polynomial_X_map_matrix_eval -> Matrix.mvPolynomialX_mapMatrix_eval is a dubious translation:
-lean 3 declaration is
-  forall {m : Type.{u1}} {R : Type.{u2}} [_inst_1 : Fintype.{u1} m] [_inst_2 : DecidableEq.{succ u1} m] [_inst_3 : CommSemiring.{u2} R] (A : Matrix.{u1, u1, u2} m m R), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} m m R) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (RingHom.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (fun (_x : RingHom.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) => (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) -> (Matrix.{u1, u1, u2} m m R)) (RingHom.hasCoeToFun.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (RingHom.mapMatrix.{max u1 u2, u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) R _inst_1 (fun (a : m) (b : m) => _inst_2 a b) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) (MvPolynomial.eval.{u2, u1} R (Prod.{u1, u1} m m) _inst_3 (fun (p : Prod.{u1, u1} m m) => A (Prod.fst.{u1, u1} m m p) (Prod.snd.{u1, u1} m m p)))) (Matrix.mvPolynomialX.{u1, u1, u2} m m R _inst_3)) A
-but is expected to have type
-  forall {m : Type.{u2}} {R : Type.{u1}} [_inst_1 : Fintype.{u2} m] [_inst_2 : DecidableEq.{succ u2} m] [_inst_3 : CommSemiring.{u1} R] (A : Matrix.{u2, u2, u1} m m R), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u1) (succ u2)} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (fun (_x : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (RingHom.instRingHomClassRingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (RingHom.mapMatrix.{max u2 u1, u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) R _inst_1 (fun (a : m) (b : m) => _inst_2 a b) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (MvPolynomial.eval.{u1, u2} R (Prod.{u2, u2} m m) _inst_3 (fun (p : Prod.{u2, u2} m m) => A (Prod.fst.{u2, u2} m m p) (Prod.snd.{u2, u2} m m p)))) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) A
+<too large>
 Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_eval Matrix.mvPolynomialX_mapMatrix_evalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `ring_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R]
@@ -88,10 +85,7 @@ theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R
 variable (R)
 
 /- warning: matrix.mv_polynomial_X_map_matrix_aeval -> Matrix.mvPolynomialX_mapMatrix_aeval is a dubious translation:
-lean 3 declaration is
-  forall {m : Type.{u1}} (R : Type.{u2}) {S : Type.{u3}} [_inst_1 : Fintype.{u1} m] [_inst_2 : DecidableEq.{succ u1} m] [_inst_3 : CommSemiring.{u2} R] [_inst_4 : CommSemiring.{u3} S] [_inst_5 : Algebra.{u2, u3} R S _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4)] (A : Matrix.{u1, u1, u3} m m S), Eq.{succ (max u1 u3)} (Matrix.{u1, u1, u3} m m S) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (AlgHom.{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) (fun (_x : AlgHom.{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) => (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) -> (Matrix.{u1, u1, u3} m m S)) ([anonymous].{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) (AlgHom.mapMatrix.{max u1 u2, u3, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (CommSemiring.toSemiring.{u3} S _inst_4) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)) _inst_5 (MvPolynomial.aeval.{u2, u3, u1} R S (Prod.{u1, u1} m m) _inst_3 _inst_4 _inst_5 (fun (p : Prod.{u1, u1} m m) => A (Prod.fst.{u1, u1} m m p) (Prod.snd.{u1, u1} m m p)))) (Matrix.mvPolynomialX.{u1, u1, u2} m m R _inst_3)) A
-but is expected to have type
-  forall {m : Type.{u3}} (R : Type.{u2}) {S : Type.{u1}} [_inst_1 : Fintype.{u3} m] [_inst_2 : DecidableEq.{succ u3} m] [_inst_3 : CommSemiring.{u2} R] [_inst_4 : CommSemiring.{u1} S] [_inst_5 : Algebra.{u2, u1} R S _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4)] (A : Matrix.{u3, u3, u1} m m S), Eq.{max (succ u3) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) (FunLike.coe.{max (max (max (succ u3) (succ u1)) (succ u2)) (succ u3), max (succ u3) (succ u2), max (succ u1) (succ u3)} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (fun (_x : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) _x) (SMulHomClass.toFunLike.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (SMulZeroClass.toSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toZero.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toAddZeroClass.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)))))))) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toZero.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toAddZeroClass.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (DistribMulActionHomClass.toSMulHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u3 u2, max u1 u3, max (max (max u3 u1) u2) u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5) (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (AlgHom.algHomClass.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (AlgHom.mapMatrix.{max u3 u2, u1, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (CommSemiring.toSemiring.{u1} S _inst_4) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)) _inst_5 (MvPolynomial.aeval.{u2, u1, u3} R S (Prod.{u3, u3} m m) _inst_3 _inst_4 _inst_5 (fun (p : Prod.{u3, u3} m m) => A (Prod.fst.{u3, u3} m m p) (Prod.snd.{u3, u3} m m p)))) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) A
+<too large>
 Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_aeval Matrix.mvPolynomialX_mapMatrix_aevalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `alg_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_aeval [Fintype m] [DecidableEq m] [CommSemiring R] [CommSemiring S]
Diff
@@ -91,7 +91,7 @@ variable (R)
 lean 3 declaration is
   forall {m : Type.{u1}} (R : Type.{u2}) {S : Type.{u3}} [_inst_1 : Fintype.{u1} m] [_inst_2 : DecidableEq.{succ u1} m] [_inst_3 : CommSemiring.{u2} R] [_inst_4 : CommSemiring.{u3} S] [_inst_5 : Algebra.{u2, u3} R S _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4)] (A : Matrix.{u1, u1, u3} m m S), Eq.{succ (max u1 u3)} (Matrix.{u1, u1, u3} m m S) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (AlgHom.{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) (fun (_x : AlgHom.{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) => (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) -> (Matrix.{u1, u1, u3} m m S)) ([anonymous].{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) (AlgHom.mapMatrix.{max u1 u2, u3, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (CommSemiring.toSemiring.{u3} S _inst_4) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)) _inst_5 (MvPolynomial.aeval.{u2, u3, u1} R S (Prod.{u1, u1} m m) _inst_3 _inst_4 _inst_5 (fun (p : Prod.{u1, u1} m m) => A (Prod.fst.{u1, u1} m m p) (Prod.snd.{u1, u1} m m p)))) (Matrix.mvPolynomialX.{u1, u1, u2} m m R _inst_3)) A
 but is expected to have type
-  forall {m : Type.{u3}} (R : Type.{u2}) {S : Type.{u1}} [_inst_1 : Fintype.{u3} m] [_inst_2 : DecidableEq.{succ u3} m] [_inst_3 : CommSemiring.{u2} R] [_inst_4 : CommSemiring.{u1} S] [_inst_5 : Algebra.{u2, u1} R S _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4)] (A : Matrix.{u3, u3, u1} m m S), Eq.{max (succ u3) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) (FunLike.coe.{max (max (max (succ u3) (succ u1)) (succ u2)) (succ u3), max (succ u3) (succ u2), max (succ u1) (succ u3)} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (fun (_x : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) _x) (SMulHomClass.toFunLike.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (SMulZeroClass.toSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toZero.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toAddZeroClass.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)))))))) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toZero.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toAddZeroClass.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (DistribMulActionHomClass.toSMulHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u3 u2, max u1 u3, max (max (max u3 u1) u2) u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5) (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (AlgHom.algHomClass.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (AlgHom.mapMatrix.{max u3 u2, u1, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (CommSemiring.toSemiring.{u1} S _inst_4) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)) _inst_5 (MvPolynomial.aeval.{u2, u1, u3} R S (Prod.{u3, u3} m m) _inst_3 _inst_4 _inst_5 (fun (p : Prod.{u3, u3} m m) => A (Prod.fst.{u3, u3} m m p) (Prod.snd.{u3, u3} m m p)))) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) A
+  forall {m : Type.{u3}} (R : Type.{u2}) {S : Type.{u1}} [_inst_1 : Fintype.{u3} m] [_inst_2 : DecidableEq.{succ u3} m] [_inst_3 : CommSemiring.{u2} R] [_inst_4 : CommSemiring.{u1} S] [_inst_5 : Algebra.{u2, u1} R S _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4)] (A : Matrix.{u3, u3, u1} m m S), Eq.{max (succ u3) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) (FunLike.coe.{max (max (max (succ u3) (succ u1)) (succ u2)) (succ u3), max (succ u3) (succ u2), max (succ u1) (succ u3)} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (fun (_x : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) _x) (SMulHomClass.toFunLike.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (SMulZeroClass.toSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toZero.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toAddZeroClass.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)))))))) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toZero.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toAddZeroClass.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (DistribMulActionHomClass.toSMulHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u3 u2, max u1 u3, max (max (max u3 u1) u2) u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5) (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (AlgHom.algHomClass.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (AlgHom.mapMatrix.{max u3 u2, u1, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (CommSemiring.toSemiring.{u1} S _inst_4) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)) _inst_5 (MvPolynomial.aeval.{u2, u1, u3} R S (Prod.{u3, u3} m m) _inst_3 _inst_4 _inst_5 (fun (p : Prod.{u3, u3} m m) => A (Prod.fst.{u3, u3} m m p) (Prod.snd.{u3, u3} m m p)))) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) A
 Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_aeval Matrix.mvPolynomialX_mapMatrix_aevalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `alg_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_aeval [Fintype m] [DecidableEq m] [CommSemiring R] [CommSemiring S]
Diff
@@ -76,7 +76,7 @@ theorem mvPolynomialX_map_eval₂ [CommSemiring R] [CommSemiring S] (f : R →+*
 lean 3 declaration is
   forall {m : Type.{u1}} {R : Type.{u2}} [_inst_1 : Fintype.{u1} m] [_inst_2 : DecidableEq.{succ u1} m] [_inst_3 : CommSemiring.{u2} R] (A : Matrix.{u1, u1, u2} m m R), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} m m R) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (RingHom.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (fun (_x : RingHom.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) => (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) -> (Matrix.{u1, u1, u2} m m R)) (RingHom.hasCoeToFun.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (RingHom.mapMatrix.{max u1 u2, u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) R _inst_1 (fun (a : m) (b : m) => _inst_2 a b) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) (MvPolynomial.eval.{u2, u1} R (Prod.{u1, u1} m m) _inst_3 (fun (p : Prod.{u1, u1} m m) => A (Prod.fst.{u1, u1} m m p) (Prod.snd.{u1, u1} m m p)))) (Matrix.mvPolynomialX.{u1, u1, u2} m m R _inst_3)) A
 but is expected to have type
-  forall {m : Type.{u2}} {R : Type.{u1}} [_inst_1 : Fintype.{u2} m] [_inst_2 : DecidableEq.{succ u2} m] [_inst_3 : CommSemiring.{u1} R] (A : Matrix.{u2, u2, u1} m m R), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u1) (succ u2)} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (fun (_x : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (RingHom.instRingHomClassRingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (RingHom.mapMatrix.{max u2 u1, u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) R _inst_1 (fun (a : m) (b : m) => _inst_2 a b) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (MvPolynomial.eval.{u1, u2} R (Prod.{u2, u2} m m) _inst_3 (fun (p : Prod.{u2, u2} m m) => A (Prod.fst.{u2, u2} m m p) (Prod.snd.{u2, u2} m m p)))) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) A
+  forall {m : Type.{u2}} {R : Type.{u1}} [_inst_1 : Fintype.{u2} m] [_inst_2 : DecidableEq.{succ u2} m] [_inst_3 : CommSemiring.{u1} R] (A : Matrix.{u2, u2, u1} m m R), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u1) (succ u2)} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (fun (_x : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (RingHom.instRingHomClassRingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (RingHom.mapMatrix.{max u2 u1, u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) R _inst_1 (fun (a : m) (b : m) => _inst_2 a b) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (MvPolynomial.eval.{u1, u2} R (Prod.{u2, u2} m m) _inst_3 (fun (p : Prod.{u2, u2} m m) => A (Prod.fst.{u2, u2} m m p) (Prod.snd.{u2, u2} m m p)))) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) A
 Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_eval Matrix.mvPolynomialX_mapMatrix_evalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `ring_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R]
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 
 ! This file was ported from Lean 3 source module linear_algebra.matrix.mv_polynomial
-! leanprover-community/mathlib commit 3e068ece210655b7b9a9477c3aff38a492400aa1
+! leanprover-community/mathlib commit 86d1873c01a723aba6788f0b9051ae3d23b4c1c3
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Data.MvPolynomial.CommRing
 /-!
 # Matrices of multivariate polynomials
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file, we prove results about matrices over an mv_polynomial ring.
 In particular, we provide `matrix.mv_polynomial_X` which associates every entry of a matrix with a
 unique variable.
Diff
@@ -31,11 +31,19 @@ namespace Matrix
 
 variable (m n R)
 
+#print Matrix.mvPolynomialX /-
 /-- The matrix with variable `X (i,j)` at location `(i,j)`. -/
 noncomputable def mvPolynomialX [CommSemiring R] : Matrix m n (MvPolynomial (m × n) R) :=
   of fun i j => MvPolynomial.X (i, j)
 #align matrix.mv_polynomial_X Matrix.mvPolynomialX
+-/
 
+/- warning: matrix.mv_polynomial_X_apply -> Matrix.mvPolynomialX_apply is a dubious translation:
+lean 3 declaration is
+  forall (m : Type.{u1}) (n : Type.{u2}) (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] (i : m) (j : n), Eq.{max (succ (max u1 u2)) (succ u3)} (MvPolynomial.{max u1 u2, u3} (Prod.{u1, u2} m n) R _inst_1) (Matrix.mvPolynomialX.{u1, u2, u3} m n R _inst_1 i j) (MvPolynomial.X.{u3, max u1 u2} R (Prod.{u1, u2} m n) _inst_1 (Prod.mk.{u1, u2} m n i j))
+but is expected to have type
+  forall (m : Type.{u2}) (n : Type.{u1}) (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] (i : m) (j : n), Eq.{max (max (succ u2) (succ u1)) (succ u3)} (MvPolynomial.{max u1 u2, u3} (Prod.{u2, u1} m n) R _inst_1) (Matrix.mvPolynomialX.{u2, u1, u3} m n R _inst_1 i j) (MvPolynomial.X.{u3, max u1 u2} R (Prod.{u2, u1} m n) _inst_1 (Prod.mk.{u2, u1} m n i j))
+Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_apply Matrix.mvPolynomialX_applyₓ'. -/
 -- TODO: set as an equation lemma for `mv_polynomial_X`, see mathlib4#3024
 @[simp]
 theorem mvPolynomialX_apply [CommSemiring R] (i j) :
@@ -45,6 +53,12 @@ theorem mvPolynomialX_apply [CommSemiring R] (i j) :
 
 variable {m n R S}
 
+/- warning: matrix.mv_polynomial_X_map_eval₂ -> Matrix.mvPolynomialX_map_eval₂ is a dubious translation:
+lean 3 declaration is
+  forall {m : Type.{u1}} {n : Type.{u2}} {R : Type.{u3}} {S : Type.{u4}} [_inst_1 : CommSemiring.{u3} R] [_inst_2 : CommSemiring.{u4} S] (f : RingHom.{u3, u4} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1)) (Semiring.toNonAssocSemiring.{u4} S (CommSemiring.toSemiring.{u4} S _inst_2))) (A : Matrix.{u1, u2, u4} m n S), Eq.{succ (max u1 u2 u4)} (Matrix.{u1, u2, u4} m n S) (Matrix.map.{max (max u1 u2) u3, u4, u1, u2} m n (MvPolynomial.{max u1 u2, u3} (Prod.{u1, u2} m n) R _inst_1) S (Matrix.mvPolynomialX.{u1, u2, u3} m n R _inst_1) (MvPolynomial.eval₂.{u3, u4, max u1 u2} R S (Prod.{u1, u2} m n) _inst_1 _inst_2 f (fun (p : Prod.{u1, u2} m n) => A (Prod.fst.{u1, u2} m n p) (Prod.snd.{u1, u2} m n p)))) A
+but is expected to have type
+  forall {m : Type.{u2}} {n : Type.{u1}} {R : Type.{u4}} {S : Type.{u3}} [_inst_1 : CommSemiring.{u4} R] [_inst_2 : CommSemiring.{u3} S] (f : RingHom.{u4, u3} R S (Semiring.toNonAssocSemiring.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_2))) (A : Matrix.{u2, u1, u3} m n S), Eq.{max (max (succ u2) (succ u1)) (succ u3)} (Matrix.{u2, u1, u3} m n S) (Matrix.map.{max (max u2 u1) u4, u3, u2, u1} m n (MvPolynomial.{max u1 u2, u4} (Prod.{u2, u1} m n) R _inst_1) S (Matrix.mvPolynomialX.{u2, u1, u4} m n R _inst_1) (MvPolynomial.eval₂.{u4, u3, max u2 u1} R S (Prod.{u2, u1} m n) _inst_1 _inst_2 f (fun (p : Prod.{u2, u1} m n) => A (Prod.fst.{u2, u1} m n p) (Prod.snd.{u2, u1} m n p)))) A
+Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_eval₂ Matrix.mvPolynomialX_map_eval₂ₓ'. -/
 /-- Any matrix `A` can be expressed as the evaluation of `matrix.mv_polynomial_X`.
 
 This is of particular use when `mv_polynomial (m × n) R` is an integral domain but `S` is
@@ -55,6 +69,12 @@ theorem mvPolynomialX_map_eval₂ [CommSemiring R] [CommSemiring S] (f : R →+*
   ext fun i j => MvPolynomial.eval₂_X _ (fun p : m × n => A p.1 p.2) (i, j)
 #align matrix.mv_polynomial_X_map_eval₂ Matrix.mvPolynomialX_map_eval₂
 
+/- warning: matrix.mv_polynomial_X_map_matrix_eval -> Matrix.mvPolynomialX_mapMatrix_eval is a dubious translation:
+lean 3 declaration is
+  forall {m : Type.{u1}} {R : Type.{u2}} [_inst_1 : Fintype.{u1} m] [_inst_2 : DecidableEq.{succ u1} m] [_inst_3 : CommSemiring.{u2} R] (A : Matrix.{u1, u1, u2} m m R), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} m m R) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (RingHom.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (fun (_x : RingHom.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) => (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) -> (Matrix.{u1, u1, u2} m m R)) (RingHom.hasCoeToFun.{max u1 u2, max u1 u2} (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u2} m m R) (Matrix.nonAssocSemiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u2, u1} m R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (RingHom.mapMatrix.{max u1 u2, u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) R _inst_1 (fun (a : m) (b : m) => _inst_2 a b) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3)) (MvPolynomial.eval.{u2, u1} R (Prod.{u1, u1} m m) _inst_3 (fun (p : Prod.{u1, u1} m m) => A (Prod.fst.{u1, u1} m m p) (Prod.snd.{u1, u1} m m p)))) (Matrix.mvPolynomialX.{u1, u1, u2} m m R _inst_3)) A
+but is expected to have type
+  forall {m : Type.{u2}} {R : Type.{u1}} [_inst_1 : Fintype.{u2} m] [_inst_2 : DecidableEq.{succ u2} m] [_inst_3 : CommSemiring.{u1} R] (A : Matrix.{u2, u2, u1} m m R), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u1) (succ u2)} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (fun (_x : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) => Matrix.{u2, u2, u1} m m R) _x) (MulHomClass.toFunLike.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, max u2 u1, max u1 u2} (RingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))) (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (RingHom.instRingHomClassRingHom.{max u2 u1, max u1 u2} (Matrix.{u2, u2, max u2 u1} m m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3)) (Matrix.{u2, u2, u1} m m R) (Matrix.nonAssocSemiring.{max u2 u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.nonAssocSemiring.{u1, u2} m R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (RingHom.mapMatrix.{max u2 u1, u1, u2} m (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) R _inst_1 (fun (a : m) (b : m) => _inst_2 a b) (Semiring.toNonAssocSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R _inst_3) (MvPolynomial.commSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (MvPolynomial.eval.{u1, u2} R (Prod.{u2, u2} m m) _inst_3 (fun (p : Prod.{u2, u2} m m) => A (Prod.fst.{u2, u2} m m p) (Prod.snd.{u2, u2} m m p)))) (Matrix.mvPolynomialX.{u2, u2, u1} m m R _inst_3)) A
+Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_eval Matrix.mvPolynomialX_mapMatrix_evalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `ring_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R]
     (A : Matrix m m R) :
@@ -64,6 +84,12 @@ theorem mvPolynomialX_mapMatrix_eval [Fintype m] [DecidableEq m] [CommSemiring R
 
 variable (R)
 
+/- warning: matrix.mv_polynomial_X_map_matrix_aeval -> Matrix.mvPolynomialX_mapMatrix_aeval is a dubious translation:
+lean 3 declaration is
+  forall {m : Type.{u1}} (R : Type.{u2}) {S : Type.{u3}} [_inst_1 : Fintype.{u1} m] [_inst_2 : DecidableEq.{succ u1} m] [_inst_3 : CommSemiring.{u2} R] [_inst_4 : CommSemiring.{u3} S] [_inst_5 : Algebra.{u2, u3} R S _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4)] (A : Matrix.{u1, u1, u3} m m S), Eq.{succ (max u1 u3)} (Matrix.{u1, u1, u3} m m S) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (AlgHom.{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) (fun (_x : AlgHom.{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) => (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) -> (Matrix.{u1, u1, u3} m m S)) ([anonymous].{u2, max u1 u2, max u1 u3} R (Matrix.{u1, u1, max u1 u2} m m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3)) (Matrix.{u1, u1, u3} m m S) _inst_3 (Matrix.semiring.{max u1 u2, u1} m (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u3, u1} m S (CommSemiring.toSemiring.{u3} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.algebra.{max u1 u2, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.algebra.{u3, u1, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u3} S _inst_4) _inst_5)) (AlgHom.mapMatrix.{max u1 u2, u3, u1, u2} m R (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u1} R (Prod.{u1, u1} m m) _inst_3)) (CommSemiring.toSemiring.{u3} S _inst_4) (MvPolynomial.algebra.{u2, u2, u1} R R (Prod.{u1, u1} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)) _inst_5 (MvPolynomial.aeval.{u2, u3, u1} R S (Prod.{u1, u1} m m) _inst_3 _inst_4 _inst_5 (fun (p : Prod.{u1, u1} m m) => A (Prod.fst.{u1, u1} m m p) (Prod.snd.{u1, u1} m m p)))) (Matrix.mvPolynomialX.{u1, u1, u2} m m R _inst_3)) A
+but is expected to have type
+  forall {m : Type.{u3}} (R : Type.{u2}) {S : Type.{u1}} [_inst_1 : Fintype.{u3} m] [_inst_2 : DecidableEq.{succ u3} m] [_inst_3 : CommSemiring.{u2} R] [_inst_4 : CommSemiring.{u1} S] [_inst_5 : Algebra.{u2, u1} R S _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4)] (A : Matrix.{u3, u3, u1} m m S), Eq.{max (succ u3) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) (FunLike.coe.{max (max (max (succ u3) (succ u1)) (succ u2)) (succ u3), max (succ u3) (succ u2), max (succ u1) (succ u3)} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (fun (_x : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) => Matrix.{u3, u3, u1} m m S) _x) (SMulHomClass.toFunLike.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (SMulZeroClass.toSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toZero.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddMonoid.toAddZeroClass.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)))))))) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toZero.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (AddMonoid.toAddZeroClass.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))))) (DistribMulAction.toDistribSMul.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (DistribMulActionHomClass.toSMulHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (AddCommMonoid.toAddMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max (max u3 u1) u2) u3, u2, max u3 u2, max u1 u3} (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)))) (Module.toDistribMulAction.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Semiring.toNonAssocSemiring.{max u3 u2} (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u3 u2} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))))) (Module.toDistribMulAction.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) (CommSemiring.toSemiring.{u2} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Semiring.toNonAssocSemiring.{max u1 u3} (Matrix.{u3, u3, u1} m m S) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b))))) (Algebra.toModule.{u2, max u1 u3} R (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u3 u2, max u1 u3, max (max (max u3 u1) u2) u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5) (AlgHom.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)) (AlgHom.algHomClass.{u2, max u3 u2, max u1 u3} R (Matrix.{u3, u3, max u3 u2} m m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3)) (Matrix.{u3, u3, u1} m m S) _inst_3 (Matrix.semiring.{max u3 u2, u3} m (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.semiring.{u1, u3} m S (CommSemiring.toSemiring.{u1} S _inst_4) _inst_1 (fun (a : m) (b : m) => _inst_2 a b)) (Matrix.instAlgebraMatrixSemiring.{max u3 u2, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3))) (Matrix.instAlgebraMatrixSemiring.{u1, u3, u2} m R S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{u1} S _inst_4) _inst_5)))))) (AlgHom.mapMatrix.{max u3 u2, u1, u3, u2} m R (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) S _inst_1 (fun (a : m) (b : m) => _inst_2 a b) _inst_3 (CommSemiring.toSemiring.{max u2 u3} (MvPolynomial.{u3, u2} (Prod.{u3, u3} m m) R _inst_3) (MvPolynomial.commSemiring.{u2, u3} R (Prod.{u3, u3} m m) _inst_3)) (CommSemiring.toSemiring.{u1} S _inst_4) (MvPolynomial.algebra.{u2, u2, u3} R R (Prod.{u3, u3} m m) _inst_3 _inst_3 (Algebra.id.{u2} R _inst_3)) _inst_5 (MvPolynomial.aeval.{u2, u1, u3} R S (Prod.{u3, u3} m m) _inst_3 _inst_4 _inst_5 (fun (p : Prod.{u3, u3} m m) => A (Prod.fst.{u3, u3} m m p) (Prod.snd.{u3, u3} m m p)))) (Matrix.mvPolynomialX.{u3, u3, u2} m m R _inst_3)) A
+Case conversion may be inaccurate. Consider using '#align matrix.mv_polynomial_X_map_matrix_aeval Matrix.mvPolynomialX_mapMatrix_aevalₓ'. -/
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `alg_hom` on the LHS. -/
 theorem mvPolynomialX_mapMatrix_aeval [Fintype m] [DecidableEq m] [CommSemiring R] [CommSemiring S]
     [Algebra R S] (A : Matrix m m S) :
@@ -73,6 +99,12 @@ theorem mvPolynomialX_mapMatrix_aeval [Fintype m] [DecidableEq m] [CommSemiring
 
 variable (m R)
 
+/- warning: matrix.det_mv_polynomial_X_ne_zero -> Matrix.det_mvPolynomialX_ne_zero is a dubious translation:
+lean 3 declaration is
+  forall (m : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} m] [_inst_2 : Fintype.{u1} m] [_inst_3 : CommRing.{u2} R] [_inst_4 : Nontrivial.{u2} R], Ne.{succ (max u1 u2)} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (Matrix.det.{max u1 u2, u1} m (fun (a : m) (b : m) => _inst_1 a b) _inst_2 (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (MvPolynomial.commRing.{u2, u1} R (Prod.{u1, u1} m m) _inst_3) (Matrix.mvPolynomialX.{u1, u1, u2} m m R (CommRing.toCommSemiring.{u2} R _inst_3))) (OfNat.ofNat.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) 0 (OfNat.mk.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) 0 (Zero.zero.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (MulZeroClass.toHasZero.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (NonUnitalNonAssocSemiring.toMulZeroClass.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (NonAssocRing.toNonUnitalNonAssocRing.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (Ring.toNonAssocRing.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (CommRing.toRing.{max u1 u2} (MvPolynomial.{u1, u2} (Prod.{u1, u1} m m) R (CommRing.toCommSemiring.{u2} R _inst_3)) (MvPolynomial.commRing.{u2, u1} R (Prod.{u1, u1} m m) _inst_3))))))))))
+but is expected to have type
+  forall (m : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} m] [_inst_2 : Fintype.{u2} m] [_inst_3 : CommRing.{u1} R] [_inst_4 : Nontrivial.{u1} R], Ne.{succ (max u2 u1)} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (Matrix.det.{max u2 u1, u2} m (fun (a : m) (b : m) => _inst_1 a b) _inst_2 (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3) (Matrix.mvPolynomialX.{u2, u2, u1} m m R (CommRing.toCommSemiring.{u1} R _inst_3))) (OfNat.ofNat.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) 0 (Zero.toOfNat0.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (CommMonoidWithZero.toZero.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (CommSemiring.toCommMonoidWithZero.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (CommRing.toCommSemiring.{max u2 u1} (MvPolynomial.{u2, u1} (Prod.{u2, u2} m m) R (CommRing.toCommSemiring.{u1} R _inst_3)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, u2} R (Prod.{u2, u2} m m) _inst_3))))))
+Case conversion may be inaccurate. Consider using '#align matrix.det_mv_polynomial_X_ne_zero Matrix.det_mvPolynomialX_ne_zeroₓ'. -/
 /-- In a nontrivial ring, `matrix.mv_polynomial_X m m R` has non-zero determinant. -/
 theorem det_mvPolynomialX_ne_zero [DecidableEq m] [Fintype m] [CommRing R] [Nontrivial R] :
     det (mvPolynomialX m m R) ≠ 0 := by
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 
 ! This file was ported from Lean 3 source module linear_algebra.matrix.mv_polynomial
-! leanprover-community/mathlib commit bdcb7310db0fbc0e55dc1897bea76448733b7810
+! leanprover-community/mathlib commit 3e068ece210655b7b9a9477c3aff38a492400aa1
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -32,11 +32,17 @@ namespace Matrix
 variable (m n R)
 
 /-- The matrix with variable `X (i,j)` at location `(i,j)`. -/
-@[simp]
-noncomputable def mvPolynomialX [CommSemiring R] : Matrix m n (MvPolynomial (m × n) R)
-  | i, j => MvPolynomial.X (i, j)
+noncomputable def mvPolynomialX [CommSemiring R] : Matrix m n (MvPolynomial (m × n) R) :=
+  of fun i j => MvPolynomial.X (i, j)
 #align matrix.mv_polynomial_X Matrix.mvPolynomialX
 
+-- TODO: set as an equation lemma for `mv_polynomial_X`, see mathlib4#3024
+@[simp]
+theorem mvPolynomialX_apply [CommSemiring R] (i j) :
+    mvPolynomialX m n R i j = MvPolynomial.X (i, j) :=
+  rfl
+#align matrix.mv_polynomial_X_apply Matrix.mvPolynomialX_apply
+
 variable {m n R S}
 
 /-- Any matrix `A` can be expressed as the evaluation of `matrix.mv_polynomial_X`.
Diff
@@ -34,7 +34,7 @@ variable (m n R)
 /-- The matrix with variable `X (i,j)` at location `(i,j)`. -/
 @[simp]
 noncomputable def mvPolynomialX [CommSemiring R] : Matrix m n (MvPolynomial (m × n) R)
-  | i, j => MvPolynomial.x (i, j)
+  | i, j => MvPolynomial.X (i, j)
 #align matrix.mv_polynomial_X Matrix.mvPolynomialX
 
 variable {m n R S}
@@ -46,7 +46,7 @@ not, as if the `mv_polynomial.eval₂` can be pulled to the outside of a goal, i
 under cancellative assumptions. -/
 theorem mvPolynomialX_map_eval₂ [CommSemiring R] [CommSemiring S] (f : R →+* S) (A : Matrix m n S) :
     (mvPolynomialX m n R).map (MvPolynomial.eval₂ f fun p : m × n => A p.1 p.2) = A :=
-  ext fun i j => MvPolynomial.eval₂_x _ (fun p : m × n => A p.1 p.2) (i, j)
+  ext fun i j => MvPolynomial.eval₂_X _ (fun p : m × n => A p.1 p.2) (i, j)
 #align matrix.mv_polynomial_X_map_eval₂ Matrix.mvPolynomialX_map_eval₂
 
 /-- A variant of `matrix.mv_polynomial_X_map_eval₂` with a bundled `ring_hom` on the LHS. -/

Changes in mathlib4

mathlib3
mathlib4
move(Polynomial): Move out of Data (#11751)

Polynomial and MvPolynomial are algebraic objects, hence should be under Algebra (or at least not under Data)

Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 -/
+import Mathlib.Algebra.MvPolynomial.Basic
+import Mathlib.Algebra.MvPolynomial.CommRing
 import Mathlib.LinearAlgebra.Matrix.Determinant
-import Mathlib.Data.MvPolynomial.Basic
-import Mathlib.Data.MvPolynomial.CommRing
 
 #align_import linear_algebra.matrix.mv_polynomial from "leanprover-community/mathlib"@"3e068ece210655b7b9a9477c3aff38a492400aa1"
 
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
@@ -23,7 +23,7 @@ matrix determinant, multivariate polynomial
 
 set_option linter.uppercaseLean3 false
 
-variable {m n R S : Type _}
+variable {m n R S : Type*}
 
 namespace Matrix
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module linear_algebra.matrix.mv_polynomial
-! leanprover-community/mathlib commit 3e068ece210655b7b9a9477c3aff38a492400aa1
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.LinearAlgebra.Matrix.Determinant
 import Mathlib.Data.MvPolynomial.Basic
 import Mathlib.Data.MvPolynomial.CommRing
 
+#align_import linear_algebra.matrix.mv_polynomial from "leanprover-community/mathlib"@"3e068ece210655b7b9a9477c3aff38a492400aa1"
+
 /-!
 # Matrices of multivariate polynomials
 
feat: port LinearAlgebra.Matrix.MvPolynomial (#3547)

Dependencies 8 + 533

534 files ported (98.5%)
222097 lines ported (98.6%)
Show graph

The unported dependencies are