data.polynomial.laurentMathlib.Data.Polynomial.Laurent

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -3,7 +3,7 @@ Copyright (c) 2022 Damiano Testa. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Damiano Testa
 -/
-import Data.Polynomial.AlgebraMap
+import Algebra.Polynomial.AlgebraMap
 import RingTheory.Localization.Basic
 
 #align_import data.polynomial.laurent from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
Diff
@@ -384,7 +384,7 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
   by_cases n0 : 0 ≤ n
   · lift n to ℕ using n0
     erw [comap_domain_single, to_finsupp_iso_symm_apply]
-    simp only [Int.coe_nat_nonneg, Int.toNat_coe_nat, if_true, to_finsupp_iso_apply,
+    simp only [Int.natCast_nonneg, Int.toNat_natCast, if_true, to_finsupp_iso_apply,
       to_finsupp_monomial]
   · lift -n to ℕ using (neg_pos.mpr (not_le.mp n0)).le with m
     rw [to_finsupp_iso_apply, to_finsupp_inj, if_neg n0]
@@ -405,7 +405,7 @@ theorem leftInverse_trunc_toLaurent :
   · exact fun f g hf hg => by simp only [hf, hg, _root_.map_add]
   ·
     exact fun n r => by
-      simp only [Polynomial.toLaurent_C_mul_T, trunc_C_mul_T, Int.coe_nat_nonneg, Int.toNat_coe_nat,
+      simp only [Polynomial.toLaurent_C_mul_T, trunc_C_mul_T, Int.natCast_nonneg, Int.toNat_natCast,
         if_true]
 #align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurent
 -/
Diff
@@ -550,10 +550,10 @@ theorem degree_zero : degree (0 : R[T;T⁻¹]) = ⊥ :=
 theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 :=
   by
   refine' ⟨fun h => _, fun h => by rw [h, degree_zero]⟩
-  rw [degree, Finset.max_eq_sup_withBot] at h 
+  rw [degree, Finset.max_eq_sup_withBot] at h
   ext n
   refine' not_not.mp fun f0 => _
-  simp_rw [Finset.sup_eq_bot_iff, Finsupp.mem_support_iff, Ne.def, WithBot.coe_ne_bot] at h 
+  simp_rw [Finset.sup_eq_bot_iff, Finsupp.mem_support_iff, Ne.def, WithBot.coe_ne_bot] at h
   exact h n f0
 #align laurent_polynomial.degree_eq_bot_iff LaurentPolynomial.degree_eq_bot_iff
 -/
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Damiano Testa. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Damiano Testa
 -/
-import Mathbin.Data.Polynomial.AlgebraMap
-import Mathbin.RingTheory.Localization.Basic
+import Data.Polynomial.AlgebraMap
+import RingTheory.Localization.Basic
 
 #align_import data.polynomial.laurent from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
 
Diff
@@ -287,8 +287,8 @@ theorem Polynomial.toLaurent_C_mul_X_pow (n : ℕ) (r : R) :
 instance invertibleT (n : ℤ) : Invertible (T n : R[T;T⁻¹])
     where
   invOf := T (-n)
-  invOf_mul_self := by rw [← T_add, add_left_neg, T_zero]
-  mul_invOf_self := by rw [← T_add, add_right_neg, T_zero]
+  invOf_hMul_self := by rw [← T_add, add_left_neg, T_zero]
+  hMul_invOf_self := by rw [← T_add, add_right_neg, T_zero]
 #align laurent_polynomial.invertible_T LaurentPolynomial.invertibleT
 -/
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Damiano Testa. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Damiano Testa
-
-! This file was ported from Lean 3 source module data.polynomial.laurent
-! leanprover-community/mathlib commit 2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Polynomial.AlgebraMap
 import Mathbin.RingTheory.Localization.Basic
 
+#align_import data.polynomial.laurent from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
+
 /-!  # Laurent polynomials
 
 > THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
Diff
@@ -94,7 +94,6 @@ abbrev LaurentPolynomial (R : Type _) [Semiring R] :=
 #align laurent_polynomial LaurentPolynomial
 -/
 
--- mathport name: «expr [T;T⁻¹]»
 local notation:9000 R "[T;T⁻¹]" => LaurentPolynomial R
 
 #print Polynomial.toLaurent /-
@@ -105,12 +104,14 @@ def Polynomial.toLaurent [Semiring R] : R[X] →+* R[T;T⁻¹] :=
 #align polynomial.to_laurent Polynomial.toLaurent
 -/
 
+#print Polynomial.toLaurent_apply /-
 /-- This is not a simp lemma, as it is usually preferable to use the lemmas about `C` and `X`
 instead. -/
 theorem Polynomial.toLaurent_apply [Semiring R] (p : R[X]) :
     p.toLaurent = p.toFinsupp.mapDomain coe :=
   rfl
 #align polynomial.to_laurent_apply Polynomial.toLaurent_apply
+-/
 
 #print Polynomial.toLaurentAlg /-
 /-- The `R`-algebra map, taking a polynomial with coefficients in `R` to a Laurent polynomial
@@ -122,10 +123,12 @@ def Polynomial.toLaurentAlg [CommSemiring R] : R[X] →ₐ[R] R[T;T⁻¹] :=
 #align polynomial.to_laurent_alg Polynomial.toLaurentAlg
 -/
 
+#print Polynomial.toLaurentAlg_apply /-
 @[simp]
 theorem Polynomial.toLaurentAlg_apply [CommSemiring R] (f : R[X]) : f.toLaurentAlg = f.toLaurent :=
   rfl
 #align polynomial.to_laurent_alg_apply Polynomial.toLaurentAlg_apply
+-/
 
 namespace LaurentPolynomial
 
@@ -133,9 +136,11 @@ section Semiring
 
 variable [Semiring R]
 
+#print LaurentPolynomial.single_zero_one_eq_one /-
 theorem single_zero_one_eq_one : (single 0 1 : R[T;T⁻¹]) = (1 : R[T;T⁻¹]) :=
   rfl
 #align laurent_polynomial.single_zero_one_eq_one LaurentPolynomial.single_zero_one_eq_one
+-/
 
 /-!  ### The functions `C` and `T`. -/
 
@@ -148,11 +153,14 @@ def C : R →+* R[T;T⁻¹] :=
 #align laurent_polynomial.C LaurentPolynomial.C
 -/
 
+#print LaurentPolynomial.algebraMap_apply /-
 theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
     algebraMap R (LaurentPolynomial A) r = C (algebraMap R A r) :=
   rfl
 #align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_apply
+-/
 
+#print LaurentPolynomial.C_eq_algebraMap /-
 /-- When we have `[comm_semiring R]`, the function `C` is the same as `algebra_map R R[T;T⁻¹]`.
 (But note that `C` is defined when `R` is not necessarily commutative, in which case
 `algebra_map` is not available.)
@@ -160,10 +168,13 @@ theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R
 theorem C_eq_algebraMap {R : Type _} [CommSemiring R] (r : R) : C r = algebraMap R R[T;T⁻¹] r :=
   rfl
 #align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMap
+-/
 
+#print LaurentPolynomial.single_eq_C /-
 theorem single_eq_C (r : R) : single 0 r = C r :=
   rfl
 #align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_C
+-/
 
 #print LaurentPolynomial.T /-
 /-- The function `n ↦ T ^ n`, implemented as a sequence `ℤ → R[T;T⁻¹]`.
@@ -194,10 +205,12 @@ theorem T_sub (m n : ℤ) : (T (m - n) : R[T;T⁻¹]) = T m * T (-n) := by rw [
 #align laurent_polynomial.T_sub LaurentPolynomial.T_sub
 -/
 
+#print LaurentPolynomial.T_pow /-
 @[simp]
 theorem T_pow (m : ℤ) (n : ℕ) : (T m ^ n : R[T;T⁻¹]) = T (n * m) := by
   rw [T, T, single_pow n, one_pow, nsmul_eq_mul]
 #align laurent_polynomial.T_pow LaurentPolynomial.T_pow
+-/
 
 #print LaurentPolynomial.mul_T_assoc /-
 /-- The `simp` version of `mul_assoc`, in the presence of `T`'s. -/
@@ -207,11 +220,14 @@ theorem mul_T_assoc (f : R[T;T⁻¹]) (m n : ℤ) : f * T m * T n = f * T (m + n
 #align laurent_polynomial.mul_T_assoc LaurentPolynomial.mul_T_assoc
 -/
 
+#print LaurentPolynomial.single_eq_C_mul_T /-
 @[simp]
 theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r * T n : R[T;T⁻¹]) := by
   convert single_mul_single.symm <;> simp
 #align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_C_mul_T
+-/
 
+#print Polynomial.toLaurent_C_mul_T /-
 -- This lemma locks in the right changes and is what Lean proved directly.
 -- The actual `simp`-normal form of a Laurent monomial is `C a * T n`, whenever it can be reached.
 @[simp]
@@ -220,42 +236,55 @@ theorem Polynomial.toLaurent_C_mul_T (n : ℕ) (r : R) :
   show mapDomain coe (monomial n r).toFinsupp = (C r * T n : R[T;T⁻¹]) by
     rw [to_finsupp_monomial, map_domain_single, single_eq_C_mul_T]
 #align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_T
+-/
 
+#print Polynomial.toLaurent_C /-
 @[simp]
 theorem Polynomial.toLaurent_C (r : R) : (Polynomial.C r).toLaurent = C r :=
   by
   convert Polynomial.toLaurent_C_mul_T 0 r
   simp only [Int.ofNat_zero, T_zero, mul_one]
 #align polynomial.to_laurent_C Polynomial.toLaurent_C
+-/
 
+#print Polynomial.toLaurent_X /-
 @[simp]
 theorem Polynomial.toLaurent_X : (Polynomial.X.toLaurent : R[T;T⁻¹]) = T 1 :=
   by
   have : (Polynomial.X : R[X]) = monomial 1 1 := by simp [← C_mul_X_pow_eq_monomial]
   simp [this, Polynomial.toLaurent_C_mul_T]
 #align polynomial.to_laurent_X Polynomial.toLaurent_X
+-/
 
+#print Polynomial.toLaurent_one /-
 @[simp]
 theorem Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) 1 = 1 :=
   map_one Polynomial.toLaurent
 #align polynomial.to_laurent_one Polynomial.toLaurent_one
+-/
 
+#print Polynomial.toLaurent_C_mul_eq /-
 @[simp]
 theorem Polynomial.toLaurent_C_mul_eq (r : R) (f : R[X]) :
     (Polynomial.C r * f).toLaurent = C r * f.toLaurent := by
   simp only [_root_.map_mul, Polynomial.toLaurent_C]
 #align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eq
+-/
 
+#print Polynomial.toLaurent_X_pow /-
 @[simp]
 theorem Polynomial.toLaurent_X_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = T n := by
   simp only [map_pow, Polynomial.toLaurent_X, T_pow, mul_one]
 #align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_pow
+-/
 
+#print Polynomial.toLaurent_C_mul_X_pow /-
 @[simp]
 theorem Polynomial.toLaurent_C_mul_X_pow (n : ℕ) (r : R) :
     (Polynomial.C r * X ^ n).toLaurent = C r * T n := by
   simp only [_root_.map_mul, Polynomial.toLaurent_C, Polynomial.toLaurent_X_pow]
 #align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_C_mul_X_pow
+-/
 
 #print LaurentPolynomial.invertibleT /-
 instance invertibleT (n : ℤ) : Invertible (T n : R[T;T⁻¹])
@@ -279,6 +308,7 @@ theorem isUnit_T (n : ℤ) : IsUnit (T n : R[T;T⁻¹]) :=
 #align laurent_polynomial.is_unit_T LaurentPolynomial.isUnit_T
 -/
 
+#print LaurentPolynomial.induction_on /-
 @[elab_as_elim]
 protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C : ∀ a, M (C a))
     (h_add : ∀ {p q}, M p → M q → M (p + q))
@@ -304,7 +334,9 @@ protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C
   · rfl
   · exact finsupp.not_mem_support_iff.mp h
 #align laurent_polynomial.induction_on LaurentPolynomial.induction_on
+-/
 
+#print LaurentPolynomial.induction_on' /-
 /-- To prove something about Laurent polynomials, it suffices to show that
 * the condition is closed under taking sums, and
 * it holds for monomials.
@@ -317,6 +349,7 @@ protected theorem induction_on' {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹])
   convert h_C_mul_T 0 a
   exact (mul_one _).symm
 #align laurent_polynomial.induction_on' LaurentPolynomial.induction_on'
+-/
 
 #print LaurentPolynomial.commute_T /-
 theorem commute_T (n : ℤ) (f : R[T;T⁻¹]) : Commute (T n) f :=
@@ -344,6 +377,7 @@ def trunc : R[T;T⁻¹] →+ R[X] :=
 #align laurent_polynomial.trunc LaurentPolynomial.trunc
 -/
 
+#print LaurentPolynomial.trunc_C_mul_T /-
 @[simp]
 theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
   by
@@ -363,7 +397,9 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
     simp only [coeff, comap_domain_apply, Int.ofNat_eq_coe, coeff_zero, single_apply_eq_zero, this,
       IsEmpty.forall_iff]
 #align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_T
+-/
 
+#print LaurentPolynomial.leftInverse_trunc_toLaurent /-
 @[simp]
 theorem leftInverse_trunc_toLaurent :
     Function.LeftInverse (trunc : R[T;T⁻¹] → R[X]) Polynomial.toLaurent :=
@@ -375,26 +411,36 @@ theorem leftInverse_trunc_toLaurent :
       simp only [Polynomial.toLaurent_C_mul_T, trunc_C_mul_T, Int.coe_nat_nonneg, Int.toNat_coe_nat,
         if_true]
 #align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurent
+-/
 
+#print Polynomial.trunc_toLaurent /-
 @[simp]
 theorem Polynomial.trunc_toLaurent (f : R[X]) : trunc f.toLaurent = f :=
   leftInverse_trunc_toLaurent _
 #align polynomial.trunc_to_laurent Polynomial.trunc_toLaurent
+-/
 
+#print Polynomial.toLaurent_injective /-
 theorem Polynomial.toLaurent_injective :
     Function.Injective (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) :=
   leftInverse_trunc_toLaurent.Injective
 #align polynomial.to_laurent_injective Polynomial.toLaurent_injective
+-/
 
+#print Polynomial.toLaurent_inj /-
 @[simp]
 theorem Polynomial.toLaurent_inj (f g : R[X]) : f.toLaurent = g.toLaurent ↔ f = g :=
   ⟨fun h => Polynomial.toLaurent_injective h, congr_arg _⟩
 #align polynomial.to_laurent_inj Polynomial.toLaurent_inj
+-/
 
+#print Polynomial.toLaurent_ne_zero /-
 theorem Polynomial.toLaurent_ne_zero {f : R[X]} : f ≠ 0 ↔ f.toLaurent ≠ 0 :=
   (map_ne_zero_iff _ Polynomial.toLaurent_injective).symm
 #align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zero
+-/
 
+#print LaurentPolynomial.exists_T_pow /-
 theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ) (f' : R[X]), f'.toLaurent = f * T n :=
   by
   apply f.induction_on' _ fun n a => _ <;> clear f
@@ -408,7 +454,9 @@ theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ) (f' : R[X]), f'.toLaurent
       simp only [Int.negSucc_eq, Polynomial.toLaurent_C, Int.ofNat_succ, mul_T_assoc, add_left_neg,
         T_zero, mul_one]
 #align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_T_pow
+-/
 
+#print LaurentPolynomial.induction_on_mul_T /-
 /-- This is a version of `exists_T_pow` stated as an induction principle. -/
 @[elab_as_elim]
 theorem induction_on_mul_T {Q : R[T;T⁻¹] → Prop} (f : R[T;T⁻¹])
@@ -419,7 +467,9 @@ theorem induction_on_mul_T {Q : R[T;T⁻¹] → Prop} (f : R[T;T⁻¹])
     mul_assoc, ← hf]
   exact Qf
 #align laurent_polynomial.induction_on_mul_T LaurentPolynomial.induction_on_mul_T
+-/
 
+#print LaurentPolynomial.reduce_to_polynomial_of_mul_T /-
 /-- Suppose that `Q` is a statement about Laurent polynomials such that
 * `Q` is true on *ordinary* polynomials;
 * `Q (f * T)` implies `Q f`;
@@ -433,19 +483,25 @@ theorem reduce_to_polynomial_of_mul_T (f : R[T;T⁻¹]) {Q : R[T;T⁻¹] → Pro
   · convert QT _ _
     simpa using hn
 #align laurent_polynomial.reduce_to_polynomial_of_mul_T LaurentPolynomial.reduce_to_polynomial_of_mul_T
+-/
 
 section Support
 
+#print LaurentPolynomial.support_C_mul_T /-
 theorem support_C_mul_T (a : R) (n : ℤ) : (C a * T n).support ⊆ {n} := by
   simpa only [← single_eq_C_mul_T] using support_single_subset
 #align laurent_polynomial.support_C_mul_T LaurentPolynomial.support_C_mul_T
+-/
 
+#print LaurentPolynomial.support_C_mul_T_of_ne_zero /-
 theorem support_C_mul_T_of_ne_zero {a : R} (a0 : a ≠ 0) (n : ℤ) : (C a * T n).support = {n} :=
   by
   rw [← single_eq_C_mul_T]
   exact support_single_ne_zero _ a0
 #align laurent_polynomial.support_C_mul_T_of_ne_zero LaurentPolynomial.support_C_mul_T_of_ne_zero
+-/
 
+#print LaurentPolynomial.toLaurent_support /-
 /-- The support of a polynomial `f` is a finset in `ℕ`.  The lemma `to_laurent_support f`
 shows that the support of `f.to_laurent` is the same finset, but viewed in `ℤ` under the natural
 inclusion `ℕ ↪ ℤ`. -/
@@ -470,6 +526,7 @@ theorem toLaurent_support (f : R[X]) : f.toLaurent.support = f.support.map Nat.c
     · rw [this]
       exact Disjoint.mono_left (support_C_mul_T _ _) (by simpa)
 #align laurent_polynomial.to_laurent_support LaurentPolynomial.toLaurent_support
+-/
 
 end Support
 
@@ -484,11 +541,14 @@ def degree (f : R[T;T⁻¹]) : WithBot ℤ :=
 #align laurent_polynomial.degree LaurentPolynomial.degree
 -/
 
+#print LaurentPolynomial.degree_zero /-
 @[simp]
 theorem degree_zero : degree (0 : R[T;T⁻¹]) = ⊥ :=
   rfl
 #align laurent_polynomial.degree_zero LaurentPolynomial.degree_zero
+-/
 
+#print LaurentPolynomial.degree_eq_bot_iff /-
 @[simp]
 theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 :=
   by
@@ -499,11 +559,13 @@ theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 :=
   simp_rw [Finset.sup_eq_bot_iff, Finsupp.mem_support_iff, Ne.def, WithBot.coe_ne_bot] at h 
   exact h n f0
 #align laurent_polynomial.degree_eq_bot_iff LaurentPolynomial.degree_eq_bot_iff
+-/
 
 section ExactDegrees
 
 open scoped Classical
 
+#print LaurentPolynomial.degree_C_mul_T /-
 @[simp]
 theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n :=
   by
@@ -513,12 +575,15 @@ theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n
   simp only [← single_eq_C_mul_T, single_eq_same, a0, Ne.def, not_false_iff, eq_self_iff_true,
     and_self_iff]
 #align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_C_mul_T
+-/
 
+#print LaurentPolynomial.degree_C_mul_T_ite /-
 theorem degree_C_mul_T_ite (n : ℤ) (a : R) : (C a * T n).degree = ite (a = 0) ⊥ n := by
   split_ifs with h h <;>
     simp only [h, map_zero, MulZeroClass.zero_mul, degree_zero, degree_C_mul_T, Ne.def,
       not_false_iff]
 #align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_C_mul_T_ite
+-/
 
 #print LaurentPolynomial.degree_T /-
 @[simp]
@@ -529,26 +594,32 @@ theorem degree_T [Nontrivial R] (n : ℤ) : (T n : R[T;T⁻¹]).degree = n :=
 #align laurent_polynomial.degree_T LaurentPolynomial.degree_T
 -/
 
+#print LaurentPolynomial.degree_C /-
 theorem degree_C {a : R} (a0 : a ≠ 0) : (C a).degree = 0 :=
   by
   rw [← mul_one (C a), ← T_zero]
   exact degree_C_mul_T 0 a a0
 #align laurent_polynomial.degree_C LaurentPolynomial.degree_C
+-/
 
+#print LaurentPolynomial.degree_C_ite /-
 theorem degree_C_ite (a : R) : (C a).degree = ite (a = 0) ⊥ 0 := by
   split_ifs with h h <;> simp only [h, map_zero, degree_zero, degree_C, Ne.def, not_false_iff]
 #align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_ite
+-/
 
 end ExactDegrees
 
 section DegreeBounds
 
+#print LaurentPolynomial.degree_C_mul_T_le /-
 theorem degree_C_mul_T_le (n : ℤ) (a : R) : (C a * T n).degree ≤ n :=
   by
   by_cases a0 : a = 0
   · simp only [a0, map_zero, MulZeroClass.zero_mul, degree_zero, bot_le]
   · exact (degree_C_mul_T n a a0).le
 #align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_le
+-/
 
 #print LaurentPolynomial.degree_T_le /-
 theorem degree_T_le (n : ℤ) : (T n : R[T;T⁻¹]).degree ≤ n :=
@@ -556,9 +627,11 @@ theorem degree_T_le (n : ℤ) : (T n : R[T;T⁻¹]).degree ≤ n :=
 #align laurent_polynomial.degree_T_le LaurentPolynomial.degree_T_le
 -/
 
+#print LaurentPolynomial.degree_C_le /-
 theorem degree_C_le (a : R) : (C a).degree ≤ 0 :=
   (le_of_eq (by rw [T_zero, mul_one])).trans (degree_C_mul_T_le 0 a)
 #align laurent_polynomial.degree_C_le LaurentPolynomial.degree_C_le
+-/
 
 end DegreeBounds
 
@@ -584,14 +657,18 @@ instance algebraPolynomial (R : Type _) [CommSemiring R] : Algebra R[X] R[T;T⁻
 #align laurent_polynomial.algebra_polynomial LaurentPolynomial.algebraPolynomial
 -/
 
+#print LaurentPolynomial.algebraMap_X_pow /-
 theorem algebraMap_X_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = T n :=
   Polynomial.toLaurent_X_pow n
 #align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_pow
+-/
 
+#print LaurentPolynomial.algebraMap_eq_toLaurent /-
 @[simp]
 theorem algebraMap_eq_toLaurent (f : R[X]) : algebraMap R[X] R[T;T⁻¹] f = f.toLaurent :=
   rfl
 #align laurent_polynomial.algebra_map_eq_to_laurent LaurentPolynomial.algebraMap_eq_toLaurent
+-/
 
 #print LaurentPolynomial.isLocalization /-
 theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T;T⁻¹] :=
Diff
@@ -395,7 +395,7 @@ theorem Polynomial.toLaurent_ne_zero {f : R[X]} : f ≠ 0 ↔ f.toLaurent ≠ 0
   (map_ne_zero_iff _ Polynomial.toLaurent_injective).symm
 #align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zero
 
-theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent = f * T n :=
+theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ) (f' : R[X]), f'.toLaurent = f * T n :=
   by
   apply f.induction_on' _ fun n a => _ <;> clear f
   · rintro f g ⟨m, fn, hf⟩ ⟨n, gn, hg⟩
@@ -493,10 +493,10 @@ theorem degree_zero : degree (0 : R[T;T⁻¹]) = ⊥ :=
 theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 :=
   by
   refine' ⟨fun h => _, fun h => by rw [h, degree_zero]⟩
-  rw [degree, Finset.max_eq_sup_withBot] at h
+  rw [degree, Finset.max_eq_sup_withBot] at h 
   ext n
   refine' not_not.mp fun f0 => _
-  simp_rw [Finset.sup_eq_bot_iff, Finsupp.mem_support_iff, Ne.def, WithBot.coe_ne_bot] at h
+  simp_rw [Finset.sup_eq_bot_iff, Finsupp.mem_support_iff, Ne.def, WithBot.coe_ne_bot] at h 
   exact h n f0
 #align laurent_polynomial.degree_eq_bot_iff LaurentPolynomial.degree_eq_bot_iff
 
Diff
@@ -122,12 +122,10 @@ def Polynomial.toLaurentAlg [CommSemiring R] : R[X] →ₐ[R] R[T;T⁻¹] :=
 #align polynomial.to_laurent_alg Polynomial.toLaurentAlg
 -/
 
-#print Polynomial.toLaurentAlg_apply /-
 @[simp]
 theorem Polynomial.toLaurentAlg_apply [CommSemiring R] (f : R[X]) : f.toLaurentAlg = f.toLaurent :=
   rfl
 #align polynomial.to_laurent_alg_apply Polynomial.toLaurentAlg_apply
--/
 
 namespace LaurentPolynomial
 
@@ -600,13 +598,13 @@ theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T
   { map_units := fun t => by
       cases' t with t ht
       rcases submonoid.mem_closure_singleton.mp ht with ⟨n, rfl⟩
-      simp only [is_unit_T n, [anonymous], algebra_map_eq_to_laurent, Polynomial.toLaurent_X_pow]
+      simp only [is_unit_T n, SetLike.coe_mk, algebra_map_eq_to_laurent, Polynomial.toLaurent_X_pow]
     surj := fun f =>
       by
       induction' f using LaurentPolynomial.induction_on_mul_T with f n
       have := (Submonoid.closure ({X} : Set R[X])).pow_mem Submonoid.mem_closure_singleton_self n
       refine' ⟨(f, ⟨_, this⟩), _⟩
-      simp only [[anonymous], algebra_map_eq_to_laurent, Polynomial.toLaurent_X_pow, mul_T_assoc,
+      simp only [SetLike.coe_mk, algebra_map_eq_to_laurent, Polynomial.toLaurent_X_pow, mul_T_assoc,
         add_left_neg, T_zero, mul_one]
     eq_iff_exists := fun f g =>
       by
Diff
@@ -77,7 +77,7 @@ Lots is missing!
 -/
 
 
-open Polynomial BigOperators
+open scoped Polynomial BigOperators
 
 open Polynomial AddMonoidAlgebra Finsupp
 
@@ -504,7 +504,7 @@ theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 :=
 
 section ExactDegrees
 
-open Classical
+open scoped Classical
 
 @[simp]
 theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n :=
@@ -552,9 +552,11 @@ theorem degree_C_mul_T_le (n : ℤ) (a : R) : (C a * T n).degree ≤ n :=
   · exact (degree_C_mul_T n a a0).le
 #align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_le
 
+#print LaurentPolynomial.degree_T_le /-
 theorem degree_T_le (n : ℤ) : (T n : R[T;T⁻¹]).degree ≤ n :=
   (le_of_eq (by rw [map_one, one_mul])).trans (degree_C_mul_T_le n (1 : R))
 #align laurent_polynomial.degree_T_le LaurentPolynomial.degree_T_le
+-/
 
 theorem degree_C_le (a : R) : (C a).degree ≤ 0 :=
   (le_of_eq (by rw [T_zero, mul_one])).trans (degree_C_mul_T_le 0 a)
Diff
@@ -105,12 +105,6 @@ def Polynomial.toLaurent [Semiring R] : R[X] →+* R[T;T⁻¹] :=
 #align polynomial.to_laurent Polynomial.toLaurent
 -/
 
-/- warning: polynomial.to_laurent_apply -> Polynomial.toLaurent_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (p : Polynomial.{u1} R _inst_1), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) p) (Finsupp.mapDomain.{0, 0, u1} Nat Int R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe)))) (Polynomial.toFinsupp.{u1} R _inst_1 p))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (p : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) p) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) p) (AddMonoidAlgebra.mapDomain.{u1, 0, 0} R Nat _inst_1 Int (Nat.cast.{0} Int instNatCastInt) (Polynomial.toFinsupp.{u1} R _inst_1 p))
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_apply Polynomial.toLaurent_applyₓ'. -/
 /-- This is not a simp lemma, as it is usually preferable to use the lemmas about `C` and `X`
 instead. -/
 theorem Polynomial.toLaurent_apply [Semiring R] (p : R[X]) :
@@ -141,12 +135,6 @@ section Semiring
 
 variable [Semiring R]
 
-/- warning: laurent_polynomial.single_zero_one_eq_one -> LaurentPolynomial.single_zero_one_eq_one is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (One.one.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 Int.hasZero))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R _inst_1)))) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_zero_one_eq_one LaurentPolynomial.single_zero_one_eq_oneₓ'. -/
 theorem single_zero_one_eq_one : (single 0 1 : R[T;T⁻¹]) = (1 : R[T;T⁻¹]) :=
   rfl
 #align laurent_polynomial.single_zero_one_eq_one LaurentPolynomial.single_zero_one_eq_one
@@ -162,17 +150,11 @@ def C : R →+* R[T;T⁻¹] :=
 #align laurent_polynomial.C LaurentPolynomial.C
 -/
 
-/- warning: laurent_polynomial.algebra_map_apply -> LaurentPolynomial.algebraMap_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_applyₓ'. -/
 theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
     algebraMap R (LaurentPolynomial A) r = C (algebraMap R A r) :=
   rfl
 #align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_apply
 
-/- warning: laurent_polynomial.C_eq_algebra_map -> LaurentPolynomial.C_eq_algebraMap is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMapₓ'. -/
 /-- When we have `[comm_semiring R]`, the function `C` is the same as `algebra_map R R[T;T⁻¹]`.
 (But note that `C` is defined when `R` is not necessarily commutative, in which case
 `algebra_map` is not available.)
@@ -181,12 +163,6 @@ theorem C_eq_algebraMap {R : Type _} [CommSemiring R] (r : R) : C r = algebraMap
   rfl
 #align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMap
 
-/- warning: laurent_polynomial.single_eq_C -> LaurentPolynomial.single_eq_C is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_Cₓ'. -/
 theorem single_eq_C (r : R) : single 0 r = C r :=
   rfl
 #align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_C
@@ -220,12 +196,6 @@ theorem T_sub (m n : ℤ) : (T (m - n) : R[T;T⁻¹]) = T m * T (-n) := by rw [
 #align laurent_polynomial.T_sub LaurentPolynomial.T_sub
 -/
 
-/- warning: laurent_polynomial.T_pow -> LaurentPolynomial.T_pow is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (m : Int) (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (LaurentPolynomial.{u1} R _inst_1) Nat (LaurentPolynomial.{u1} R _inst_1) (instHPow.{u1, 0} (LaurentPolynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.addMonoid))))) (LaurentPolynomial.T.{u1} R _inst_1 m) n) (LaurentPolynomial.T.{u1} R _inst_1 (HMul.hMul.{0, 0, 0} Int Int Int (instHMul.{0} Int Int.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n) m))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (m : Int) (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (LaurentPolynomial.{u1} R _inst_1) Nat (LaurentPolynomial.{u1} R _inst_1) (instHPow.{u1, 0} (LaurentPolynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))) (LaurentPolynomial.T.{u1} R _inst_1 m) n) (LaurentPolynomial.T.{u1} R _inst_1 (HMul.hMul.{0, 0, 0} Int Int Int (instHMul.{0} Int Int.instMulInt) (Nat.cast.{0} Int instNatCastInt n) m))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.T_pow LaurentPolynomial.T_powₓ'. -/
 @[simp]
 theorem T_pow (m : ℤ) (n : ℕ) : (T m ^ n : R[T;T⁻¹]) = T (n * m) := by
   rw [T, T, single_pow n, one_pow, nsmul_eq_mul]
@@ -239,20 +209,11 @@ theorem mul_T_assoc (f : R[T;T⁻¹]) (m n : ℤ) : f * T m * T n = f * T (m + n
 #align laurent_polynomial.mul_T_assoc LaurentPolynomial.mul_T_assoc
 -/
 
-/- warning: laurent_polynomial.single_eq_C_mul_T -> LaurentPolynomial.single_eq_C_mul_T is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (n : Int), Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) n r) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (n : Int), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) n r) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_C_mul_Tₓ'. -/
 @[simp]
 theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r * T n : R[T;T⁻¹]) := by
   convert single_mul_single.symm <;> simp
 #align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_C_mul_T
 
-/- warning: polynomial.to_laurent_C_mul_T -> Polynomial.toLaurent_C_mul_T is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_Tₓ'. -/
 -- This lemma locks in the right changes and is what Lean proved directly.
 -- The actual `simp`-normal form of a Laurent monomial is `C a * T n`, whenever it can be reached.
 @[simp]
@@ -262,9 +223,6 @@ theorem Polynomial.toLaurent_C_mul_T (n : ℕ) (r : R) :
     rw [to_finsupp_monomial, map_domain_single, single_eq_C_mul_T]
 #align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_T
 
-/- warning: polynomial.to_laurent_C -> Polynomial.toLaurent_C is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C Polynomial.toLaurent_Cₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C (r : R) : (Polynomial.C r).toLaurent = C r :=
   by
@@ -272,12 +230,6 @@ theorem Polynomial.toLaurent_C (r : R) : (Polynomial.C r).toLaurent = C r :=
   simp only [Int.ofNat_zero, T_zero, mul_one]
 #align polynomial.to_laurent_C Polynomial.toLaurent_C
 
-/- warning: polynomial.to_laurent_X -> Polynomial.toLaurent_X is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_X Polynomial.toLaurent_Xₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_X : (Polynomial.X.toLaurent : R[T;T⁻¹]) = T 1 :=
   by
@@ -285,40 +237,22 @@ theorem Polynomial.toLaurent_X : (Polynomial.X.toLaurent : R[T;T⁻¹]) = T 1 :=
   simp [this, Polynomial.toLaurent_C_mul_T]
 #align polynomial.to_laurent_X Polynomial.toLaurent_X
 
-/- warning: polynomial.to_laurent_one -> Polynomial.toLaurent_one is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 1 (One.one.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.hasOne.{u1} R _inst_1))))) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (One.one.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 Int.hasZero))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_one Polynomial.toLaurent_oneₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) 1 = 1 :=
   map_one Polynomial.toLaurent
 #align polynomial.to_laurent_one Polynomial.toLaurent_one
 
-/- warning: polynomial.to_laurent_C_mul_eq -> Polynomial.toLaurent_C_mul_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eqₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C_mul_eq (r : R) (f : R[X]) :
     (Polynomial.C r * f).toLaurent = C r * f.toLaurent := by
   simp only [_root_.map_mul, Polynomial.toLaurent_C]
 #align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eq
 
-/- warning: polynomial.to_laurent_X_pow -> Polynomial.toLaurent_X_pow is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n))
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_powₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_X_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = T n := by
   simp only [map_pow, Polynomial.toLaurent_X, T_pow, mul_one]
 #align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_pow
 
-/- warning: polynomial.to_laurent_C_mul_X_pow -> Polynomial.toLaurent_C_mul_X_pow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_C_mul_X_powₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C_mul_X_pow (n : ℕ) (r : R) :
     (Polynomial.C r * X ^ n).toLaurent = C r * T n := by
@@ -347,9 +281,6 @@ theorem isUnit_T (n : ℤ) : IsUnit (T n : R[T;T⁻¹]) :=
 #align laurent_polynomial.is_unit_T LaurentPolynomial.isUnit_T
 -/
 
-/- warning: laurent_polynomial.induction_on -> LaurentPolynomial.induction_on is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on LaurentPolynomial.induction_onₓ'. -/
 @[elab_as_elim]
 protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C : ∀ a, M (C a))
     (h_add : ∀ {p q}, M p → M q → M (p + q))
@@ -376,12 +307,6 @@ protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C
   · exact finsupp.not_mem_support_iff.mp h
 #align laurent_polynomial.induction_on LaurentPolynomial.induction_on
 
-/- warning: laurent_polynomial.induction_on' -> LaurentPolynomial.induction_on' is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (p : LaurentPolynomial.{u1} R _inst_1) (q : LaurentPolynomial.{u1} R _inst_1), (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toHasAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))) p q))) -> (forall (n : Int) (a : R), M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) -> (M p)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (p : LaurentPolynomial.{u1} R _inst_1) (q : LaurentPolynomial.{u1} R _inst_1), (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Int) (a : R), M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) -> (M p)
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on' LaurentPolynomial.induction_on'ₓ'. -/
 /-- To prove something about Laurent polynomials, it suffices to show that
 * the condition is closed under taking sums, and
 * it holds for monomials.
@@ -421,9 +346,6 @@ def trunc : R[T;T⁻¹] →+ R[X] :=
 #align laurent_polynomial.trunc LaurentPolynomial.trunc
 -/
 
-/- warning: laurent_polynomial.trunc_C_mul_T -> LaurentPolynomial.trunc_C_mul_T is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_Tₓ'. -/
 @[simp]
 theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
   by
@@ -444,9 +366,6 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
       IsEmpty.forall_iff]
 #align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_T
 
-/- warning: laurent_polynomial.left_inverse_trunc_to_laurent -> LaurentPolynomial.leftInverse_trunc_toLaurent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurentₓ'. -/
 @[simp]
 theorem leftInverse_trunc_toLaurent :
     Function.LeftInverse (trunc : R[T;T⁻¹] → R[X]) Polynomial.toLaurent :=
@@ -459,52 +378,25 @@ theorem leftInverse_trunc_toLaurent :
         if_true]
 #align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurent
 
-/- warning: polynomial.trunc_to_laurent -> Polynomial.trunc_toLaurent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align polynomial.trunc_to_laurent Polynomial.trunc_toLaurentₓ'. -/
 @[simp]
 theorem Polynomial.trunc_toLaurent (f : R[X]) : trunc f.toLaurent = f :=
   leftInverse_trunc_toLaurent _
 #align polynomial.trunc_to_laurent Polynomial.trunc_toLaurent
 
-/- warning: polynomial.to_laurent_injective -> Polynomial.toLaurent_injective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.Injective.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.Injective.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_injective Polynomial.toLaurent_injectiveₓ'. -/
 theorem Polynomial.toLaurent_injective :
     Function.Injective (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) :=
   leftInverse_trunc_toLaurent.Injective
 #align polynomial.to_laurent_injective Polynomial.toLaurent_injective
 
-/- warning: polynomial.to_laurent_inj -> Polynomial.toLaurent_inj is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1) (g : Polynomial.{u1} R _inst_1), Iff (Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) g)) (Eq.{succ u1} (Polynomial.{u1} R _inst_1) f g)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1) (g : Polynomial.{u1} R _inst_1), Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) g)) (Eq.{succ u1} (Polynomial.{u1} R _inst_1) f g)
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_inj Polynomial.toLaurent_injₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_inj (f g : R[X]) : f.toLaurent = g.toLaurent ↔ f = g :=
   ⟨fun h => Polynomial.toLaurent_injective h, congr_arg _⟩
 #align polynomial.to_laurent_inj Polynomial.toLaurent_inj
 
-/- warning: polynomial.to_laurent_ne_zero -> Polynomial.toLaurent_ne_zero is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : Polynomial.{u1} R _inst_1}, Iff (Ne.{succ u1} (Polynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1))))) (Ne.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (LaurentPolynomial.{u1} R _inst_1) (MulZeroClass.toHasZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : Polynomial.{u1} R _inst_1}, Iff (Ne.{succ u1} (Polynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))) (Ne.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))))
-Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zeroₓ'. -/
 theorem Polynomial.toLaurent_ne_zero {f : R[X]} : f ≠ 0 ↔ f.toLaurent ≠ 0 :=
   (map_ne_zero_iff _ Polynomial.toLaurent_injective).symm
 #align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zero
 
-/- warning: laurent_polynomial.exists_T_pow -> LaurentPolynomial.exists_T_pow is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1), Exists.{1} Nat (fun (n : Nat) => Exists.{succ u1} (Polynomial.{u1} R _inst_1) (fun (f' : Polynomial.{u1} R _inst_1) => Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f') (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) f (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1), Exists.{1} Nat (fun (n : Nat) => Exists.{succ u1} (Polynomial.{u1} R _inst_1) (fun (f' : Polynomial.{u1} R _inst_1) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f') (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_T_powₓ'. -/
 theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent = f * T n :=
   by
   apply f.induction_on' _ fun n a => _ <;> clear f
@@ -519,12 +411,6 @@ theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent
         T_zero, mul_one]
 #align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_T_pow
 
-/- warning: laurent_polynomial.induction_on_mul_T -> LaurentPolynomial.induction_on_mul_T is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (f : LaurentPolynomial.{u1} R _inst_1), (forall {f : Polynomial.{u1} R _inst_1} {n : Nat}, Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))) -> (Q f)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (f : LaurentPolynomial.{u1} R _inst_1), (forall {f : Polynomial.{u1} R _inst_1} {n : Nat}, Q (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (Q f)
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on_mul_T LaurentPolynomial.induction_on_mul_Tₓ'. -/
 /-- This is a version of `exists_T_pow` stated as an induction principle. -/
 @[elab_as_elim]
 theorem induction_on_mul_T {Q : R[T;T⁻¹] → Prop} (f : R[T;T⁻¹])
@@ -536,12 +422,6 @@ theorem induction_on_mul_T {Q : R[T;T⁻¹] → Prop} (f : R[T;T⁻¹])
   exact Qf
 #align laurent_polynomial.induction_on_mul_T LaurentPolynomial.induction_on_mul_T
 
-/- warning: laurent_polynomial.reduce_to_polynomial_of_mul_T -> LaurentPolynomial.reduce_to_polynomial_of_mul_T is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1) {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop}, (forall (f : Polynomial.{u1} R _inst_1), Q (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) -> (forall (f : LaurentPolynomial.{u1} R _inst_1), (Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) f (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))) -> (Q f)) -> (Q f)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1) {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop}, (forall (f : Polynomial.{u1} R _inst_1), Q (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) -> (forall (f : LaurentPolynomial.{u1} R _inst_1), (Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))) -> (Q f)) -> (Q f)
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.reduce_to_polynomial_of_mul_T LaurentPolynomial.reduce_to_polynomial_of_mul_Tₓ'. -/
 /-- Suppose that `Q` is a statement about Laurent polynomials such that
 * `Q` is true on *ordinary* polynomials;
 * `Q (f * T)` implies `Q f`;
@@ -558,34 +438,16 @@ theorem reduce_to_polynomial_of_mul_T (f : R[T;T⁻¹]) {Q : R[T;T⁻¹] → Pro
 
 section Support
 
-/- warning: laurent_polynomial.support_C_mul_T -> LaurentPolynomial.support_C_mul_T is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R) (n : Int), HasSubset.Subset.{0} (Finset.{0} Int) (Finset.hasSubset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.hasSingleton.{0} Int) n)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R) (n : Int), HasSubset.Subset.{0} (Finset.{0} Int) (Finset.instHasSubsetFinset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n)
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.support_C_mul_T LaurentPolynomial.support_C_mul_Tₓ'. -/
 theorem support_C_mul_T (a : R) (n : ℤ) : (C a * T n).support ⊆ {n} := by
   simpa only [← single_eq_C_mul_T] using support_single_subset
 #align laurent_polynomial.support_C_mul_T LaurentPolynomial.support_C_mul_T
 
-/- warning: laurent_polynomial.support_C_mul_T_of_ne_zero -> LaurentPolynomial.support_C_mul_T_of_ne_zero is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (n : Int), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.hasSingleton.{0} Int) n))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (forall (n : Int), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.support_C_mul_T_of_ne_zero LaurentPolynomial.support_C_mul_T_of_ne_zeroₓ'. -/
 theorem support_C_mul_T_of_ne_zero {a : R} (a0 : a ≠ 0) (n : ℤ) : (C a * T n).support = {n} :=
   by
   rw [← single_eq_C_mul_T]
   exact support_single_ne_zero _ a0
 #align laurent_polynomial.support_C_mul_T_of_ne_zero LaurentPolynomial.support_C_mul_T_of_ne_zero
 
-/- warning: laurent_polynomial.to_laurent_support -> LaurentPolynomial.toLaurent_support is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (Finset.map.{0, 0} Nat Int (Nat.castEmbedding.{0} Int (AddGroupWithOne.toAddMonoidWithOne.{0} Int (AddCommGroupWithOne.toAddGroupWithOne.{0} Int (Ring.toAddCommGroupWithOne.{0} Int Int.ring))) (StrictOrderedSemiring.to_charZero.{0} Int (StrictOrderedRing.toStrictOrderedSemiring.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Polynomial.support.{u1} R _inst_1 f))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (Finset.map.{0, 0} Nat Int (Nat.castEmbedding.{0} Int (AddGroupWithOne.toAddMonoidWithOne.{0} Int (Ring.toAddGroupWithOne.{0} Int Int.instRingInt)) (StrictOrderedSemiring.to_charZero.{0} Int (LinearOrderedSemiring.toStrictOrderedSemiring.{0} Int (LinearOrderedCommSemiring.toLinearOrderedSemiring.{0} Int (LinearOrderedCommRing.toLinearOrderedCommSemiring.{0} Int Int.linearOrderedCommRing))))) (Polynomial.support.{u1} R _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.to_laurent_support LaurentPolynomial.toLaurent_supportₓ'. -/
 /-- The support of a polynomial `f` is a finset in `ℕ`.  The lemma `to_laurent_support f`
 shows that the support of `f.to_laurent` is the same finset, but viewed in `ℤ` under the natural
 inclusion `ℕ ↪ ℤ`. -/
@@ -624,23 +486,11 @@ def degree (f : R[T;T⁻¹]) : WithBot ℤ :=
 #align laurent_polynomial.degree LaurentPolynomial.degree
 -/
 
-/- warning: laurent_polynomial.degree_zero -> LaurentPolynomial.degree_zero is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (LaurentPolynomial.{u1} R _inst_1) (MulZeroClass.toHasZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_zero LaurentPolynomial.degree_zeroₓ'. -/
 @[simp]
 theorem degree_zero : degree (0 : R[T;T⁻¹]) = ⊥ :=
   rfl
 #align laurent_polynomial.degree_zero LaurentPolynomial.degree_zero
 
-/- warning: laurent_polynomial.degree_eq_bot_iff -> LaurentPolynomial.degree_eq_bot_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : LaurentPolynomial.{u1} R _inst_1}, Iff (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 f) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int))) (Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (LaurentPolynomial.{u1} R _inst_1) (MulZeroClass.toHasZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : LaurentPolynomial.{u1} R _inst_1}, Iff (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 f) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int))) (Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_eq_bot_iff LaurentPolynomial.degree_eq_bot_iffₓ'. -/
 @[simp]
 theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 :=
   by
@@ -656,12 +506,6 @@ section ExactDegrees
 
 open Classical
 
-/- warning: laurent_polynomial.degree_C_mul_T -> LaurentPolynomial.degree_C_mul_T is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_C_mul_Tₓ'. -/
 @[simp]
 theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n :=
   by
@@ -672,12 +516,6 @@ theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n
     and_self_iff]
 #align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_C_mul_T
 
-/- warning: laurent_polynomial.degree_C_mul_T_ite -> LaurentPolynomial.degree_C_mul_T_ite is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (WithBot.some.{0} Int n))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_C_mul_T_iteₓ'. -/
 theorem degree_C_mul_T_ite (n : ℤ) (a : R) : (C a * T n).degree = ite (a = 0) ⊥ n := by
   split_ifs with h h <;>
     simp only [h, map_zero, MulZeroClass.zero_mul, degree_zero, degree_C_mul_T, Ne.def,
@@ -693,24 +531,12 @@ theorem degree_T [Nontrivial R] (n : ℤ) : (T n : R[T;T⁻¹]).degree = n :=
 #align laurent_polynomial.degree_T LaurentPolynomial.degree_T
 -/
 
-/- warning: laurent_polynomial.degree_C -> LaurentPolynomial.degree_C is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero)))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C LaurentPolynomial.degree_Cₓ'. -/
 theorem degree_C {a : R} (a0 : a ≠ 0) : (C a).degree = 0 :=
   by
   rw [← mul_one (C a), ← T_zero]
   exact degree_C_mul_T 0 a a0
 #align laurent_polynomial.degree_C LaurentPolynomial.degree_C
 
-/- warning: laurent_polynomial.degree_C_ite -> LaurentPolynomial.degree_C_ite is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero)))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_iteₓ'. -/
 theorem degree_C_ite (a : R) : (C a).degree = ite (a = 0) ⊥ 0 := by
   split_ifs with h h <;> simp only [h, map_zero, degree_zero, degree_C, Ne.def, not_false_iff]
 #align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_ite
@@ -719,12 +545,6 @@ end ExactDegrees
 
 section DegreeBounds
 
-/- warning: laurent_polynomial.degree_C_mul_T_le -> LaurentPolynomial.degree_C_mul_T_le is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n)
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_leₓ'. -/
 theorem degree_C_mul_T_le (n : ℤ) (a : R) : (C a * T n).degree ≤ n :=
   by
   by_cases a0 : a = 0
@@ -732,22 +552,10 @@ theorem degree_C_mul_T_le (n : ℤ) (a : R) : (C a * T n).degree ≤ n :=
   · exact (degree_C_mul_T n a a0).le
 #align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_le
 
-/- warning: laurent_polynomial.degree_T_le -> LaurentPolynomial.degree_T_le is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (LaurentPolynomial.T.{u1} R _inst_1 n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (LaurentPolynomial.T.{u1} R _inst_1 n)) (WithBot.some.{0} Int n)
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_T_le LaurentPolynomial.degree_T_leₓ'. -/
 theorem degree_T_le (n : ℤ) : (T n : R[T;T⁻¹]).degree ≤ n :=
   (le_of_eq (by rw [map_one, one_mul])).trans (degree_C_mul_T_le n (1 : R))
 #align laurent_polynomial.degree_T_le LaurentPolynomial.degree_T_le
 
-/- warning: laurent_polynomial.degree_C_le -> LaurentPolynomial.degree_C_le is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_le LaurentPolynomial.degree_C_leₓ'. -/
 theorem degree_C_le (a : R) : (C a).degree ≤ 0 :=
   (le_of_eq (by rw [T_zero, mul_one])).trans (degree_C_mul_T_le 0 a)
 #align laurent_polynomial.degree_C_le LaurentPolynomial.degree_C_le
@@ -776,16 +584,10 @@ instance algebraPolynomial (R : Type _) [CommSemiring R] : Algebra R[X] R[T;T⁻
 #align laurent_polynomial.algebra_polynomial LaurentPolynomial.algebraPolynomial
 -/
 
-/- warning: laurent_polynomial.algebra_map_X_pow -> LaurentPolynomial.algebraMap_X_pow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_powₓ'. -/
 theorem algebraMap_X_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = T n :=
   Polynomial.toLaurent_X_pow n
 #align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_pow
 
-/- warning: laurent_polynomial.algebra_map_eq_to_laurent -> LaurentPolynomial.algebraMap_eq_toLaurent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_eq_to_laurent LaurentPolynomial.algebraMap_eq_toLaurentₓ'. -/
 @[simp]
 theorem algebraMap_eq_toLaurent (f : R[X]) : algebraMap R[X] R[T;T⁻¹] f = f.toLaurent :=
   rfl
Diff
@@ -210,9 +210,7 @@ theorem T_zero : (T 0 : R[T;T⁻¹]) = 1 :=
 -/
 
 #print LaurentPolynomial.T_add /-
-theorem T_add (m n : ℤ) : (T (m + n) : R[T;T⁻¹]) = T m * T n :=
-  by
-  convert single_mul_single.symm
+theorem T_add (m n : ℤ) : (T (m + n) : R[T;T⁻¹]) = T m * T n := by convert single_mul_single.symm;
   simp [T]
 #align laurent_polynomial.T_add LaurentPolynomial.T_add
 -/
@@ -368,11 +366,8 @@ protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C
   have B : ∀ s : Finset ℤ, M (s.Sum fun n : ℤ => C (p.to_fun n) * T n) :=
     by
     apply Finset.induction
-    · convert h_C 0
-      simp only [Finset.sum_empty, _root_.map_zero]
-    · intro n s ns ih
-      rw [Finset.sum_insert ns]
-      exact h_add A ih
+    · convert h_C 0; simp only [Finset.sum_empty, _root_.map_zero]
+    · intro n s ns ih; rw [Finset.sum_insert ns]; exact h_add A ih
   convert B p.support
   ext a
   simp_rw [← single_eq_C_mul_T, Finset.sum_apply', single_apply, Finset.sum_ite_eq']
Diff
@@ -163,10 +163,7 @@ def C : R →+* R[T;T⁻¹] :=
 -/
 
 /- warning: laurent_polynomial.algebra_map_apply -> LaurentPolynomial.algebraMap_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} A] [_inst_4 : Algebra.{u1, u2} R A _inst_2 _inst_3] (r : R), Eq.{succ u2} (LaurentPolynomial.{u2} A _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) (fun (_x : RingHom.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) => R -> (LaurentPolynomial.{u2} A _inst_3)) (RingHom.hasCoeToFun.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) (algebraMap.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) _inst_2 (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid) (AddMonoidAlgebra.algebra.{u2, 0, u1} A Int R _inst_2 _inst_3 _inst_4 Int.addMonoid)) r) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => A -> (LaurentPolynomial.{u2} A _inst_3)) (RingHom.hasCoeToFun.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u2} A _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) (fun (_x : RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) => R -> A) (RingHom.hasCoeToFun.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) (algebraMap.{u1, u2} R A _inst_2 _inst_3 _inst_4) r))
-but is expected to have type
-  forall {R : Type.{u2}} {A : Type.{u1}} [_inst_2 : CommSemiring.{u2} R] [_inst_3 : Semiring.{u1} A] [_inst_4 : Algebra.{u2, u1} R A _inst_2 _inst_3] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} A _inst_3) r) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} A _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))))) (algebraMap.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u2} A Int R _inst_2 _inst_3 _inst_4 Int.instAddMonoidInt)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) => LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3))))) (algebraMap.{u2, u1} R A _inst_2 _inst_3 _inst_4) r))
+<too large>
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_applyₓ'. -/
 theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
     algebraMap R (LaurentPolynomial A) r = C (algebraMap R A r) :=
@@ -174,10 +171,7 @@ theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R
 #align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_apply
 
 /- warning: laurent_polynomial.C_eq_algebra_map -> LaurentPolynomial.C_eq_algebraMap is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) (algebraMap.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid) (AddMonoidAlgebra.algebra.{u1, 0, u1} R Int R _inst_2 (CommSemiring.toSemiring.{u1} R _inst_2) (Algebra.id.{u1} R _inst_2) Int.addMonoid)) r)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u1} R Int R _inst_2 (CommSemiring.toSemiring.{u1} R _inst_2) (Algebra.id.{u1} R _inst_2) Int.instAddMonoidInt)) r)
+<too large>
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMapₓ'. -/
 /-- When we have `[comm_semiring R]`, the function `C` is the same as `algebra_map R R[T;T⁻¹]`.
 (But note that `C` is defined when `R` is not necessarily commutative, in which case
@@ -259,10 +253,7 @@ theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r
 #align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_C_mul_T
 
 /- warning: polynomial.to_laurent_C_mul_T -> Polynomial.toLaurent_C_mul_T is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_Tₓ'. -/
 -- This lemma locks in the right changes and is what Lean proved directly.
 -- The actual `simp`-normal form of a Laurent monomial is `C a * T n`, whenever it can be reached.
@@ -274,10 +265,7 @@ theorem Polynomial.toLaurent_C_mul_T (n : ℕ) (r : R) :
 #align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_T
 
 /- warning: polynomial.to_laurent_C -> Polynomial.toLaurent_C is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
+<too large>
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C Polynomial.toLaurent_Cₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C (r : R) : (Polynomial.C r).toLaurent = C r :=
@@ -311,10 +299,7 @@ theorem Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹])
 #align polynomial.to_laurent_one Polynomial.toLaurent_one
 
 /- warning: polynomial.to_laurent_C_mul_eq -> Polynomial.toLaurent_C_mul_eq is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.mul'.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r) f)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eqₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C_mul_eq (r : R) (f : R[X]) :
@@ -334,10 +319,7 @@ theorem Polynomial.toLaurent_X_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = T n :=
 #align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_pow
 
 /- warning: polynomial.to_laurent_C_mul_X_pow -> Polynomial.toLaurent_C_mul_X_pow is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.mul'.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_C_mul_X_powₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C_mul_X_pow (n : ℕ) (r : R) :
@@ -368,10 +350,7 @@ theorem isUnit_T (n : ℤ) : IsUnit (T n : R[T;T⁻¹]) :=
 -/
 
 /- warning: laurent_polynomial.induction_on -> LaurentPolynomial.induction_on is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (a : R), M (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) -> (forall {p : LaurentPolynomial.{u1} R _inst_1} {q : LaurentPolynomial.{u1} R _inst_1}, (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toHasAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))) p q))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) -> (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HAdd.hAdd.{0, 0, 0} Int Int Int (instHAdd.{0} Int Int.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n) (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))) -> (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HSub.hSub.{0, 0, 0} Int Int Int (instHSub.{0} Int Int.hasSub) (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)) (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))))) -> (M p)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (a : R), M (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) -> (forall {p : LaurentPolynomial.{u1} R _inst_1} {q : LaurentPolynomial.{u1} R _inst_1}, (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HAdd.hAdd.{0, 0, 0} Int Int Int (instHAdd.{0} Int Int.instAddInt) (Nat.cast.{0} Int instNatCastInt n) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HSub.hSub.{0, 0, 0} Int Int Int (instHSub.{0} Int Int.instSubInt) (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n)) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (M p)
+<too large>
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on LaurentPolynomial.induction_onₓ'. -/
 @[elab_as_elim]
 protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C : ∀ a, M (C a))
@@ -448,10 +427,7 @@ def trunc : R[T;T⁻¹] →+ R[X] :=
 -/
 
 /- warning: laurent_polynomial.trunc_C_mul_T -> LaurentPolynomial.trunc_C_mul_T is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} (Polynomial.{u1} R _inst_1) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_Tₓ'. -/
 @[simp]
 theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
@@ -474,10 +450,7 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
 #align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_T
 
 /- warning: laurent_polynomial.left_inverse_trunc_to_laurent -> LaurentPolynomial.leftInverse_trunc_toLaurent is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.LeftInverse.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.LeftInverse.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
+<too large>
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurentₓ'. -/
 @[simp]
 theorem leftInverse_trunc_toLaurent :
@@ -492,10 +465,7 @@ theorem leftInverse_trunc_toLaurent :
 #align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurent
 
 /- warning: polynomial.trunc_to_laurent -> Polynomial.trunc_toLaurent is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) f
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (a : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) f
+<too large>
 Case conversion may be inaccurate. Consider using '#align polynomial.trunc_to_laurent Polynomial.trunc_toLaurentₓ'. -/
 @[simp]
 theorem Polynomial.trunc_toLaurent (f : R[X]) : trunc f.toLaurent = f :=
@@ -812,20 +782,14 @@ instance algebraPolynomial (R : Type _) [CommSemiring R] : Algebra R[X] R[T;T⁻
 -/
 
 /- warning: laurent_polynomial.algebra_map_X_pow -> LaurentPolynomial.algebraMap_X_pow is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (LaurentPolynomial.T.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (LaurentPolynomial.T.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) (Nat.cast.{0} Int instNatCastInt n))
+<too large>
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_powₓ'. -/
 theorem algebraMap_X_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = T n :=
   Polynomial.toLaurent_X_pow n
 #align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_pow
 
 /- warning: laurent_polynomial.algebra_map_eq_to_laurent -> LaurentPolynomial.algebraMap_eq_toLaurent is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (f : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) f) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (f : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f)
+<too large>
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_eq_to_laurent LaurentPolynomial.algebraMap_eq_toLaurentₓ'. -/
 @[simp]
 theorem algebraMap_eq_toLaurent (f : R[X]) : algebraMap R[X] R[T;T⁻¹] f = f.toLaurent :=
Diff
@@ -262,7 +262,7 @@ theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_Tₓ'. -/
 -- This lemma locks in the right changes and is what Lean proved directly.
 -- The actual `simp`-normal form of a Laurent monomial is `C a * T n`, whenever it can be reached.
@@ -451,7 +451,7 @@ def trunc : R[T;T⁻¹] →+ R[X] :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} (Polynomial.{u1} R _inst_1) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_Tₓ'. -/
 @[simp]
 theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
@@ -464,7 +464,7 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
     erw [comap_domain_single, to_finsupp_iso_symm_apply]
     simp only [Int.coe_nat_nonneg, Int.toNat_coe_nat, if_true, to_finsupp_iso_apply,
       to_finsupp_monomial]
-  · lift -n to ℕ using (neg_pos.mpr (not_le.mp n0)).le
+  · lift -n to ℕ using (neg_pos.mpr (not_le.mp n0)).le with m
     rw [to_finsupp_iso_apply, to_finsupp_inj, if_neg n0]
     erw [to_finsupp_iso_symm_apply]
     ext a
Diff
@@ -464,7 +464,7 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
     erw [comap_domain_single, to_finsupp_iso_symm_apply]
     simp only [Int.coe_nat_nonneg, Int.toNat_coe_nat, if_true, to_finsupp_iso_apply,
       to_finsupp_monomial]
-  · lift -n to ℕ using (neg_pos.mpr (not_le.mp n0)).le with m
+  · lift -n to ℕ using (neg_pos.mpr (not_le.mp n0)).le
     rw [to_finsupp_iso_apply, to_finsupp_inj, if_neg n0]
     erw [to_finsupp_iso_symm_apply]
     ext a
Diff
@@ -109,7 +109,7 @@ def Polynomial.toLaurent [Semiring R] : R[X] →+* R[T;T⁻¹] :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (p : Polynomial.{u1} R _inst_1), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) p) (Finsupp.mapDomain.{0, 0, u1} Nat Int R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe)))) (Polynomial.toFinsupp.{u1} R _inst_1 p))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (p : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) p) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) p) (AddMonoidAlgebra.mapDomain.{u1, 0, 0} R Nat _inst_1 Int (Nat.cast.{0} Int instNatCastInt) (Polynomial.toFinsupp.{u1} R _inst_1 p))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (p : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) p) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) p) (AddMonoidAlgebra.mapDomain.{u1, 0, 0} R Nat _inst_1 Int (Nat.cast.{0} Int instNatCastInt) (Polynomial.toFinsupp.{u1} R _inst_1 p))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_apply Polynomial.toLaurent_applyₓ'. -/
 /-- This is not a simp lemma, as it is usually preferable to use the lemmas about `C` and `X`
 instead. -/
@@ -166,7 +166,7 @@ def C : R →+* R[T;T⁻¹] :=
 lean 3 declaration is
   forall {R : Type.{u1}} {A : Type.{u2}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} A] [_inst_4 : Algebra.{u1, u2} R A _inst_2 _inst_3] (r : R), Eq.{succ u2} (LaurentPolynomial.{u2} A _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) (fun (_x : RingHom.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) => R -> (LaurentPolynomial.{u2} A _inst_3)) (RingHom.hasCoeToFun.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) (algebraMap.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) _inst_2 (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid) (AddMonoidAlgebra.algebra.{u2, 0, u1} A Int R _inst_2 _inst_3 _inst_4 Int.addMonoid)) r) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => A -> (LaurentPolynomial.{u2} A _inst_3)) (RingHom.hasCoeToFun.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u2} A _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) (fun (_x : RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) => R -> A) (RingHom.hasCoeToFun.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) (algebraMap.{u1, u2} R A _inst_2 _inst_3 _inst_4) r))
 but is expected to have type
-  forall {R : Type.{u2}} {A : Type.{u1}} [_inst_2 : CommSemiring.{u2} R] [_inst_3 : Semiring.{u1} A] [_inst_4 : Algebra.{u2, u1} R A _inst_2 _inst_3] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} A _inst_3) r) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} A _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))))) (algebraMap.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u2} A Int R _inst_2 _inst_3 _inst_4 Int.instAddMonoidInt)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) => LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3))))) (algebraMap.{u2, u1} R A _inst_2 _inst_3 _inst_4) r))
+  forall {R : Type.{u2}} {A : Type.{u1}} [_inst_2 : CommSemiring.{u2} R] [_inst_3 : Semiring.{u1} A] [_inst_4 : Algebra.{u2, u1} R A _inst_2 _inst_3] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} A _inst_3) r) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} A _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))))) (algebraMap.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u2} A Int R _inst_2 _inst_3 _inst_4 Int.instAddMonoidInt)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) => LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3))))) (algebraMap.{u2, u1} R A _inst_2 _inst_3 _inst_4) r))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_applyₓ'. -/
 theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
     algebraMap R (LaurentPolynomial A) r = C (algebraMap R A r) :=
@@ -177,7 +177,7 @@ theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) (algebraMap.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid) (AddMonoidAlgebra.algebra.{u1, 0, u1} R Int R _inst_2 (CommSemiring.toSemiring.{u1} R _inst_2) (Algebra.id.{u1} R _inst_2) Int.addMonoid)) r)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u1} R Int R _inst_2 (CommSemiring.toSemiring.{u1} R _inst_2) (Algebra.id.{u1} R _inst_2) Int.instAddMonoidInt)) r)
+  forall {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u1} R Int R _inst_2 (CommSemiring.toSemiring.{u1} R _inst_2) (Algebra.id.{u1} R _inst_2) Int.instAddMonoidInt)) r)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMapₓ'. -/
 /-- When we have `[comm_semiring R]`, the function `C` is the same as `algebra_map R R[T;T⁻¹]`.
 (But note that `C` is defined when `R` is not necessarily commutative, in which case
@@ -191,7 +191,7 @@ theorem C_eq_algebraMap {R : Type _} [CommSemiring R] (r : R) : C r = algebraMap
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_Cₓ'. -/
 theorem single_eq_C (r : R) : single 0 r = C r :=
   rfl
@@ -251,7 +251,7 @@ theorem mul_T_assoc (f : R[T;T⁻¹]) (m n : ℤ) : f * T m * T n = f * T (m + n
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (n : Int), Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) n r) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (n : Int), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) n r) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (n : Int), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) n r) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_C_mul_Tₓ'. -/
 @[simp]
 theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r * T n : R[T;T⁻¹]) := by
@@ -262,7 +262,7 @@ theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_Tₓ'. -/
 -- This lemma locks in the right changes and is what Lean proved directly.
 -- The actual `simp`-normal form of a Laurent monomial is `C a * T n`, whenever it can be reached.
@@ -277,7 +277,7 @@ theorem Polynomial.toLaurent_C_mul_T (n : ℕ) (r : R) :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C Polynomial.toLaurent_Cₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C (r : R) : (Polynomial.C r).toLaurent = C r :=
@@ -290,7 +290,7 @@ theorem Polynomial.toLaurent_C (r : R) : (Polynomial.C r).toLaurent = C r :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_X Polynomial.toLaurent_Xₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_X : (Polynomial.X.toLaurent : R[T;T⁻¹]) = T 1 :=
@@ -303,7 +303,7 @@ theorem Polynomial.toLaurent_X : (Polynomial.X.toLaurent : R[T;T⁻¹]) = T 1 :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 1 (One.one.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.hasOne.{u1} R _inst_1))))) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (One.one.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 Int.hasZero))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_one Polynomial.toLaurent_oneₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) 1 = 1 :=
@@ -314,7 +314,7 @@ theorem Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹])
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.mul'.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r) f)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eqₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C_mul_eq (r : R) (f : R[X]) :
@@ -326,7 +326,7 @@ theorem Polynomial.toLaurent_C_mul_eq (r : R) (f : R[X]) :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_powₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_X_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = T n := by
@@ -337,7 +337,7 @@ theorem Polynomial.toLaurent_X_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = T n :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.mul'.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_C_mul_X_powₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_C_mul_X_pow (n : ℕ) (r : R) :
@@ -371,7 +371,7 @@ theorem isUnit_T (n : ℤ) : IsUnit (T n : R[T;T⁻¹]) :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (a : R), M (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) -> (forall {p : LaurentPolynomial.{u1} R _inst_1} {q : LaurentPolynomial.{u1} R _inst_1}, (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toHasAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))) p q))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) -> (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HAdd.hAdd.{0, 0, 0} Int Int Int (instHAdd.{0} Int Int.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n) (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))) -> (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HSub.hSub.{0, 0, 0} Int Int Int (instHSub.{0} Int Int.hasSub) (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)) (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))))) -> (M p)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (a : R), M (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) -> (forall {p : LaurentPolynomial.{u1} R _inst_1} {q : LaurentPolynomial.{u1} R _inst_1}, (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HAdd.hAdd.{0, 0, 0} Int Int Int (instHAdd.{0} Int Int.instAddInt) (Nat.cast.{0} Int instNatCastInt n) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HSub.hSub.{0, 0, 0} Int Int Int (instHSub.{0} Int Int.instSubInt) (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n)) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (M p)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (a : R), M (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) -> (forall {p : LaurentPolynomial.{u1} R _inst_1} {q : LaurentPolynomial.{u1} R _inst_1}, (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HAdd.hAdd.{0, 0, 0} Int Int Int (instHAdd.{0} Int Int.instAddInt) (Nat.cast.{0} Int instNatCastInt n) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HSub.hSub.{0, 0, 0} Int Int Int (instHSub.{0} Int Int.instSubInt) (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n)) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (M p)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on LaurentPolynomial.induction_onₓ'. -/
 @[elab_as_elim]
 protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C : ∀ a, M (C a))
@@ -406,7 +406,7 @@ protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (p : LaurentPolynomial.{u1} R _inst_1) (q : LaurentPolynomial.{u1} R _inst_1), (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toHasAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))) p q))) -> (forall (n : Int) (a : R), M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) -> (M p)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (p : LaurentPolynomial.{u1} R _inst_1) (q : LaurentPolynomial.{u1} R _inst_1), (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Int) (a : R), M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) -> (M p)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (p : LaurentPolynomial.{u1} R _inst_1) (q : LaurentPolynomial.{u1} R _inst_1), (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Int) (a : R), M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) -> (M p)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on' LaurentPolynomial.induction_on'ₓ'. -/
 /-- To prove something about Laurent polynomials, it suffices to show that
 * the condition is closed under taking sums, and
@@ -451,7 +451,7 @@ def trunc : R[T;T⁻¹] →+ R[X] :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} (Polynomial.{u1} R _inst_1) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_Tₓ'. -/
 @[simp]
 theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
@@ -477,7 +477,7 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.LeftInverse.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.LeftInverse.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.LeftInverse.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurentₓ'. -/
 @[simp]
 theorem leftInverse_trunc_toLaurent :
@@ -495,7 +495,7 @@ theorem leftInverse_trunc_toLaurent :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) f
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (a : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) f
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (a : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) f
 Case conversion may be inaccurate. Consider using '#align polynomial.trunc_to_laurent Polynomial.trunc_toLaurentₓ'. -/
 @[simp]
 theorem Polynomial.trunc_toLaurent (f : R[X]) : trunc f.toLaurent = f :=
@@ -506,7 +506,7 @@ theorem Polynomial.trunc_toLaurent (f : R[X]) : trunc f.toLaurent = f :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.Injective.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.Injective.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.Injective.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_injective Polynomial.toLaurent_injectiveₓ'. -/
 theorem Polynomial.toLaurent_injective :
     Function.Injective (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) :=
@@ -517,7 +517,7 @@ theorem Polynomial.toLaurent_injective :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1) (g : Polynomial.{u1} R _inst_1), Iff (Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) g)) (Eq.{succ u1} (Polynomial.{u1} R _inst_1) f g)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1) (g : Polynomial.{u1} R _inst_1), Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) g)) (Eq.{succ u1} (Polynomial.{u1} R _inst_1) f g)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1) (g : Polynomial.{u1} R _inst_1), Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) g)) (Eq.{succ u1} (Polynomial.{u1} R _inst_1) f g)
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_inj Polynomial.toLaurent_injₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_inj (f g : R[X]) : f.toLaurent = g.toLaurent ↔ f = g :=
@@ -528,7 +528,7 @@ theorem Polynomial.toLaurent_inj (f g : R[X]) : f.toLaurent = g.toLaurent ↔ f
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : Polynomial.{u1} R _inst_1}, Iff (Ne.{succ u1} (Polynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1))))) (Ne.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (LaurentPolynomial.{u1} R _inst_1) (MulZeroClass.toHasZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : Polynomial.{u1} R _inst_1}, Iff (Ne.{succ u1} (Polynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))) (Ne.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : Polynomial.{u1} R _inst_1}, Iff (Ne.{succ u1} (Polynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))) (Ne.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zeroₓ'. -/
 theorem Polynomial.toLaurent_ne_zero {f : R[X]} : f ≠ 0 ↔ f.toLaurent ≠ 0 :=
   (map_ne_zero_iff _ Polynomial.toLaurent_injective).symm
@@ -538,7 +538,7 @@ theorem Polynomial.toLaurent_ne_zero {f : R[X]} : f ≠ 0 ↔ f.toLaurent ≠ 0
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1), Exists.{1} Nat (fun (n : Nat) => Exists.{succ u1} (Polynomial.{u1} R _inst_1) (fun (f' : Polynomial.{u1} R _inst_1) => Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f') (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) f (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1), Exists.{1} Nat (fun (n : Nat) => Exists.{succ u1} (Polynomial.{u1} R _inst_1) (fun (f' : Polynomial.{u1} R _inst_1) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f') (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1), Exists.{1} Nat (fun (n : Nat) => Exists.{succ u1} (Polynomial.{u1} R _inst_1) (fun (f' : Polynomial.{u1} R _inst_1) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f') (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_T_powₓ'. -/
 theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent = f * T n :=
   by
@@ -558,7 +558,7 @@ theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (f : LaurentPolynomial.{u1} R _inst_1), (forall {f : Polynomial.{u1} R _inst_1} {n : Nat}, Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))) -> (Q f)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (f : LaurentPolynomial.{u1} R _inst_1), (forall {f : Polynomial.{u1} R _inst_1} {n : Nat}, Q (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (Q f)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (f : LaurentPolynomial.{u1} R _inst_1), (forall {f : Polynomial.{u1} R _inst_1} {n : Nat}, Q (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (Q f)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on_mul_T LaurentPolynomial.induction_on_mul_Tₓ'. -/
 /-- This is a version of `exists_T_pow` stated as an induction principle. -/
 @[elab_as_elim]
@@ -575,7 +575,7 @@ theorem induction_on_mul_T {Q : R[T;T⁻¹] → Prop} (f : R[T;T⁻¹])
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1) {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop}, (forall (f : Polynomial.{u1} R _inst_1), Q (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) -> (forall (f : LaurentPolynomial.{u1} R _inst_1), (Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) f (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))) -> (Q f)) -> (Q f)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1) {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop}, (forall (f : Polynomial.{u1} R _inst_1), Q (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) -> (forall (f : LaurentPolynomial.{u1} R _inst_1), (Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))) -> (Q f)) -> (Q f)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1) {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop}, (forall (f : Polynomial.{u1} R _inst_1), Q (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) -> (forall (f : LaurentPolynomial.{u1} R _inst_1), (Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))) -> (Q f)) -> (Q f)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.reduce_to_polynomial_of_mul_T LaurentPolynomial.reduce_to_polynomial_of_mul_Tₓ'. -/
 /-- Suppose that `Q` is a statement about Laurent polynomials such that
 * `Q` is true on *ordinary* polynomials;
@@ -597,7 +597,7 @@ section Support
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R) (n : Int), HasSubset.Subset.{0} (Finset.{0} Int) (Finset.hasSubset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.hasSingleton.{0} Int) n)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R) (n : Int), HasSubset.Subset.{0} (Finset.{0} Int) (Finset.instHasSubsetFinset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R) (n : Int), HasSubset.Subset.{0} (Finset.{0} Int) (Finset.instHasSubsetFinset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.support_C_mul_T LaurentPolynomial.support_C_mul_Tₓ'. -/
 theorem support_C_mul_T (a : R) (n : ℤ) : (C a * T n).support ⊆ {n} := by
   simpa only [← single_eq_C_mul_T] using support_single_subset
@@ -607,7 +607,7 @@ theorem support_C_mul_T (a : R) (n : ℤ) : (C a * T n).support ⊆ {n} := by
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (n : Int), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.hasSingleton.{0} Int) n))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (forall (n : Int), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (forall (n : Int), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.support_C_mul_T_of_ne_zero LaurentPolynomial.support_C_mul_T_of_ne_zeroₓ'. -/
 theorem support_C_mul_T_of_ne_zero {a : R} (a0 : a ≠ 0) (n : ℤ) : (C a * T n).support = {n} :=
   by
@@ -619,7 +619,7 @@ theorem support_C_mul_T_of_ne_zero {a : R} (a0 : a ≠ 0) (n : ℤ) : (C a * T n
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (Finset.map.{0, 0} Nat Int (Nat.castEmbedding.{0} Int (AddGroupWithOne.toAddMonoidWithOne.{0} Int (AddCommGroupWithOne.toAddGroupWithOne.{0} Int (Ring.toAddCommGroupWithOne.{0} Int Int.ring))) (StrictOrderedSemiring.to_charZero.{0} Int (StrictOrderedRing.toStrictOrderedSemiring.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Polynomial.support.{u1} R _inst_1 f))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (Finset.map.{0, 0} Nat Int (Nat.castEmbedding.{0} Int (AddGroupWithOne.toAddMonoidWithOne.{0} Int (Ring.toAddGroupWithOne.{0} Int Int.instRingInt)) (StrictOrderedSemiring.to_charZero.{0} Int (LinearOrderedSemiring.toStrictOrderedSemiring.{0} Int (LinearOrderedCommSemiring.toLinearOrderedSemiring.{0} Int (LinearOrderedCommRing.toLinearOrderedCommSemiring.{0} Int Int.linearOrderedCommRing))))) (Polynomial.support.{u1} R _inst_1 f))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (Finset.map.{0, 0} Nat Int (Nat.castEmbedding.{0} Int (AddGroupWithOne.toAddMonoidWithOne.{0} Int (Ring.toAddGroupWithOne.{0} Int Int.instRingInt)) (StrictOrderedSemiring.to_charZero.{0} Int (LinearOrderedSemiring.toStrictOrderedSemiring.{0} Int (LinearOrderedCommSemiring.toLinearOrderedSemiring.{0} Int (LinearOrderedCommRing.toLinearOrderedCommSemiring.{0} Int Int.linearOrderedCommRing))))) (Polynomial.support.{u1} R _inst_1 f))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.to_laurent_support LaurentPolynomial.toLaurent_supportₓ'. -/
 /-- The support of a polynomial `f` is a finset in `ℕ`.  The lemma `to_laurent_support f`
 shows that the support of `f.to_laurent` is the same finset, but viewed in `ℤ` under the natural
@@ -695,7 +695,7 @@ open Classical
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_C_mul_Tₓ'. -/
 @[simp]
 theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n :=
@@ -711,7 +711,7 @@ theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (WithBot.some.{0} Int n))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (WithBot.some.{0} Int n))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_C_mul_T_iteₓ'. -/
 theorem degree_C_mul_T_ite (n : ℤ) (a : R) : (C a * T n).degree = ite (a = 0) ⊥ n := by
   split_ifs with h h <;>
@@ -732,7 +732,7 @@ theorem degree_T [Nontrivial R] (n : ℤ) : (T n : R[T;T⁻¹]).degree = n :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero)))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C LaurentPolynomial.degree_Cₓ'. -/
 theorem degree_C {a : R} (a0 : a ≠ 0) : (C a).degree = 0 :=
   by
@@ -744,7 +744,7 @@ theorem degree_C {a : R} (a0 : a ≠ 0) : (C a).degree = 0 :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero)))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_iteₓ'. -/
 theorem degree_C_ite (a : R) : (C a).degree = ite (a = 0) ⊥ 0 := by
   split_ifs with h h <;> simp only [h, map_zero, degree_zero, degree_C, Ne.def, not_false_iff]
@@ -758,7 +758,7 @@ section DegreeBounds
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_leₓ'. -/
 theorem degree_C_mul_T_le (n : ℤ) (a : R) : (C a * T n).degree ≤ n :=
   by
@@ -781,7 +781,7 @@ theorem degree_T_le (n : ℤ) : (T n : R[T;T⁻¹]).degree ≤ n :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_le LaurentPolynomial.degree_C_leₓ'. -/
 theorem degree_C_le (a : R) : (C a).degree ≤ 0 :=
   (le_of_eq (by rw [T_zero, mul_one])).trans (degree_C_mul_T_le 0 a)
@@ -815,7 +815,7 @@ instance algebraPolynomial (R : Type _) [CommSemiring R] : Algebra R[X] R[T;T⁻
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (LaurentPolynomial.T.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (LaurentPolynomial.T.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) (Nat.cast.{0} Int instNatCastInt n))
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (LaurentPolynomial.T.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) (Nat.cast.{0} Int instNatCastInt n))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_powₓ'. -/
 theorem algebraMap_X_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = T n :=
   Polynomial.toLaurent_X_pow n
@@ -825,7 +825,7 @@ theorem algebraMap_X_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = T n :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (f : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) f) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (f : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f)
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (f : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_eq_to_laurent LaurentPolynomial.algebraMap_eq_toLaurentₓ'. -/
 @[simp]
 theorem algebraMap_eq_toLaurent (f : R[X]) : algebraMap R[X] R[T;T⁻¹] f = f.toLaurent :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Damiano Testa
 
 ! This file was ported from Lean 3 source module data.polynomial.laurent
-! leanprover-community/mathlib commit 831c494092374cfe9f50591ed0ac81a25efc5b86
+! leanprover-community/mathlib commit 2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.RingTheory.Localization.Basic
 
 /-!  # Laurent polynomials
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We introduce Laurent polynomials over a semiring `R`.  Mathematically, they are expressions of the
 form
 $$
@@ -259,7 +262,7 @@ theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
 Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_Tₓ'. -/
 -- This lemma locks in the right changes and is what Lean proved directly.
 -- The actual `simp`-normal form of a Laurent monomial is `C a * T n`, whenever it can be reached.
@@ -448,7 +451,7 @@ def trunc : R[T;T⁻¹] →+ R[X] :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} (Polynomial.{u1} R _inst_1) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6191 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_Tₓ'. -/
 @[simp]
 theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
Diff
@@ -753,7 +753,7 @@ section DegreeBounds
 
 /- warning: laurent_polynomial.degree_C_mul_T_le -> LaurentPolynomial.degree_C_mul_T_le is a dubious translation:
 lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n)
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n)
 but is expected to have type
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n)
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_leₓ'. -/
@@ -764,15 +764,19 @@ theorem degree_C_mul_T_le (n : ℤ) (a : R) : (C a * T n).degree ≤ n :=
   · exact (degree_C_mul_T n a a0).le
 #align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_le
 
-#print LaurentPolynomial.degree_T_le /-
+/- warning: laurent_polynomial.degree_T_le -> LaurentPolynomial.degree_T_le is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (LaurentPolynomial.T.{u1} R _inst_1 n)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (LaurentPolynomial.T.{u1} R _inst_1 n)) (WithBot.some.{0} Int n)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_T_le LaurentPolynomial.degree_T_leₓ'. -/
 theorem degree_T_le (n : ℤ) : (T n : R[T;T⁻¹]).degree ≤ n :=
   (le_of_eq (by rw [map_one, one_mul])).trans (degree_C_mul_T_le n (1 : R))
 #align laurent_polynomial.degree_T_le LaurentPolynomial.degree_T_le
--/
 
 /- warning: laurent_polynomial.degree_C_le -> LaurentPolynomial.degree_C_le is a dubious translation:
 lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero))))
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toHasLe.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero))))
 but is expected to have type
   forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
 Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_le LaurentPolynomial.degree_C_leₓ'. -/
Diff
@@ -82,22 +82,32 @@ noncomputable section
 
 variable {R : Type _}
 
+#print LaurentPolynomial /-
 /-- The semiring of Laurent polynomials with coefficients in the semiring `R`.
 We denote it by `R[T;T⁻¹]`.
 The ring homomorphism `C : R →+* R[T;T⁻¹]` includes `R` as the constant polynomials. -/
 abbrev LaurentPolynomial (R : Type _) [Semiring R] :=
   AddMonoidAlgebra R ℤ
 #align laurent_polynomial LaurentPolynomial
+-/
 
 -- mathport name: «expr [T;T⁻¹]»
 local notation:9000 R "[T;T⁻¹]" => LaurentPolynomial R
 
+#print Polynomial.toLaurent /-
 /-- The ring homomorphism, taking a polynomial with coefficients in `R` to a Laurent polynomial
 with coefficients in `R`. -/
 def Polynomial.toLaurent [Semiring R] : R[X] →+* R[T;T⁻¹] :=
   (mapDomainRingHom R Int.ofNatHom).comp (toFinsuppIso R)
 #align polynomial.to_laurent Polynomial.toLaurent
+-/
 
+/- warning: polynomial.to_laurent_apply -> Polynomial.toLaurent_apply is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (p : Polynomial.{u1} R _inst_1), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) p) (Finsupp.mapDomain.{0, 0, u1} Nat Int R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe)))) (Polynomial.toFinsupp.{u1} R _inst_1 p))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (p : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) p) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) p) (AddMonoidAlgebra.mapDomain.{u1, 0, 0} R Nat _inst_1 Int (Nat.cast.{0} Int instNatCastInt) (Polynomial.toFinsupp.{u1} R _inst_1 p))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_apply Polynomial.toLaurent_applyₓ'. -/
 /-- This is not a simp lemma, as it is usually preferable to use the lemmas about `C` and `X`
 instead. -/
 theorem Polynomial.toLaurent_apply [Semiring R] (p : R[X]) :
@@ -105,6 +115,7 @@ theorem Polynomial.toLaurent_apply [Semiring R] (p : R[X]) :
   rfl
 #align polynomial.to_laurent_apply Polynomial.toLaurent_apply
 
+#print Polynomial.toLaurentAlg /-
 /-- The `R`-algebra map, taking a polynomial with coefficients in `R` to a Laurent polynomial
 with coefficients in `R`. -/
 def Polynomial.toLaurentAlg [CommSemiring R] : R[X] →ₐ[R] R[T;T⁻¹] :=
@@ -112,11 +123,14 @@ def Polynomial.toLaurentAlg [CommSemiring R] : R[X] →ₐ[R] R[T;T⁻¹] :=
   refine' AlgHom.comp _ (to_finsupp_iso_alg R).toAlgHom
   exact map_domain_alg_hom R R Int.ofNatHom
 #align polynomial.to_laurent_alg Polynomial.toLaurentAlg
+-/
 
+#print Polynomial.toLaurentAlg_apply /-
 @[simp]
 theorem Polynomial.toLaurentAlg_apply [CommSemiring R] (f : R[X]) : f.toLaurentAlg = f.toLaurent :=
   rfl
 #align polynomial.to_laurent_alg_apply Polynomial.toLaurentAlg_apply
+-/
 
 namespace LaurentPolynomial
 
@@ -124,6 +138,12 @@ section Semiring
 
 variable [Semiring R]
 
+/- warning: laurent_polynomial.single_zero_one_eq_one -> LaurentPolynomial.single_zero_one_eq_one is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (One.one.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 Int.hasZero))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R _inst_1)))) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_zero_one_eq_one LaurentPolynomial.single_zero_one_eq_oneₓ'. -/
 theorem single_zero_one_eq_one : (single 0 1 : R[T;T⁻¹]) = (1 : R[T;T⁻¹]) :=
   rfl
 #align laurent_polynomial.single_zero_one_eq_one LaurentPolynomial.single_zero_one_eq_one
@@ -131,134 +151,230 @@ theorem single_zero_one_eq_one : (single 0 1 : R[T;T⁻¹]) = (1 : R[T;T⁻¹])
 /-!  ### The functions `C` and `T`. -/
 
 
+#print LaurentPolynomial.C /-
 /-- The ring homomorphism `C`, including `R` into the ring of Laurent polynomials over `R` as
 the constant Laurent polynomials. -/
-def c : R →+* R[T;T⁻¹] :=
+def C : R →+* R[T;T⁻¹] :=
   singleZeroRingHom
-#align laurent_polynomial.C LaurentPolynomial.c
+#align laurent_polynomial.C LaurentPolynomial.C
+-/
 
+/- warning: laurent_polynomial.algebra_map_apply -> LaurentPolynomial.algebraMap_apply is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} {A : Type.{u2}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} A] [_inst_4 : Algebra.{u1, u2} R A _inst_2 _inst_3] (r : R), Eq.{succ u2} (LaurentPolynomial.{u2} A _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) (fun (_x : RingHom.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) => R -> (LaurentPolynomial.{u2} A _inst_3)) (RingHom.hasCoeToFun.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} (LaurentPolynomial.{u2} A _inst_3) (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid))) (algebraMap.{u1, u2} R (LaurentPolynomial.{u2} A _inst_3) _inst_2 (AddMonoidAlgebra.semiring.{u2, 0} A Int _inst_3 Int.addMonoid) (AddMonoidAlgebra.algebra.{u2, 0, u1} A Int R _inst_2 _inst_3 _inst_4 Int.addMonoid)) r) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => A -> (LaurentPolynomial.{u2} A _inst_3)) (RingHom.hasCoeToFun.{u2, u2} A (LaurentPolynomial.{u2} A _inst_3) (Semiring.toNonAssocSemiring.{u2} A _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u2, 0} A Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u2} A _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) (fun (_x : RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) => R -> A) (RingHom.hasCoeToFun.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u2} A _inst_3)) (algebraMap.{u1, u2} R A _inst_2 _inst_3 _inst_4) r))
+but is expected to have type
+  forall {R : Type.{u2}} {A : Type.{u1}} [_inst_2 : CommSemiring.{u2} R] [_inst_3 : Semiring.{u1} A] [_inst_4 : Algebra.{u2, u1} R A _inst_2 _inst_3] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} A _inst_3) r) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} A _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} A _inst_3) (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt)))))) (algebraMap.{u2, u1} R (LaurentPolynomial.{u1} A _inst_3) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} A Int _inst_3 Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u2} A Int R _inst_2 _inst_3 _inst_4 Int.instAddMonoidInt)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) => LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) (LaurentPolynomial.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) Int _inst_3 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3)) R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R A (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} A _inst_3))))) (algebraMap.{u2, u1} R A _inst_2 _inst_3 _inst_4) r))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_applyₓ'. -/
 theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
-    algebraMap R (LaurentPolynomial A) r = c (algebraMap R A r) :=
+    algebraMap R (LaurentPolynomial A) r = C (algebraMap R A r) :=
   rfl
 #align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_apply
 
+/- warning: laurent_polynomial.C_eq_algebra_map -> LaurentPolynomial.C_eq_algebraMap is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid))) (algebraMap.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.addMonoid) (AddMonoidAlgebra.algebra.{u1, 0, u1} R Int R _inst_2 (CommSemiring.toSemiring.{u1} R _inst_2) (Algebra.id.{u1} R _inst_2) Int.addMonoid)) r)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} R (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) _inst_2 (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_2) Int.instAddMonoidInt) (AddMonoidAlgebra.algebra.{u1, 0, u1} R Int R _inst_2 (CommSemiring.toSemiring.{u1} R _inst_2) (Algebra.id.{u1} R _inst_2) Int.instAddMonoidInt)) r)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMapₓ'. -/
 /-- When we have `[comm_semiring R]`, the function `C` is the same as `algebra_map R R[T;T⁻¹]`.
 (But note that `C` is defined when `R` is not necessarily commutative, in which case
 `algebra_map` is not available.)
 -/
-theorem c_eq_algebraMap {R : Type _} [CommSemiring R] (r : R) : c r = algebraMap R R[T;T⁻¹] r :=
+theorem C_eq_algebraMap {R : Type _} [CommSemiring R] (r : R) : C r = algebraMap R R[T;T⁻¹] r :=
   rfl
-#align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.c_eq_algebraMap
-
-theorem single_eq_c (r : R) : single 0 r = c r :=
+#align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMap
+
+/- warning: laurent_polynomial.single_eq_C -> LaurentPolynomial.single_eq_C is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_Cₓ'. -/
+theorem single_eq_C (r : R) : single 0 r = C r :=
   rfl
-#align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_c
+#align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_C
 
+#print LaurentPolynomial.T /-
 /-- The function `n ↦ T ^ n`, implemented as a sequence `ℤ → R[T;T⁻¹]`.
 
 Using directly `T ^ n` does not work, since we want the exponents to be of Type `ℤ` and there
 is no `ℤ`-power defined on `R[T;T⁻¹]`.  Using that `T` is a unit introduces extra coercions.
 For these reasons, the definition of `T` is as a sequence. -/
-def t (n : ℤ) : R[T;T⁻¹] :=
+def T (n : ℤ) : R[T;T⁻¹] :=
   single n 1
-#align laurent_polynomial.T LaurentPolynomial.t
+#align laurent_polynomial.T LaurentPolynomial.T
+-/
 
+#print LaurentPolynomial.T_zero /-
 @[simp]
-theorem t_zero : (t 0 : R[T;T⁻¹]) = 1 :=
+theorem T_zero : (T 0 : R[T;T⁻¹]) = 1 :=
   rfl
-#align laurent_polynomial.T_zero LaurentPolynomial.t_zero
+#align laurent_polynomial.T_zero LaurentPolynomial.T_zero
+-/
 
-theorem t_add (m n : ℤ) : (t (m + n) : R[T;T⁻¹]) = t m * t n :=
+#print LaurentPolynomial.T_add /-
+theorem T_add (m n : ℤ) : (T (m + n) : R[T;T⁻¹]) = T m * T n :=
   by
   convert single_mul_single.symm
   simp [T]
-#align laurent_polynomial.T_add LaurentPolynomial.t_add
+#align laurent_polynomial.T_add LaurentPolynomial.T_add
+-/
 
-theorem t_sub (m n : ℤ) : (t (m - n) : R[T;T⁻¹]) = t m * t (-n) := by rw [← T_add, sub_eq_add_neg]
-#align laurent_polynomial.T_sub LaurentPolynomial.t_sub
+#print LaurentPolynomial.T_sub /-
+theorem T_sub (m n : ℤ) : (T (m - n) : R[T;T⁻¹]) = T m * T (-n) := by rw [← T_add, sub_eq_add_neg]
+#align laurent_polynomial.T_sub LaurentPolynomial.T_sub
+-/
 
+/- warning: laurent_polynomial.T_pow -> LaurentPolynomial.T_pow is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (m : Int) (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (LaurentPolynomial.{u1} R _inst_1) Nat (LaurentPolynomial.{u1} R _inst_1) (instHPow.{u1, 0} (LaurentPolynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.addMonoid))))) (LaurentPolynomial.T.{u1} R _inst_1 m) n) (LaurentPolynomial.T.{u1} R _inst_1 (HMul.hMul.{0, 0, 0} Int Int Int (instHMul.{0} Int Int.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n) m))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (m : Int) (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (LaurentPolynomial.{u1} R _inst_1) Nat (LaurentPolynomial.{u1} R _inst_1) (instHPow.{u1, 0} (LaurentPolynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))) (LaurentPolynomial.T.{u1} R _inst_1 m) n) (LaurentPolynomial.T.{u1} R _inst_1 (HMul.hMul.{0, 0, 0} Int Int Int (instHMul.{0} Int Int.instMulInt) (Nat.cast.{0} Int instNatCastInt n) m))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.T_pow LaurentPolynomial.T_powₓ'. -/
 @[simp]
-theorem t_pow (m : ℤ) (n : ℕ) : (t m ^ n : R[T;T⁻¹]) = t (n * m) := by
+theorem T_pow (m : ℤ) (n : ℕ) : (T m ^ n : R[T;T⁻¹]) = T (n * m) := by
   rw [T, T, single_pow n, one_pow, nsmul_eq_mul]
-#align laurent_polynomial.T_pow LaurentPolynomial.t_pow
+#align laurent_polynomial.T_pow LaurentPolynomial.T_pow
 
+#print LaurentPolynomial.mul_T_assoc /-
 /-- The `simp` version of `mul_assoc`, in the presence of `T`'s. -/
 @[simp]
-theorem mul_t_assoc (f : R[T;T⁻¹]) (m n : ℤ) : f * t m * t n = f * t (m + n) := by
+theorem mul_T_assoc (f : R[T;T⁻¹]) (m n : ℤ) : f * T m * T n = f * T (m + n) := by
   simp [← T_add, mul_assoc]
-#align laurent_polynomial.mul_T_assoc LaurentPolynomial.mul_t_assoc
+#align laurent_polynomial.mul_T_assoc LaurentPolynomial.mul_T_assoc
+-/
 
+/- warning: laurent_polynomial.single_eq_C_mul_T -> LaurentPolynomial.single_eq_C_mul_T is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (n : Int), Eq.{succ u1} (Finsupp.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (Finsupp.single.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) n r) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (n : Int), Eq.{succ u1} (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Finsupp.single.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) n r) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_C_mul_Tₓ'. -/
 @[simp]
-theorem single_eq_c_mul_t (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (c r * t n : R[T;T⁻¹]) := by
+theorem single_eq_C_mul_T (r : R) (n : ℤ) : (single n r : R[T;T⁻¹]) = (C r * T n : R[T;T⁻¹]) := by
   convert single_mul_single.symm <;> simp
-#align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_c_mul_t
-
+#align laurent_polynomial.single_eq_C_mul_T LaurentPolynomial.single_eq_C_mul_T
+
+/- warning: polynomial.to_laurent_C_mul_T -> Polynomial.toLaurent_C_mul_T is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) a) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 n) r)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_Tₓ'. -/
 -- This lemma locks in the right changes and is what Lean proved directly.
 -- The actual `simp`-normal form of a Laurent monomial is `C a * T n`, whenever it can be reached.
 @[simp]
-theorem Polynomial.toLaurent_c_mul_t (n : ℕ) (r : R) :
-    ((Polynomial.monomial n r).toLaurent : R[T;T⁻¹]) = c r * t n :=
-  show mapDomain coe (monomial n r).toFinsupp = (c r * t n : R[T;T⁻¹]) by
+theorem Polynomial.toLaurent_C_mul_T (n : ℕ) (r : R) :
+    ((Polynomial.monomial n r).toLaurent : R[T;T⁻¹]) = C r * T n :=
+  show mapDomain coe (monomial n r).toFinsupp = (C r * T n : R[T;T⁻¹]) by
     rw [to_finsupp_monomial, map_domain_single, single_eq_C_mul_T]
-#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_c_mul_t
-
+#align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_C_mul_T
+
+/- warning: polynomial.to_laurent_C -> Polynomial.toLaurent_C is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r)
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C Polynomial.toLaurent_Cₓ'. -/
 @[simp]
-theorem Polynomial.toLaurent_c (r : R) : (Polynomial.C r).toLaurent = c r :=
+theorem Polynomial.toLaurent_C (r : R) : (Polynomial.C r).toLaurent = C r :=
   by
-  convert Polynomial.toLaurent_c_mul_t 0 r
+  convert Polynomial.toLaurent_C_mul_T 0 r
   simp only [Int.ofNat_zero, T_zero, mul_one]
-#align polynomial.to_laurent_C Polynomial.toLaurent_c
-
+#align polynomial.to_laurent_C Polynomial.toLaurent_C
+
+/- warning: polynomial.to_laurent_X -> Polynomial.toLaurent_X is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (Polynomial.X.{u1} R _inst_1)) (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_X Polynomial.toLaurent_Xₓ'. -/
 @[simp]
-theorem Polynomial.toLaurent_x : (Polynomial.X.toLaurent : R[T;T⁻¹]) = t 1 :=
+theorem Polynomial.toLaurent_X : (Polynomial.X.toLaurent : R[T;T⁻¹]) = T 1 :=
   by
   have : (Polynomial.X : R[X]) = monomial 1 1 := by simp [← C_mul_X_pow_eq_monomial]
-  simp [this, Polynomial.toLaurent_c_mul_t]
-#align polynomial.to_laurent_X Polynomial.toLaurent_x
-
+  simp [this, Polynomial.toLaurent_C_mul_T]
+#align polynomial.to_laurent_X Polynomial.toLaurent_X
+
+/- warning: polynomial.to_laurent_one -> Polynomial.toLaurent_one is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 1 (One.one.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.hasOne.{u1} R _inst_1))))) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 1 (One.one.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 Int.hasZero))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 1 (One.toOfNat1.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.one.{u1} R _inst_1)))) (AddMonoidAlgebra.one.{u1, 0} R Int _inst_1 (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_one Polynomial.toLaurent_oneₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) 1 = 1 :=
   map_one Polynomial.toLaurent
 #align polynomial.to_laurent_one Polynomial.toLaurent_one
 
+/- warning: polynomial.to_laurent_C_mul_eq -> Polynomial.toLaurent_C_mul_eq is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.mul'.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r) f)) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (r : R) (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) f)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eqₓ'. -/
 @[simp]
-theorem Polynomial.toLaurent_c_mul_eq (r : R) (f : R[X]) :
-    (Polynomial.C r * f).toLaurent = c r * f.toLaurent := by
-  simp only [_root_.map_mul, Polynomial.toLaurent_c]
-#align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_c_mul_eq
-
+theorem Polynomial.toLaurent_C_mul_eq (r : R) (f : R[X]) :
+    (Polynomial.C r * f).toLaurent = C r * f.toLaurent := by
+  simp only [_root_.map_mul, Polynomial.toLaurent_C]
+#align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eq
+
+/- warning: polynomial.to_laurent_X_pow -> Polynomial.toLaurent_X_pow is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n)) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_powₓ'. -/
 @[simp]
-theorem Polynomial.toLaurent_x_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = t n := by
-  simp only [map_pow, Polynomial.toLaurent_x, T_pow, mul_one]
-#align polynomial.to_laurent_X_pow Polynomial.toLaurent_x_pow
-
+theorem Polynomial.toLaurent_X_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = T n := by
+  simp only [map_pow, Polynomial.toLaurent_X, T_pow, mul_one]
+#align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_pow
+
+/- warning: polynomial.to_laurent_C_mul_X_pow -> Polynomial.toLaurent_C_mul_X_pow is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.mul'.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Nat) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.mul'.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Polynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (Polynomial.C.{u1} R _inst_1) r) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R _inst_1) Nat (Polynomial.{u1} R _inst_1) (instHPow.{u1, 0} (Polynomial.{u1} R _inst_1) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R _inst_1) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))) (Polynomial.X.{u1} R _inst_1) n))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_C_mul_X_powₓ'. -/
 @[simp]
-theorem Polynomial.toLaurent_c_mul_x_pow (n : ℕ) (r : R) :
-    (Polynomial.C r * X ^ n).toLaurent = c r * t n := by
-  simp only [_root_.map_mul, Polynomial.toLaurent_c, Polynomial.toLaurent_x_pow]
-#align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_c_mul_x_pow
+theorem Polynomial.toLaurent_C_mul_X_pow (n : ℕ) (r : R) :
+    (Polynomial.C r * X ^ n).toLaurent = C r * T n := by
+  simp only [_root_.map_mul, Polynomial.toLaurent_C, Polynomial.toLaurent_X_pow]
+#align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_C_mul_X_pow
 
-instance invertibleT (n : ℤ) : Invertible (t n : R[T;T⁻¹])
+#print LaurentPolynomial.invertibleT /-
+instance invertibleT (n : ℤ) : Invertible (T n : R[T;T⁻¹])
     where
-  invOf := t (-n)
+  invOf := T (-n)
   invOf_mul_self := by rw [← T_add, add_left_neg, T_zero]
   mul_invOf_self := by rw [← T_add, add_right_neg, T_zero]
 #align laurent_polynomial.invertible_T LaurentPolynomial.invertibleT
+-/
 
+#print LaurentPolynomial.invOf_T /-
 @[simp]
-theorem invOf_t (n : ℤ) : ⅟ (t n : R[T;T⁻¹]) = t (-n) :=
+theorem invOf_T (n : ℤ) : ⅟ (T n : R[T;T⁻¹]) = T (-n) :=
   rfl
-#align laurent_polynomial.inv_of_T LaurentPolynomial.invOf_t
+#align laurent_polynomial.inv_of_T LaurentPolynomial.invOf_T
+-/
 
-theorem isUnit_t (n : ℤ) : IsUnit (t n : R[T;T⁻¹]) :=
+#print LaurentPolynomial.isUnit_T /-
+theorem isUnit_T (n : ℤ) : IsUnit (T n : R[T;T⁻¹]) :=
   isUnit_of_invertible _
-#align laurent_polynomial.is_unit_T LaurentPolynomial.isUnit_t
+#align laurent_polynomial.is_unit_T LaurentPolynomial.isUnit_T
+-/
 
+/- warning: laurent_polynomial.induction_on -> LaurentPolynomial.induction_on is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (a : R), M (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) -> (forall {p : LaurentPolynomial.{u1} R _inst_1} {q : LaurentPolynomial.{u1} R _inst_1}, (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toHasAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))) p q))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) -> (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HAdd.hAdd.{0, 0, 0} Int Int Int (instHAdd.{0} Int Int.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n) (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))) -> (M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HSub.hSub.{0, 0, 0} Int Int Int (instHSub.{0} Int Int.hasSub) (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)) (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))))) -> (M p)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (a : R), M (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) -> (forall {p : LaurentPolynomial.{u1} R _inst_1} {q : LaurentPolynomial.{u1} R _inst_1}, (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HAdd.hAdd.{0, 0, 0} Int Int Int (instHAdd.{0} Int Int.instAddInt) (Nat.cast.{0} Int instNatCastInt n) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (forall (n : Nat) (a : R), (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 (HSub.hSub.{0, 0, 0} Int Int Int (instHSub.{0} Int Int.instSubInt) (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n)) (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))))) -> (M p)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on LaurentPolynomial.induction_onₓ'. -/
 @[elab_as_elim]
-protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C : ∀ a, M (c a))
+protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C : ∀ a, M (C a))
     (h_add : ∀ {p q}, M p → M q → M (p + q))
-    (h_C_mul_T : ∀ (n : ℕ) (a : R), M (c a * t n) → M (c a * t (n + 1)))
-    (h_C_mul_T_Z : ∀ (n : ℕ) (a : R), M (c a * t (-n)) → M (c a * t (-n - 1))) : M p :=
+    (h_C_mul_T : ∀ (n : ℕ) (a : R), M (C a * T n) → M (C a * T (n + 1)))
+    (h_C_mul_T_Z : ∀ (n : ℕ) (a : R), M (C a * T (-n)) → M (C a * T (-n - 1))) : M p :=
   by
   have A : ∀ {n : ℤ} {a : R}, M (C a * T n) :=
     by
@@ -283,41 +399,59 @@ protected theorem induction_on {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹]) (h_C
   · exact finsupp.not_mem_support_iff.mp h
 #align laurent_polynomial.induction_on LaurentPolynomial.induction_on
 
+/- warning: laurent_polynomial.induction_on' -> LaurentPolynomial.induction_on' is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (p : LaurentPolynomial.{u1} R _inst_1) (q : LaurentPolynomial.{u1} R _inst_1), (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toHasAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))) p q))) -> (forall (n : Int) (a : R), M (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) -> (M p)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {M : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (p : LaurentPolynomial.{u1} R _inst_1), (forall (p : LaurentPolynomial.{u1} R _inst_1) (q : LaurentPolynomial.{u1} R _inst_1), (M p) -> (M q) -> (M (HAdd.hAdd.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (Distrib.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.instAddInt)))) p q))) -> (forall (n : Int) (a : R), M (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) -> (M p)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on' LaurentPolynomial.induction_on'ₓ'. -/
 /-- To prove something about Laurent polynomials, it suffices to show that
 * the condition is closed under taking sums, and
 * it holds for monomials.
 -/
 @[elab_as_elim]
 protected theorem induction_on' {M : R[T;T⁻¹] → Prop} (p : R[T;T⁻¹])
-    (h_add : ∀ p q, M p → M q → M (p + q)) (h_C_mul_T : ∀ (n : ℤ) (a : R), M (c a * t n)) : M p :=
+    (h_add : ∀ p q, M p → M q → M (p + q)) (h_C_mul_T : ∀ (n : ℤ) (a : R), M (C a * T n)) : M p :=
   by
   refine' p.induction_on (fun a => _) h_add _ _ <;> try exact fun n f _ => h_C_mul_T _ f
   convert h_C_mul_T 0 a
   exact (mul_one _).symm
 #align laurent_polynomial.induction_on' LaurentPolynomial.induction_on'
 
-theorem commute_t (n : ℤ) (f : R[T;T⁻¹]) : Commute (t n) f :=
+#print LaurentPolynomial.commute_T /-
+theorem commute_T (n : ℤ) (f : R[T;T⁻¹]) : Commute (T n) f :=
   f.inductionOn' (fun p q Tp Tq => Commute.add_right Tp Tq) fun m a =>
-    show t n * _ = _
+    show T n * _ = _
       by
       rw [T, T, ← single_eq_C, single_mul_single, single_mul_single, single_mul_single]
       simp [add_comm]
-#align laurent_polynomial.commute_T LaurentPolynomial.commute_t
+#align laurent_polynomial.commute_T LaurentPolynomial.commute_T
+-/
 
+#print LaurentPolynomial.T_mul /-
 @[simp]
-theorem t_mul (n : ℤ) (f : R[T;T⁻¹]) : t n * f = f * t n :=
-  (commute_t n f).Eq
-#align laurent_polynomial.T_mul LaurentPolynomial.t_mul
+theorem T_mul (n : ℤ) (f : R[T;T⁻¹]) : T n * f = f * T n :=
+  (commute_T n f).Eq
+#align laurent_polynomial.T_mul LaurentPolynomial.T_mul
+-/
 
+#print LaurentPolynomial.trunc /-
 /-- `trunc : R[T;T⁻¹] →+ R[X]` maps a Laurent polynomial `f` to the polynomial whose terms of
 nonnegative degree coincide with the ones of `f`.  The terms of negative degree of `f` "vanish".
 `trunc` is a left-inverse to `polynomial.to_laurent`. -/
 def trunc : R[T;T⁻¹] →+ R[X] :=
   (toFinsuppIso R).symm.toAddMonoidHom.comp <| comapDomain.addMonoidHom fun a b => Int.ofNat.inj
 #align laurent_polynomial.trunc LaurentPolynomial.trunc
+-/
 
+/- warning: laurent_polynomial.trunc_C_mul_T -> LaurentPolynomial.trunc_C_mul_T is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} (Polynomial.{u1} R _inst_1) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) n) (coeFn.{succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) (fun (_x : LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) => R -> (Polynomial.{u1} R _inst_1)) (LinearMap.hasCoeToFun.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) r) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) r) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) r) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (Int.decLe (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) n) (FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u1, u1, u1, u1} R R _inst_1 _inst_1 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) R (Polynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u1, u1} R R R (Polynomial.{u1} R _inst_1) _inst_1 _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R _inst_1) (Polynomial.module.{u1, u1} R _inst_1 R _inst_1 (Semiring.toModule.{u1} R _inst_1)) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Polynomial.monomial.{u1} R _inst_1 (Int.toNat n)) r) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) r) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : R) => Polynomial.{u1} R _inst_1) r) (Polynomial.zero.{u1} R _inst_1))))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_Tₓ'. -/
 @[simp]
-theorem trunc_c_mul_t (n : ℤ) (r : R) : trunc (c r * t n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
+theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (monomial n.toNat r) 0 :=
   by
   apply (to_finsupp_iso R).Injective
   rw [← single_eq_C_mul_T, Trunc, AddMonoidHom.coe_comp, Function.comp_apply,
@@ -334,8 +468,14 @@ theorem trunc_c_mul_t (n : ℤ) (r : R) : trunc (c r * t n) = ite (0 ≤ n) (mon
     have := ((not_le.mp n0).trans_le (Int.ofNat_zero_le a)).ne'
     simp only [coeff, comap_domain_apply, Int.ofNat_eq_coe, coeff_zero, single_apply_eq_zero, this,
       IsEmpty.forall_iff]
-#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_c_mul_t
-
+#align laurent_polynomial.trunc_C_mul_T LaurentPolynomial.trunc_C_mul_T
+
+/- warning: laurent_polynomial.left_inverse_trunc_to_laurent -> LaurentPolynomial.leftInverse_trunc_toLaurent is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.LeftInverse.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.LeftInverse.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurentₓ'. -/
 @[simp]
 theorem leftInverse_trunc_toLaurent :
     Function.LeftInverse (trunc : R[T;T⁻¹] → R[X]) Polynomial.toLaurent :=
@@ -344,80 +484,140 @@ theorem leftInverse_trunc_toLaurent :
   · exact fun f g hf hg => by simp only [hf, hg, _root_.map_add]
   ·
     exact fun n r => by
-      simp only [Polynomial.toLaurent_c_mul_t, trunc_C_mul_T, Int.coe_nat_nonneg, Int.toNat_coe_nat,
+      simp only [Polynomial.toLaurent_C_mul_T, trunc_C_mul_T, Int.coe_nat_nonneg, Int.toNat_coe_nat,
         if_true]
 #align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurent
 
+/- warning: polynomial.trunc_to_laurent -> Polynomial.trunc_toLaurent is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} (Polynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) => (LaurentPolynomial.{u1} R _inst_1) -> (Polynomial.{u1} R _inst_1)) (AddMonoidHom.hasCoeToFun.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) f
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (a : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (fun (_x : LaurentPolynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : LaurentPolynomial.{u1} R _inst_1) => Polynomial.{u1} R _inst_1) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddZeroClass.toAdd.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))))))) (AddZeroClass.toAdd.{u1} (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))) (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} (LaurentPolynomial.{u1} R _inst_1) (Polynomial.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (AddMonoid.toAddZeroClass.{u1} (Polynomial.{u1} R _inst_1) (AddMonoidWithOne.toAddMonoid.{u1} (Polynomial.{u1} R _inst_1) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))))))))) (LaurentPolynomial.trunc.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) f
+Case conversion may be inaccurate. Consider using '#align polynomial.trunc_to_laurent Polynomial.trunc_toLaurentₓ'. -/
 @[simp]
 theorem Polynomial.trunc_toLaurent (f : R[X]) : trunc f.toLaurent = f :=
   leftInverse_trunc_toLaurent _
 #align polynomial.trunc_to_laurent Polynomial.trunc_toLaurent
 
+/- warning: polynomial.to_laurent_injective -> Polynomial.toLaurent_injective is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.Injective.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Function.Injective.{succ u1, succ u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_injective Polynomial.toLaurent_injectiveₓ'. -/
 theorem Polynomial.toLaurent_injective :
     Function.Injective (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) :=
   leftInverse_trunc_toLaurent.Injective
 #align polynomial.to_laurent_injective Polynomial.toLaurent_injective
 
+/- warning: polynomial.to_laurent_inj -> Polynomial.toLaurent_inj is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1) (g : Polynomial.{u1} R _inst_1), Iff (Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) g)) (Eq.{succ u1} (Polynomial.{u1} R _inst_1) f g)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1) (g : Polynomial.{u1} R _inst_1), Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) g)) (Eq.{succ u1} (Polynomial.{u1} R _inst_1) f g)
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_inj Polynomial.toLaurent_injₓ'. -/
 @[simp]
 theorem Polynomial.toLaurent_inj (f g : R[X]) : f.toLaurent = g.toLaurent ↔ f = g :=
   ⟨fun h => Polynomial.toLaurent_injective h, congr_arg _⟩
 #align polynomial.to_laurent_inj Polynomial.toLaurent_inj
 
+/- warning: polynomial.to_laurent_ne_zero -> Polynomial.toLaurent_ne_zero is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : Polynomial.{u1} R _inst_1}, Iff (Ne.{succ u1} (Polynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1))))) (Ne.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (LaurentPolynomial.{u1} R _inst_1) (MulZeroClass.toHasZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : Polynomial.{u1} R _inst_1}, Iff (Ne.{succ u1} (Polynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (Polynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.zero.{u1} R _inst_1)))) (Ne.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))))
+Case conversion may be inaccurate. Consider using '#align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zeroₓ'. -/
 theorem Polynomial.toLaurent_ne_zero {f : R[X]} : f ≠ 0 ↔ f.toLaurent ≠ 0 :=
   (map_ne_zero_iff _ Polynomial.toLaurent_injective).symm
 #align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zero
 
-theorem exists_t_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent = f * t n :=
+/- warning: laurent_polynomial.exists_T_pow -> LaurentPolynomial.exists_T_pow is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1), Exists.{1} Nat (fun (n : Nat) => Exists.{succ u1} (Polynomial.{u1} R _inst_1) (fun (f' : Polynomial.{u1} R _inst_1) => Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f') (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) f (LaurentPolynomial.T.{u1} R _inst_1 ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1), Exists.{1} Nat (fun (n : Nat) => Exists.{succ u1} (Polynomial.{u1} R _inst_1) (fun (f' : Polynomial.{u1} R _inst_1) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f') (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f') (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (Nat.cast.{0} Int instNatCastInt n)))))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_T_powₓ'. -/
+theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent = f * T n :=
   by
   apply f.induction_on' _ fun n a => _ <;> clear f
   · rintro f g ⟨m, fn, hf⟩ ⟨n, gn, hg⟩
     refine' ⟨m + n, fn * X ^ n + gn * X ^ m, _⟩
-    simp only [hf, hg, add_mul, add_comm (n : ℤ), map_add, map_mul, Polynomial.toLaurent_x_pow,
+    simp only [hf, hg, add_mul, add_comm (n : ℤ), map_add, map_mul, Polynomial.toLaurent_X_pow,
       mul_T_assoc, Int.ofNat_add]
   · cases' n with n n
     · exact ⟨0, Polynomial.C a * X ^ n, by simp⟩
     · refine' ⟨n + 1, Polynomial.C a, _⟩
-      simp only [Int.negSucc_eq, Polynomial.toLaurent_c, Int.ofNat_succ, mul_T_assoc, add_left_neg,
+      simp only [Int.negSucc_eq, Polynomial.toLaurent_C, Int.ofNat_succ, mul_T_assoc, add_left_neg,
         T_zero, mul_one]
-#align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_t_pow
-
+#align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_T_pow
+
+/- warning: laurent_polynomial.induction_on_mul_T -> LaurentPolynomial.induction_on_mul_T is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (f : LaurentPolynomial.{u1} R _inst_1), (forall {f : Polynomial.{u1} R _inst_1} {n : Nat}, Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.hasNeg ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))) -> (Q f)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop} (f : LaurentPolynomial.{u1} R _inst_1), (forall {f : Polynomial.{u1} R _inst_1} {n : Nat}, Q (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) f) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f) (LaurentPolynomial.T.{u1} R _inst_1 (Neg.neg.{0} Int Int.instNegInt (Nat.cast.{0} Int instNatCastInt n))))) -> (Q f)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.induction_on_mul_T LaurentPolynomial.induction_on_mul_Tₓ'. -/
 /-- This is a version of `exists_T_pow` stated as an induction principle. -/
 @[elab_as_elim]
-theorem induction_on_mul_t {Q : R[T;T⁻¹] → Prop} (f : R[T;T⁻¹])
-    (Qf : ∀ {f : R[X]} {n : ℕ}, Q (f.toLaurent * t (-n))) : Q f :=
+theorem induction_on_mul_T {Q : R[T;T⁻¹] → Prop} (f : R[T;T⁻¹])
+    (Qf : ∀ {f : R[X]} {n : ℕ}, Q (f.toLaurent * T (-n))) : Q f :=
   by
   rcases f.exists_T_pow with ⟨n, f', hf⟩
   rw [← mul_one f, ← T_zero, ← Nat.cast_zero, ← Nat.sub_self n, Nat.cast_sub rfl.le, T_sub, ←
     mul_assoc, ← hf]
   exact Qf
-#align laurent_polynomial.induction_on_mul_T LaurentPolynomial.induction_on_mul_t
-
+#align laurent_polynomial.induction_on_mul_T LaurentPolynomial.induction_on_mul_T
+
+/- warning: laurent_polynomial.reduce_to_polynomial_of_mul_T -> LaurentPolynomial.reduce_to_polynomial_of_mul_T is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1) {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop}, (forall (f : Polynomial.{u1} R _inst_1), Q (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) -> (forall (f : LaurentPolynomial.{u1} R _inst_1), (Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) f (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))))) -> (Q f)) -> (Q f)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : LaurentPolynomial.{u1} R _inst_1) {Q : (LaurentPolynomial.{u1} R _inst_1) -> Prop}, (forall (f : Polynomial.{u1} R _inst_1), Q (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) -> (forall (f : LaurentPolynomial.{u1} R _inst_1), (Q (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) f (LaurentPolynomial.T.{u1} R _inst_1 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1))))) -> (Q f)) -> (Q f)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.reduce_to_polynomial_of_mul_T LaurentPolynomial.reduce_to_polynomial_of_mul_Tₓ'. -/
 /-- Suppose that `Q` is a statement about Laurent polynomials such that
 * `Q` is true on *ordinary* polynomials;
 * `Q (f * T)` implies `Q f`;
 it follow that `Q` is true on all Laurent polynomials. -/
-theorem reduce_to_polynomial_of_mul_t (f : R[T;T⁻¹]) {Q : R[T;T⁻¹] → Prop}
-    (Qf : ∀ f : R[X], Q f.toLaurent) (QT : ∀ f, Q (f * t 1) → Q f) : Q f :=
+theorem reduce_to_polynomial_of_mul_T (f : R[T;T⁻¹]) {Q : R[T;T⁻¹] → Prop}
+    (Qf : ∀ f : R[X], Q f.toLaurent) (QT : ∀ f, Q (f * T 1) → Q f) : Q f :=
   by
-  induction' f using LaurentPolynomial.induction_on_mul_t with f n
+  induction' f using LaurentPolynomial.induction_on_mul_T with f n
   induction' n with n hn
   · simpa only [Int.ofNat_zero, neg_zero, T_zero, mul_one] using Qf _
   · convert QT _ _
     simpa using hn
-#align laurent_polynomial.reduce_to_polynomial_of_mul_T LaurentPolynomial.reduce_to_polynomial_of_mul_t
+#align laurent_polynomial.reduce_to_polynomial_of_mul_T LaurentPolynomial.reduce_to_polynomial_of_mul_T
 
 section Support
 
-theorem support_c_mul_t (a : R) (n : ℤ) : (c a * t n).support ⊆ {n} := by
+/- warning: laurent_polynomial.support_C_mul_T -> LaurentPolynomial.support_C_mul_T is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R) (n : Int), HasSubset.Subset.{0} (Finset.{0} Int) (Finset.hasSubset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.hasSingleton.{0} Int) n)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R) (n : Int), HasSubset.Subset.{0} (Finset.{0} Int) (Finset.instHasSubsetFinset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.support_C_mul_T LaurentPolynomial.support_C_mul_Tₓ'. -/
+theorem support_C_mul_T (a : R) (n : ℤ) : (C a * T n).support ⊆ {n} := by
   simpa only [← single_eq_C_mul_T] using support_single_subset
-#align laurent_polynomial.support_C_mul_T LaurentPolynomial.support_c_mul_t
-
-theorem support_c_mul_t_of_ne_zero {a : R} (a0 : a ≠ 0) (n : ℤ) : (c a * t n).support = {n} :=
+#align laurent_polynomial.support_C_mul_T LaurentPolynomial.support_C_mul_T
+
+/- warning: laurent_polynomial.support_C_mul_T_of_ne_zero -> LaurentPolynomial.support_C_mul_T_of_ne_zero is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (n : Int), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.hasSingleton.{0} Int) n))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (forall (n : Int), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (Finsupp.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (Singleton.singleton.{0, 0} Int (Finset.{0} Int) (Finset.instSingletonFinset.{0} Int) n))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.support_C_mul_T_of_ne_zero LaurentPolynomial.support_C_mul_T_of_ne_zeroₓ'. -/
+theorem support_C_mul_T_of_ne_zero {a : R} (a0 : a ≠ 0) (n : ℤ) : (C a * T n).support = {n} :=
   by
   rw [← single_eq_C_mul_T]
   exact support_single_ne_zero _ a0
-#align laurent_polynomial.support_C_mul_T_of_ne_zero LaurentPolynomial.support_c_mul_t_of_ne_zero
-
+#align laurent_polynomial.support_C_mul_T_of_ne_zero LaurentPolynomial.support_C_mul_T_of_ne_zero
+
+/- warning: laurent_polynomial.to_laurent_support -> LaurentPolynomial.toLaurent_support is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R _inst_1) -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (Finset.map.{0, 0} Nat Int (Nat.castEmbedding.{0} Int (AddGroupWithOne.toAddMonoidWithOne.{0} Int (AddCommGroupWithOne.toAddGroupWithOne.{0} Int (Ring.toAddCommGroupWithOne.{0} Int Int.ring))) (StrictOrderedSemiring.to_charZero.{0} Int (StrictOrderedRing.toStrictOrderedSemiring.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Polynomial.support.{u1} R _inst_1 f))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (f : Polynomial.{u1} R _inst_1), Eq.{1} (Finset.{0} Int) (Finsupp.support.{0, u1} Int R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (fun (_x : Polynomial.{u1} R _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R _inst_1) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R _inst_1) (Polynomial.semiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R _inst_1) f)) (Finset.map.{0, 0} Nat Int (Nat.castEmbedding.{0} Int (AddGroupWithOne.toAddMonoidWithOne.{0} Int (Ring.toAddGroupWithOne.{0} Int Int.instRingInt)) (StrictOrderedSemiring.to_charZero.{0} Int (LinearOrderedSemiring.toStrictOrderedSemiring.{0} Int (LinearOrderedCommSemiring.toLinearOrderedSemiring.{0} Int (LinearOrderedCommRing.toLinearOrderedCommSemiring.{0} Int Int.linearOrderedCommRing))))) (Polynomial.support.{u1} R _inst_1 f))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.to_laurent_support LaurentPolynomial.toLaurent_supportₓ'. -/
 /-- The support of a polynomial `f` is a finset in `ℕ`.  The lemma `to_laurent_support f`
 shows that the support of `f.to_laurent` is the same finset, but viewed in `ℤ` under the natural
 inclusion `ℕ ↪ ℤ`. -/
@@ -435,7 +635,7 @@ theorem toLaurent_support (f : R[X]) : f.toLaurent.support = f.support.map Nat.c
         (by
           simp only [fs, Finset.erase_eq_of_not_mem as, Polynomial.support_erase,
             Finset.erase_insert_eq_erase])
-    rw [← monomial_add_erase f a, Finset.map_insert, ← this, map_add, Polynomial.toLaurent_c_mul_t,
+    rw [← monomial_add_erase f a, Finset.map_insert, ← this, map_add, Polynomial.toLaurent_C_mul_T,
       support_add_eq, Finset.insert_eq]
     · congr
       exact support_C_mul_T_of_ne_zero (polynomial.mem_support_iff.mp (by simp [fs])) _
@@ -447,18 +647,32 @@ end Support
 
 section Degrees
 
+#print LaurentPolynomial.degree /-
 /-- The degree of a Laurent polynomial takes values in `with_bot ℤ`.
 If `f : R[T;T⁻¹]` is a Laurent polynomial, then `f.degree` is the maximum of its support of `f`,
 or `⊥`, if `f = 0`. -/
 def degree (f : R[T;T⁻¹]) : WithBot ℤ :=
   f.support.max
 #align laurent_polynomial.degree LaurentPolynomial.degree
+-/
 
+/- warning: laurent_polynomial.degree_zero -> LaurentPolynomial.degree_zero is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (LaurentPolynomial.{u1} R _inst_1) (MulZeroClass.toHasZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R], Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_zero LaurentPolynomial.degree_zeroₓ'. -/
 @[simp]
 theorem degree_zero : degree (0 : R[T;T⁻¹]) = ⊥ :=
   rfl
 #align laurent_polynomial.degree_zero LaurentPolynomial.degree_zero
 
+/- warning: laurent_polynomial.degree_eq_bot_iff -> LaurentPolynomial.degree_eq_bot_iff is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : LaurentPolynomial.{u1} R _inst_1}, Iff (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 f) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int))) (Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (OfNat.mk.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.zero.{u1} (LaurentPolynomial.{u1} R _inst_1) (MulZeroClass.toHasZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonUnitalNonAssocSemiring.{u1, 0} R Int _inst_1 Int.hasAdd)))))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {f : LaurentPolynomial.{u1} R _inst_1}, Iff (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 f) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int))) (Eq.{succ u1} (LaurentPolynomial.{u1} R _inst_1) f (OfNat.ofNat.{u1} (LaurentPolynomial.{u1} R _inst_1) 0 (Zero.toOfNat0.{u1} (LaurentPolynomial.{u1} R _inst_1) (MonoidWithZero.toZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (Semiring.toMonoidWithZero.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int _inst_1 Int.instAddMonoidInt))))))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_eq_bot_iff LaurentPolynomial.degree_eq_bot_iffₓ'. -/
 @[simp]
 theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 :=
   by
@@ -474,57 +688,97 @@ section ExactDegrees
 
 open Classical
 
+/- warning: laurent_polynomial.degree_C_mul_T -> LaurentPolynomial.degree_C_mul_T is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_C_mul_Tₓ'. -/
 @[simp]
-theorem degree_c_mul_t (n : ℤ) (a : R) (a0 : a ≠ 0) : (c a * t n).degree = n :=
+theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : (C a * T n).degree = n :=
   by
   rw [degree]
   convert Finset.max_singleton
   refine' support_eq_singleton.mpr _
   simp only [← single_eq_C_mul_T, single_eq_same, a0, Ne.def, not_false_iff, eq_self_iff_true,
     and_self_iff]
-#align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_c_mul_t
-
-theorem degree_c_mul_t_ite (n : ℤ) (a : R) : (c a * t n).degree = ite (a = 0) ⊥ n := by
+#align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_C_mul_T
+
+/- warning: laurent_polynomial.degree_C_mul_T_ite -> LaurentPolynomial.degree_C_mul_T_ite is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (WithBot.some.{0} Int n))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_C_mul_T_iteₓ'. -/
+theorem degree_C_mul_T_ite (n : ℤ) (a : R) : (C a * T n).degree = ite (a = 0) ⊥ n := by
   split_ifs with h h <;>
     simp only [h, map_zero, MulZeroClass.zero_mul, degree_zero, degree_C_mul_T, Ne.def,
       not_false_iff]
-#align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_c_mul_t_ite
+#align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_C_mul_T_ite
 
+#print LaurentPolynomial.degree_T /-
 @[simp]
-theorem degree_t [Nontrivial R] (n : ℤ) : (t n : R[T;T⁻¹]).degree = n :=
+theorem degree_T [Nontrivial R] (n : ℤ) : (T n : R[T;T⁻¹]).degree = n :=
   by
   rw [← one_mul (T n), ← map_one C]
   exact degree_C_mul_T n 1 (one_ne_zero : (1 : R) ≠ 0)
-#align laurent_polynomial.degree_T LaurentPolynomial.degree_t
+#align laurent_polynomial.degree_T LaurentPolynomial.degree_T
+-/
 
-theorem degree_c {a : R} (a0 : a ≠ 0) : (c a).degree = 0 :=
+/- warning: laurent_polynomial.degree_C -> LaurentPolynomial.degree_C is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero)))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {a : R}, (Ne.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) -> (Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C LaurentPolynomial.degree_Cₓ'. -/
+theorem degree_C {a : R} (a0 : a ≠ 0) : (C a).degree = 0 :=
   by
   rw [← mul_one (C a), ← T_zero]
   exact degree_C_mul_T 0 a a0
-#align laurent_polynomial.degree_C LaurentPolynomial.degree_c
-
-theorem degree_c_ite (a : R) : (c a).degree = ite (a = 0) ⊥ 0 := by
+#align laurent_polynomial.degree_C LaurentPolynomial.degree_C
+
+/- warning: laurent_polynomial.degree_C_ite -> LaurentPolynomial.degree_C_ite is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.hasBot.{0} Int)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero)))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), Eq.{1} (WithBot.{0} Int) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (ite.{1} (WithBot.{0} Int) (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) (Classical.propDecidable (Eq.{succ u1} R a (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))))) (Bot.bot.{0} (WithBot.{0} Int) (WithBot.bot.{0} Int)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_iteₓ'. -/
+theorem degree_C_ite (a : R) : (C a).degree = ite (a = 0) ⊥ 0 := by
   split_ifs with h h <;> simp only [h, map_zero, degree_zero, degree_C, Ne.def, not_false_iff]
-#align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_c_ite
+#align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_ite
 
 end ExactDegrees
 
 section DegreeBounds
 
-theorem degree_c_mul_t_le (n : ℤ) (a : R) : (c a * t n).degree ≤ n :=
+/- warning: laurent_polynomial.degree_C_mul_T_le -> LaurentPolynomial.degree_C_mul_T_le is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.hasAdd)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (WithBot.{0} Int) (HasLiftT.mk.{1, 1} Int (WithBot.{0} Int) (CoeTCₓ.coe.{1, 1} Int (WithBot.{0} Int) (WithBot.hasCoeT.{0} Int))) n)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (n : Int) (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (LaurentPolynomial.{u1} R _inst_1) (LaurentPolynomial.{u1} R _inst_1) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) a) (AddMonoidAlgebra.hasMul.{u1, 0} R Int _inst_1 Int.instAddInt)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a) (LaurentPolynomial.T.{u1} R _inst_1 n))) (WithBot.some.{0} Int n)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_leₓ'. -/
+theorem degree_C_mul_T_le (n : ℤ) (a : R) : (C a * T n).degree ≤ n :=
   by
   by_cases a0 : a = 0
   · simp only [a0, map_zero, MulZeroClass.zero_mul, degree_zero, bot_le]
   · exact (degree_C_mul_T n a a0).le
-#align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_c_mul_t_le
+#align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_le
 
-theorem degree_t_le (n : ℤ) : (t n : R[T;T⁻¹]).degree ≤ n :=
-  (le_of_eq (by rw [map_one, one_mul])).trans (degree_c_mul_t_le n (1 : R))
-#align laurent_polynomial.degree_T_le LaurentPolynomial.degree_t_le
+#print LaurentPolynomial.degree_T_le /-
+theorem degree_T_le (n : ℤ) : (T n : R[T;T⁻¹]).degree ≤ n :=
+  (le_of_eq (by rw [map_one, one_mul])).trans (degree_C_mul_T_le n (1 : R))
+#align laurent_polynomial.degree_T_le LaurentPolynomial.degree_T_le
+-/
 
-theorem degree_c_le (a : R) : (c a).degree ≤ 0 :=
-  (le_of_eq (by rw [T_zero, mul_one])).trans (degree_c_mul_t_le 0 a)
-#align laurent_polynomial.degree_C_le LaurentPolynomial.degree_c_le
+/- warning: laurent_polynomial.degree_C_le -> LaurentPolynomial.degree_C_le is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))) (LaurentPolynomial.degree.{u1} R _inst_1 (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => R -> (LaurentPolynomial.{u1} R _inst_1)) (RingHom.hasCoeToFun.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (OfNat.mk.{0} (WithBot.{0} Int) 0 (Zero.zero.{0} (WithBot.{0} Int) (WithBot.hasZero.{0} Int Int.hasZero))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] (a : R), LE.le.{0} (WithBot.{0} Int) (Preorder.toLE.{0} (WithBot.{0} Int) (WithBot.preorder.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (LaurentPolynomial.degree.{u1} R _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LaurentPolynomial.{u1} R _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} R (LaurentPolynomial.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_1) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int _inst_1 (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (LaurentPolynomial.C.{u1} R _inst_1) a)) (OfNat.ofNat.{0} (WithBot.{0} Int) 0 (Zero.toOfNat0.{0} (WithBot.{0} Int) (WithBot.zero.{0} Int (CommMonoidWithZero.toZero.{0} Int (CancelCommMonoidWithZero.toCommMonoidWithZero.{0} Int (IsDomain.toCancelCommMonoidWithZero.{0} Int Int.instCommSemiringInt (LinearOrderedRing.isDomain.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.degree_C_le LaurentPolynomial.degree_C_leₓ'. -/
+theorem degree_C_le (a : R) : (C a).degree ≤ 0 :=
+  (le_of_eq (by rw [T_zero, mul_one])).trans (degree_C_mul_T_le 0 a)
+#align laurent_polynomial.degree_C_le LaurentPolynomial.degree_C_le
 
 end DegreeBounds
 
@@ -542,32 +796,47 @@ section CommSemiring
 
 variable [CommSemiring R]
 
+#print LaurentPolynomial.algebraPolynomial /-
 instance algebraPolynomial (R : Type _) [CommSemiring R] : Algebra R[X] R[T;T⁻¹] :=
   { Polynomial.toLaurent with
     commutes' := fun f l => by simp [mul_comm]
     smul_def' := fun f l => rfl }
 #align laurent_polynomial.algebra_polynomial LaurentPolynomial.algebraPolynomial
+-/
 
-theorem algebraMap_x_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = t n :=
-  Polynomial.toLaurent_x_pow n
-#align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_x_pow
-
+/- warning: laurent_polynomial.algebra_map_X_pow -> LaurentPolynomial.algebraMap_X_pow is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (n : Nat), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (LaurentPolynomial.T.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (Polynomial.X.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) n)) (LaurentPolynomial.T.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) (Nat.cast.{0} Int instNatCastInt n))
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_powₓ'. -/
+theorem algebraMap_X_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = T n :=
+  Polynomial.toLaurent_X_pow n
+#align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_X_pow
+
+/- warning: laurent_polynomial.algebra_map_eq_to_laurent -> LaurentPolynomial.algebraMap_eq_toLaurent is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (f : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)), Eq.{succ u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.addMonoid) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) f) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (fun (_x : RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid))) (Polynomial.toLaurent.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] (f : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt)))))) (algebraMap.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.commSemiring.{u1} R _inst_1) (AddMonoidAlgebra.semiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) Int.instAddMonoidInt) (LaurentPolynomial.algebraPolynomial.{u1} R _inst_1)) f) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (_x : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (RingHom.instRingHomClassRingHom.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LaurentPolynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddMonoidAlgebra.nonAssocSemiring.{u1, 0} R Int (CommSemiring.toSemiring.{u1} R _inst_1) (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)))))) (Polynomial.toLaurent.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) f)
+Case conversion may be inaccurate. Consider using '#align laurent_polynomial.algebra_map_eq_to_laurent LaurentPolynomial.algebraMap_eq_toLaurentₓ'. -/
 @[simp]
 theorem algebraMap_eq_toLaurent (f : R[X]) : algebraMap R[X] R[T;T⁻¹] f = f.toLaurent :=
   rfl
 #align laurent_polynomial.algebra_map_eq_to_laurent LaurentPolynomial.algebraMap_eq_toLaurent
 
+#print LaurentPolynomial.isLocalization /-
 theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T;T⁻¹] :=
   { map_units := fun t => by
       cases' t with t ht
       rcases submonoid.mem_closure_singleton.mp ht with ⟨n, rfl⟩
-      simp only [is_unit_T n, [anonymous], algebra_map_eq_to_laurent, Polynomial.toLaurent_x_pow]
+      simp only [is_unit_T n, [anonymous], algebra_map_eq_to_laurent, Polynomial.toLaurent_X_pow]
     surj := fun f =>
       by
-      induction' f using LaurentPolynomial.induction_on_mul_t with f n
+      induction' f using LaurentPolynomial.induction_on_mul_T with f n
       have := (Submonoid.closure ({X} : Set R[X])).pow_mem Submonoid.mem_closure_singleton_self n
       refine' ⟨(f, ⟨_, this⟩), _⟩
-      simp only [[anonymous], algebra_map_eq_to_laurent, Polynomial.toLaurent_x_pow, mul_T_assoc,
+      simp only [[anonymous], algebra_map_eq_to_laurent, Polynomial.toLaurent_X_pow, mul_T_assoc,
         add_left_neg, T_zero, mul_one]
     eq_iff_exists := fun f g =>
       by
@@ -579,6 +848,7 @@ theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T
         rcases submonoid.mem_closure_singleton.mp hX with ⟨n, rfl⟩
         exact mul_X_pow_injective n h }
 #align laurent_polynomial.is_localization LaurentPolynomial.isLocalization
+-/
 
 end CommSemiring
 
Diff
@@ -486,7 +486,8 @@ theorem degree_c_mul_t (n : ℤ) (a : R) (a0 : a ≠ 0) : (c a * t n).degree = n
 
 theorem degree_c_mul_t_ite (n : ℤ) (a : R) : (c a * t n).degree = ite (a = 0) ⊥ n := by
   split_ifs with h h <;>
-    simp only [h, map_zero, zero_mul, degree_zero, degree_C_mul_T, Ne.def, not_false_iff]
+    simp only [h, map_zero, MulZeroClass.zero_mul, degree_zero, degree_C_mul_T, Ne.def,
+      not_false_iff]
 #align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_c_mul_t_ite
 
 @[simp]
@@ -513,7 +514,7 @@ section DegreeBounds
 theorem degree_c_mul_t_le (n : ℤ) (a : R) : (c a * t n).degree ≤ n :=
   by
   by_cases a0 : a = 0
-  · simp only [a0, map_zero, zero_mul, degree_zero, bot_le]
+  · simp only [a0, map_zero, MulZeroClass.zero_mul, degree_zero, bot_le]
   · exact (degree_C_mul_T n a a0).le
 #align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_c_mul_t_le
 
Diff
@@ -203,16 +203,16 @@ theorem Polynomial.toLaurent_c_mul_t (n : ℕ) (r : R) :
 #align polynomial.to_laurent_C_mul_T Polynomial.toLaurent_c_mul_t
 
 @[simp]
-theorem Polynomial.toLaurent_c (r : R) : (Polynomial.c r).toLaurent = c r :=
+theorem Polynomial.toLaurent_c (r : R) : (Polynomial.C r).toLaurent = c r :=
   by
   convert Polynomial.toLaurent_c_mul_t 0 r
   simp only [Int.ofNat_zero, T_zero, mul_one]
 #align polynomial.to_laurent_C Polynomial.toLaurent_c
 
 @[simp]
-theorem Polynomial.toLaurent_x : (Polynomial.x.toLaurent : R[T;T⁻¹]) = t 1 :=
+theorem Polynomial.toLaurent_x : (Polynomial.X.toLaurent : R[T;T⁻¹]) = t 1 :=
   by
-  have : (Polynomial.x : R[X]) = monomial 1 1 := by simp [← C_mul_X_pow_eq_monomial]
+  have : (Polynomial.X : R[X]) = monomial 1 1 := by simp [← C_mul_X_pow_eq_monomial]
   simp [this, Polynomial.toLaurent_c_mul_t]
 #align polynomial.to_laurent_X Polynomial.toLaurent_x
 
@@ -223,18 +223,18 @@ theorem Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹])
 
 @[simp]
 theorem Polynomial.toLaurent_c_mul_eq (r : R) (f : R[X]) :
-    (Polynomial.c r * f).toLaurent = c r * f.toLaurent := by
+    (Polynomial.C r * f).toLaurent = c r * f.toLaurent := by
   simp only [_root_.map_mul, Polynomial.toLaurent_c]
 #align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_c_mul_eq
 
 @[simp]
-theorem Polynomial.toLaurent_x_pow (n : ℕ) : (x ^ n : R[X]).toLaurent = t n := by
+theorem Polynomial.toLaurent_x_pow (n : ℕ) : (X ^ n : R[X]).toLaurent = t n := by
   simp only [map_pow, Polynomial.toLaurent_x, T_pow, mul_one]
 #align polynomial.to_laurent_X_pow Polynomial.toLaurent_x_pow
 
 @[simp]
 theorem Polynomial.toLaurent_c_mul_x_pow (n : ℕ) (r : R) :
-    (Polynomial.c r * x ^ n).toLaurent = c r * t n := by
+    (Polynomial.C r * X ^ n).toLaurent = c r * t n := by
   simp only [_root_.map_mul, Polynomial.toLaurent_c, Polynomial.toLaurent_x_pow]
 #align polynomial.to_laurent_C_mul_X_pow Polynomial.toLaurent_c_mul_x_pow
 
@@ -375,8 +375,8 @@ theorem exists_t_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), f'.toLaurent
     simp only [hf, hg, add_mul, add_comm (n : ℤ), map_add, map_mul, Polynomial.toLaurent_x_pow,
       mul_T_assoc, Int.ofNat_add]
   · cases' n with n n
-    · exact ⟨0, Polynomial.c a * X ^ n, by simp⟩
-    · refine' ⟨n + 1, Polynomial.c a, _⟩
+    · exact ⟨0, Polynomial.C a * X ^ n, by simp⟩
+    · refine' ⟨n + 1, Polynomial.C a, _⟩
       simp only [Int.negSucc_eq, Polynomial.toLaurent_c, Int.ofNat_succ, mul_T_assoc, add_left_neg,
         T_zero, mul_one]
 #align laurent_polynomial.exists_T_pow LaurentPolynomial.exists_t_pow
@@ -547,7 +547,7 @@ instance algebraPolynomial (R : Type _) [CommSemiring R] : Algebra R[X] R[T;T⁻
     smul_def' := fun f l => rfl }
 #align laurent_polynomial.algebra_polynomial LaurentPolynomial.algebraPolynomial
 
-theorem algebraMap_x_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (x ^ n) = t n :=
+theorem algebraMap_x_pow (n : ℕ) : algebraMap R[X] R[T;T⁻¹] (X ^ n) = t n :=
   Polynomial.toLaurent_x_pow n
 #align laurent_polynomial.algebra_map_X_pow LaurentPolynomial.algebraMap_x_pow
 
@@ -556,7 +556,7 @@ theorem algebraMap_eq_toLaurent (f : R[X]) : algebraMap R[X] R[T;T⁻¹] f = f.t
   rfl
 #align laurent_polynomial.algebra_map_eq_to_laurent LaurentPolynomial.algebraMap_eq_toLaurent
 
-theorem isLocalization : IsLocalization (Submonoid.closure ({x} : Set R[X])) R[T;T⁻¹] :=
+theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T;T⁻¹] :=
   { map_units := fun t => by
       cases' t with t ht
       rcases submonoid.mem_closure_singleton.mp ht with ⟨n, rfl⟩

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) 2022 Damiano Testa. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Damiano Testa
 -/
-import Mathlib.Data.Polynomial.AlgebraMap
-import Mathlib.Data.Polynomial.Reverse
-import Mathlib.Data.Polynomial.Inductions
+import Mathlib.Algebra.Polynomial.AlgebraMap
+import Mathlib.Algebra.Polynomial.Reverse
+import Mathlib.Algebra.Polynomial.Inductions
 import Mathlib.RingTheory.Localization.Basic
 
 #align_import data.polynomial.laurent from "leanprover-community/mathlib"@"831c494092374cfe9f50591ed0ac81a25efc5b86"
chore(Data/Int): Rename coe_nat to natCast (#11637)

Reduce the diff of #11499

Renames

All in the Int namespace:

  • ofNat_eq_castofNat_eq_natCast
  • cast_eq_cast_iff_NatnatCast_inj
  • natCast_eq_ofNatofNat_eq_natCast
  • coe_nat_subnatCast_sub
  • coe_nat_nonnegnatCast_nonneg
  • sign_coe_add_onesign_natCast_add_one
  • nat_succ_eq_int_succnatCast_succ
  • succ_neg_nat_succsucc_neg_natCast_succ
  • coe_pred_of_posnatCast_pred_of_pos
  • coe_nat_divnatCast_div
  • coe_nat_edivnatCast_ediv
  • sign_coe_nat_of_nonzerosign_natCast_of_ne_zero
  • toNat_coe_nattoNat_natCast
  • toNat_coe_nat_add_onetoNat_natCast_add_one
  • coe_nat_dvdnatCast_dvd_natCast
  • coe_nat_dvd_leftnatCast_dvd
  • coe_nat_dvd_rightdvd_natCast
  • le_coe_nat_suble_natCast_sub
  • succ_coe_nat_possucc_natCast_pos
  • coe_nat_modEq_iffnatCast_modEq_iff
  • coe_natAbsnatCast_natAbs
  • coe_nat_eq_zeronatCast_eq_zero
  • coe_nat_ne_zeronatCast_ne_zero
  • coe_nat_ne_zero_iff_posnatCast_ne_zero_iff_pos
  • abs_coe_natabs_natCast
  • coe_nat_nonpos_iffnatCast_nonpos_iff

Also rename Nat.coe_nat_dvd to Nat.cast_dvd_cast

Diff
@@ -379,7 +379,7 @@ theorem leftInverse_trunc_toLaurent :
   · intro f g hf hg
     simp only [hf, hg, _root_.map_add]
   · intro n r
-    simp only [Polynomial.toLaurent_C_mul_T, trunc_C_mul_T, Int.coe_nat_nonneg, Int.toNat_coe_nat,
+    simp only [Polynomial.toLaurent_C_mul_T, trunc_C_mul_T, Int.natCast_nonneg, Int.toNat_natCast,
       if_true]
 #align laurent_polynomial.left_inverse_trunc_to_laurent LaurentPolynomial.leftInverse_trunc_toLaurent
 
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11801)
Diff
@@ -503,7 +503,7 @@ theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 := by
   rw [degree, Finset.max_eq_sup_withBot] at h
   ext n
   refine' not_not.mp fun f0 => _
-  simp_rw [Finset.sup_eq_bot_iff, Finsupp.mem_support_iff, Ne.def, WithBot.coe_ne_bot] at h
+  simp_rw [Finset.sup_eq_bot_iff, Finsupp.mem_support_iff, Ne, WithBot.coe_ne_bot] at h
   exact h n f0
 #align laurent_polynomial.degree_eq_bot_iff LaurentPolynomial.degree_eq_bot_iff
 
@@ -516,7 +516,7 @@ theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : degree (C a * T n) = n
   have : Finsupp.support (C a * T n) = {n} := by
     refine' support_eq_singleton.mpr _
     rw [← single_eq_C_mul_T]
-    simp only [single_eq_same, a0, Ne.def, not_false_iff, eq_self_iff_true, and_self_iff]
+    simp only [single_eq_same, a0, Ne, not_false_iff, eq_self_iff_true, and_self_iff]
   rw [this]
   exact Finset.max_singleton
 set_option linter.uppercaseLean3 false in
@@ -525,7 +525,7 @@ set_option linter.uppercaseLean3 false in
 theorem degree_C_mul_T_ite [DecidableEq R] (n : ℤ) (a : R) :
     degree (C a * T n) = if a = 0 then ⊥ else ↑n := by
   split_ifs with h <;>
-    simp only [h, map_zero, zero_mul, degree_zero, degree_C_mul_T, Ne.def,
+    simp only [h, map_zero, zero_mul, degree_zero, degree_C_mul_T, Ne,
       not_false_iff]
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_C_mul_T_ite
@@ -544,7 +544,7 @@ set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C LaurentPolynomial.degree_C
 
 theorem degree_C_ite [DecidableEq R] (a : R) : (C a).degree = if a = 0 then ⊥ else 0 := by
-  split_ifs with h <;> simp only [h, map_zero, degree_zero, degree_C, Ne.def, not_false_iff]
+  split_ifs with h <;> simp only [h, map_zero, degree_zero, degree_C, Ne, not_false_iff]
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_ite
 
fix(Polynomial/Laurent): replace Lean 3 syntax in comments (#11407)

Co-authored-by: damiano <adomani@gmail.com>

Diff
@@ -56,12 +56,11 @@ Lots is missing!
 -- A "better" definition of `trunc` would be as an `R`-linear map.  This works:
 --  ```
 --  def trunc : R[T;T⁻¹] →[R] R[X] :=
---  begin
---    refine (_ : R[ℕ] →[R] R[X]).comp _,
---    { exact ⟨(toFinsuppIso R).symm, by simp⟩ },
---    { refine ⟨λ r, comapDomain _ r (Set.injOn_of_injective (λ a b ab, Int.ofNat.inj ab) _), _⟩,
---      exact λ r f, comapDomain_smul _ _ _ }
---  end
+--    refine (?_ : R[ℕ] →[R] R[X]).comp ?_
+--    · exact ⟨(toFinsuppIso R).symm, by simp⟩
+--    · refine ⟨fun r ↦ comapDomain _ r
+--        (Set.injOn_of_injective (fun _ _ ↦ Int.ofNat.inj) _), ?_⟩
+--      exact fun r f ↦ comapDomain_smul ..
 --  ```
 --  but it would make sense to bundle the maps better, for a smoother user experience.
 --  I (DT) did not have the strength to embark on this (possibly short!) journey, after getting to
chore: classify was rw porting notes (#10692)

Classifies by adding issue number (#10691) to porting notes claiming was rw.

Diff
@@ -356,7 +356,7 @@ theorem trunc_C_mul_T (n : ℤ) (r : R) : trunc (C r * T n) = ite (0 ≤ n) (mon
   have : Function.Injective Int.ofNat := fun x y h => Int.ofNat_inj.mp h
   apply (toFinsuppIso R).injective
   rw [← single_eq_C_mul_T, trunc, AddMonoidHom.coe_comp, Function.comp_apply]
-  -- Porting note: was `rw`
+  -- Porting note (#10691): was `rw`
   erw [comapDomain.addMonoidHom_apply this]
   rw [toFinsuppIso_apply]
   -- Porting note: rewrote proof below relative to mathlib3.
chore: classify simp can do this porting notes (#10619)

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

Diff
@@ -243,25 +243,25 @@ theorem _root_.Polynomial.toLaurent_X : (toLaurent Polynomial.X : R[T;T⁻¹]) =
 set_option linter.uppercaseLean3 false in
 #align polynomial.to_laurent_X Polynomial.toLaurent_X
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 theorem _root_.Polynomial.toLaurent_one : (Polynomial.toLaurent : R[X] → R[T;T⁻¹]) 1 = 1 :=
   map_one Polynomial.toLaurent
 #align polynomial.to_laurent_one Polynomial.toLaurent_one
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 theorem _root_.Polynomial.toLaurent_C_mul_eq (r : R) (f : R[X]) :
     toLaurent (Polynomial.C r * f) = C r * toLaurent f := by
   simp only [_root_.map_mul, Polynomial.toLaurent_C]
 set_option linter.uppercaseLean3 false in
 #align polynomial.to_laurent_C_mul_eq Polynomial.toLaurent_C_mul_eq
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 theorem _root_.Polynomial.toLaurent_X_pow (n : ℕ) : toLaurent (X ^ n : R[X]) = T n := by
   simp only [map_pow, Polynomial.toLaurent_X, T_pow, mul_one]
 set_option linter.uppercaseLean3 false in
 #align polynomial.to_laurent_X_pow Polynomial.toLaurent_X_pow
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 theorem _root_.Polynomial.toLaurent_C_mul_X_pow (n : ℕ) (r : R) :
     toLaurent (Polynomial.C r * X ^ n) = C r * T n := by
   simp only [_root_.map_mul, Polynomial.toLaurent_C, Polynomial.toLaurent_X_pow]
chore: replace IsLocalization.eq_iff_exists' by exists_of_eq (#8335)

The other direction is a consequence of IsLocalization.map_units.

Also do the same for LocalizationMap and IsLocalizedModule.

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

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

Diff
@@ -613,14 +613,10 @@ theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T
       refine' ⟨(f, ⟨_, this⟩), _⟩
       simp only [algebraMap_eq_toLaurent, Polynomial.toLaurent_X_pow, mul_T_assoc,
         add_left_neg, T_zero, mul_one]
-    eq_iff_exists' := fun {f g} => by
+    exists_of_eq := fun {f g} => by
       rw [algebraMap_eq_toLaurent, algebraMap_eq_toLaurent, Polynomial.toLaurent_inj]
-      refine' ⟨_, _⟩
-      · rintro rfl
-        exact ⟨1, rfl⟩
-      · rintro ⟨⟨h, hX⟩, h⟩
-        rcases Submonoid.mem_closure_singleton.mp hX with ⟨n, rfl⟩
-        exact (isRegular_X_pow n).left h }
+      rintro rfl
+      exact ⟨1, rfl⟩ }
 #align laurent_polynomial.is_localization LaurentPolynomial.isLocalization
 
 end CommSemiring
refactor(Data/Polynomial): remove open Classical (#7706)

This doesn't change any polynomial operations, but:

  • Makes some Decidable values computable (otherwise, they're pointless!)
  • Add a few missing arguments to lemmas here and there to make them more general

This is exhaustive, within the directories it touches.

Once again, the use of letI := Classical.decEq R instead of classical here is because of the weird style of proofs in these files, where if is preferred to by_cases.

Diff
@@ -510,8 +510,6 @@ theorem degree_eq_bot_iff {f : R[T;T⁻¹]} : f.degree = ⊥ ↔ f = 0 := by
 
 section ExactDegrees
 
-open Classical
-
 @[simp]
 theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : degree (C a * T n) = n := by
   rw [degree]
@@ -525,7 +523,8 @@ theorem degree_C_mul_T (n : ℤ) (a : R) (a0 : a ≠ 0) : degree (C a * T n) = n
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C_mul_T LaurentPolynomial.degree_C_mul_T
 
-theorem degree_C_mul_T_ite (n : ℤ) (a : R) : degree (C a * T n) = ite (a = 0) ⊥ ↑n := by
+theorem degree_C_mul_T_ite [DecidableEq R] (n : ℤ) (a : R) :
+    degree (C a * T n) = if a = 0 then ⊥ else ↑n := by
   split_ifs with h <;>
     simp only [h, map_zero, zero_mul, degree_zero, degree_C_mul_T, Ne.def,
       not_false_iff]
@@ -545,7 +544,7 @@ theorem degree_C {a : R} (a0 : a ≠ 0) : (C a).degree = 0 := by
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C LaurentPolynomial.degree_C
 
-theorem degree_C_ite (a : R) : (C a).degree = ite (a = 0) ⊥ 0 := by
+theorem degree_C_ite [DecidableEq R] (a : R) : (C a).degree = if a = 0 then ⊥ else 0 := by
   split_ifs with h <;> simp only [h, map_zero, degree_zero, degree_C, Ne.def, not_false_iff]
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C_ite LaurentPolynomial.degree_C_ite
feat(AddMonoidAlgebra*): add notation R[A] for addMonoidAlgebra R A (#7203)

Introduce the notation R[A] for AddMonoidAlgebra R A. This is to align Mathlibs notation with the standard notation for group ring.

The notation is scoped in AddMonoidAlgebra and there is no analogous notation for MonoidAlgebra.

I only used the notation for single-character R and As and only in the range [a-zA-Z].

The extra lines are all in Mathlib/Algebra/MonoidAlgebra/Basic.lean. They are accounted for by extra text in the doc-module and the actual notation.

Affected files:

Counterexamples/ZeroDivisorsInAddMonoidAlgebras
Algebra/AlgebraicCard
Algebra/MonoidAlgebra/Basic
Algebra/MonoidAlgebra/Degree
Algebra/MonoidAlgebra/Division
Algebra/MonoidAlgebra/Grading
Algebra/MonoidAlgebra/NoZeroDivisors
Algebra/MonoidAlgebra/Support
Data/Polynomial/AlgebraMap
Data/Polynomial/Basic
Data/Polynomial/Eval
Data/Polynomial/Laurent
RingTheory/FiniteType
Diff
@@ -57,7 +57,7 @@ Lots is missing!
 --  ```
 --  def trunc : R[T;T⁻¹] →[R] R[X] :=
 --  begin
---    refine (_ : AddMonoidAlgebra R ℕ →[R] R[X]).comp _,
+--    refine (_ : R[ℕ] →[R] R[X]).comp _,
 --    { exact ⟨(toFinsuppIso R).symm, by simp⟩ },
 --    { refine ⟨λ r, comapDomain _ r (Set.injOn_of_injective (λ a b ab, Int.ofNat.inj ab) _), _⟩,
 --      exact λ r f, comapDomain_smul _ _ _ }
perf: remove overspecified fields (#6965)

This removes redundant field values of the form add := add for smaller terms and less unfolding during unification.

A list of all files containing a structure instance of the form { a1, ... with x1 := val, ... } where some xi is a field of some aj was generated by modifying the structure instance elaboration algorithm to print such overlaps to stdout in a custom toolchain.

Using that toolchain, I went through each file on the list and attempted to remove algebraic fields that overlapped and were redundant, eg add := add and not toFun (though some other ones did creep in). If things broke (which was the case in a couple of cases), I did not push further and reverted.

It is possible that pushing harder and trying to remove all redundant overlaps will yield further improvements.

Diff
@@ -579,7 +579,7 @@ instance : Module R[X] R[T;T⁻¹] :=
   Module.compHom _ Polynomial.toLaurent
 
 instance (R : Type*) [Semiring R] : IsScalarTower R[X] R[X] R[T;T⁻¹] where
-  smul_assoc x y z := by simp only [(· • ·), SMul.smul, SMul.comp.smul, map_mul, mul_assoc]
+  smul_assoc x y z := by dsimp; simp_rw [MulAction.mul_smul]
 
 end Semiring
 
feat: characterise the reverse of the characteristic polynomial of a matrix (#6561)
Diff
@@ -4,6 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Damiano Testa
 -/
 import Mathlib.Data.Polynomial.AlgebraMap
+import Mathlib.Data.Polynomial.Reverse
+import Mathlib.Data.Polynomial.Inductions
 import Mathlib.RingTheory.Localization.Basic
 
 #align_import data.polynomial.laurent from "leanprover-community/mathlib"@"831c494092374cfe9f50591ed0ac81a25efc5b86"
@@ -71,9 +73,7 @@ Lots is missing!
 -/
 
 
-open Polynomial BigOperators
-
-open Polynomial AddMonoidAlgebra Finsupp
+open Polynomial BigOperators Function AddMonoidAlgebra Finsupp
 
 noncomputable section
 
@@ -86,7 +86,10 @@ abbrev LaurentPolynomial (R : Type*) [Semiring R] :=
   AddMonoidAlgebra R ℤ
 #align laurent_polynomial LaurentPolynomial
 
-local notation:9000 R "[T;T⁻¹]" => LaurentPolynomial R
+@[nolint docBlame]
+scoped[LaurentPolynomial] notation:9000 R "[T;T⁻¹]" => LaurentPolynomial R
+
+open LaurentPolynomial
 
 -- Porting note: `ext` no longer applies `Finsupp.ext` automatically
 @[ext]
@@ -113,7 +116,10 @@ def Polynomial.toLaurentAlg [CommSemiring R] : R[X] →ₐ[R] R[T;T⁻¹] := by
   exact mapDomainAlgHom R R Int.ofNatHom
 #align polynomial.to_laurent_alg Polynomial.toLaurentAlg
 
-@[simp]
+@[simp] lemma Polynomial.coe_toLaurentAlg [CommSemiring R] :
+    (toLaurentAlg : R[X] → R[T;T⁻¹]) = toLaurent :=
+  rfl
+
 theorem Polynomial.toLaurentAlg_apply [CommSemiring R] (f : R[X]) : toLaurentAlg f = toLaurent f :=
   rfl
 #align polynomial.to_laurent_alg_apply Polynomial.toLaurentAlg_apply
@@ -156,6 +162,9 @@ theorem single_eq_C (r : R) : Finsupp.single 0 r = C r := rfl
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.single_eq_C LaurentPolynomial.single_eq_C
 
+@[simp] lemma C_apply (t : R) (n : ℤ) : C t n = if n = 0 then t else 0 := by
+  rw [← single_eq_C, Finsupp.single_apply]; aesop
+
 /-- The function `n ↦ T ^ n`, implemented as a sequence `ℤ → R[T;T⁻¹]`.
 
 Using directly `T ^ n` does not work, since we want the exponents to be of Type `ℤ` and there
@@ -166,6 +175,9 @@ def T (n : ℤ) : R[T;T⁻¹] :=
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.T LaurentPolynomial.T
 
+@[simp] lemma T_apply (m n : ℤ) : (T n : R[T;T⁻¹]) m = if n = m then 1 else 0 :=
+  Finsupp.single_apply
+
 @[simp]
 theorem T_zero : (T 0 : R[T;T⁻¹]) = 1 :=
   rfl
@@ -220,6 +232,10 @@ theorem _root_.Polynomial.toLaurent_C (r : R) : toLaurent (Polynomial.C r) = C r
 set_option linter.uppercaseLean3 false in
 #align polynomial.to_laurent_C Polynomial.toLaurent_C
 
+@[simp]
+theorem _root_.Polynomial.toLaurent_comp_C : toLaurent (R := R) ∘ Polynomial.C = C :=
+  funext Polynomial.toLaurent_C
+
 @[simp]
 theorem _root_.Polynomial.toLaurent_X : (toLaurent Polynomial.X : R[T;T⁻¹]) = T 1 := by
   have : (Polynomial.X : R[X]) = monomial 1 1 := by simp [← C_mul_X_pow_eq_monomial]
@@ -610,4 +626,34 @@ theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T
 
 end CommSemiring
 
+section Inversion
+
+variable {R : Type*} [CommSemiring R]
+
+/-- The map which substitutes `T ↦ T⁻¹` into a Laurent polynomial. -/
+def invert : R[T;T⁻¹] ≃ₐ[R] R[T;T⁻¹] := AddMonoidAlgebra.domCongr R R <| AddEquiv.neg _
+
+@[simp] lemma invert_T (n : ℤ) : invert (T n : R[T;T⁻¹]) = T (-n) :=
+  AddMonoidAlgebra.domCongr_single _ _ _ _ _
+
+@[simp] lemma invert_apply (f : R[T;T⁻¹]) (n : ℤ) : invert f n = f (-n) := rfl
+
+@[simp] lemma invert_comp_C : invert ∘ (@C R _) = C := by ext; simp
+
+@[simp] lemma invert_C (t : R) : invert (C t) = C t := by ext; simp
+
+lemma involutive_invert : Involutive (invert (R := R)) := fun _ ↦ by ext; simp
+
+@[simp] lemma invert_symm : (invert (R := R)).symm = invert := rfl
+
+lemma toLaurent_reverse (p : R[X]) :
+    toLaurent p.reverse = invert (toLaurent p) * (T p.natDegree) := by
+  nontriviality R
+  induction' p using Polynomial.recOnHorner with p t _ _ ih p hp ih
+  · simp
+  · simp [add_mul, ← ih]
+  · simpa [natDegree_mul_X hp]
+
+end Inversion
+
 end LaurentPolynomial
chore: drop MulZeroClass. in mul_zero/zero_mul (#6682)

Search&replace MulZeroClass.mul_zero -> mul_zero, MulZeroClass.zero_mul -> zero_mul.

These were introduced by Mathport, as the full name of mul_zero is actually MulZeroClass.mul_zero (it's exported with the short name).

Diff
@@ -511,7 +511,7 @@ set_option linter.uppercaseLean3 false in
 
 theorem degree_C_mul_T_ite (n : ℤ) (a : R) : degree (C a * T n) = ite (a = 0) ⊥ ↑n := by
   split_ifs with h <;>
-    simp only [h, map_zero, MulZeroClass.zero_mul, degree_zero, degree_C_mul_T, Ne.def,
+    simp only [h, map_zero, zero_mul, degree_zero, degree_C_mul_T, Ne.def,
       not_false_iff]
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C_mul_T_ite LaurentPolynomial.degree_C_mul_T_ite
@@ -540,7 +540,7 @@ section DegreeBounds
 
 theorem degree_C_mul_T_le (n : ℤ) (a : R) : degree (C a * T n) ≤ n := by
   by_cases a0 : a = 0
-  · simp only [a0, map_zero, MulZeroClass.zero_mul, degree_zero, bot_le]
+  · simp only [a0, map_zero, zero_mul, degree_zero, bot_le]
   · exact (degree_C_mul_T n a a0).le
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.degree_C_mul_T_le LaurentPolynomial.degree_C_mul_T_le
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
@@ -77,12 +77,12 @@ open Polynomial AddMonoidAlgebra Finsupp
 
 noncomputable section
 
-variable {R : Type _}
+variable {R : Type*}
 
 /-- The semiring of Laurent polynomials with coefficients in the semiring `R`.
 We denote it by `R[T;T⁻¹]`.
 The ring homomorphism `C : R →+* R[T;T⁻¹]` includes `R` as the constant polynomials. -/
-abbrev LaurentPolynomial (R : Type _) [Semiring R] :=
+abbrev LaurentPolynomial (R : Type*) [Semiring R] :=
   AddMonoidAlgebra R ℤ
 #align laurent_polynomial LaurentPolynomial
 
@@ -138,7 +138,7 @@ def C : R →+* R[T;T⁻¹] :=
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.C LaurentPolynomial.C
 
-theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
+theorem algebraMap_apply {R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
     algebraMap R (LaurentPolynomial A) r = C (algebraMap R A r) :=
   rfl
 #align laurent_polynomial.algebra_map_apply LaurentPolynomial.algebraMap_apply
@@ -147,7 +147,7 @@ theorem algebraMap_apply {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R
 (But note that `C` is defined when `R` is not necessarily commutative, in which case
 `algebraMap` is not available.)
 -/
-theorem C_eq_algebraMap {R : Type _} [CommSemiring R] (r : R) : C r = algebraMap R R[T;T⁻¹] r :=
+theorem C_eq_algebraMap {R : Type*} [CommSemiring R] (r : R) : C r = algebraMap R R[T;T⁻¹] r :=
   rfl
 set_option linter.uppercaseLean3 false in
 #align laurent_polynomial.C_eq_algebra_map LaurentPolynomial.C_eq_algebraMap
@@ -562,7 +562,7 @@ end Degrees
 instance : Module R[X] R[T;T⁻¹] :=
   Module.compHom _ Polynomial.toLaurent
 
-instance (R : Type _) [Semiring R] : IsScalarTower R[X] R[X] R[T;T⁻¹] where
+instance (R : Type*) [Semiring R] : IsScalarTower R[X] R[X] R[T;T⁻¹] where
   smul_assoc x y z := by simp only [(· • ·), SMul.smul, SMul.comp.smul, map_mul, mul_assoc]
 
 end Semiring
@@ -571,7 +571,7 @@ section CommSemiring
 
 variable [CommSemiring R]
 
-instance algebraPolynomial (R : Type _) [CommSemiring R] : Algebra R[X] R[T;T⁻¹] :=
+instance algebraPolynomial (R : Type*) [CommSemiring R] : Algebra R[X] R[T;T⁻¹] :=
   { Polynomial.toLaurent with
     commutes' := fun f l => by simp [mul_comm]
     smul_def' := fun f l => rfl }
feat: lemmas about nilpotency and polynomials (#6450)
Diff
@@ -605,7 +605,7 @@ theorem isLocalization : IsLocalization (Submonoid.closure ({X} : Set R[X])) R[T
         exact ⟨1, rfl⟩
       · rintro ⟨⟨h, hX⟩, h⟩
         rcases Submonoid.mem_closure_singleton.mp hX with ⟨n, rfl⟩
-        exact mul_X_pow_injective n h }
+        exact (isRegular_X_pow n).left h }
 #align laurent_polynomial.is_localization LaurentPolynomial.isLocalization
 
 end CommSemiring
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,15 +2,12 @@
 Copyright (c) 2022 Damiano Testa. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Damiano Testa
-
-! This file was ported from Lean 3 source module data.polynomial.laurent
-! leanprover-community/mathlib commit 831c494092374cfe9f50591ed0ac81a25efc5b86
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Polynomial.AlgebraMap
 import Mathlib.RingTheory.Localization.Basic
 
+#align_import data.polynomial.laurent from "leanprover-community/mathlib"@"831c494092374cfe9f50591ed0ac81a25efc5b86"
+
 /-!  # Laurent polynomials
 
 We introduce Laurent polynomials over a semiring `R`.  Mathematically, they are expressions of the
feat: port Analysis.Complex.UpperHalfPlane.Basic (#4335)

Co-authored-by: Jireh Loreaux <loreaujy@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -93,7 +93,7 @@ local notation:9000 R "[T;T⁻¹]" => LaurentPolynomial R
 
 -- Porting note: `ext` no longer applies `Finsupp.ext` automatically
 @[ext]
-theorem ext [Semiring R] {p q : R[T;T⁻¹]} (h : ∀ a, p a = q a) : p = q :=
+theorem LaurentPolynomial.ext [Semiring R] {p q : R[T;T⁻¹]} (h : ∀ a, p a = q a) : p = q :=
   Finsupp.ext h
 
 /-- The ring homomorphism, taking a polynomial with coefficients in `R` to a Laurent polynomial
chore: formatting issues (#4947)

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

Diff
@@ -390,7 +390,7 @@ theorem _root_.Polynomial.toLaurent_ne_zero {f : R[X]} : f ≠ 0 ↔ toLaurent f
   (map_ne_zero_iff _ Polynomial.toLaurent_injective).symm
 #align polynomial.to_laurent_ne_zero Polynomial.toLaurent_ne_zero
 
-theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ)(f' : R[X]), toLaurent f' = f * T n := by
+theorem exists_T_pow (f : R[T;T⁻¹]) : ∃ (n : ℕ) (f' : R[X]), toLaurent f' = f * T n := by
   refine f.induction_on' ?_ fun n a => ?_ <;> clear f
   · rintro f g ⟨m, fn, hf⟩ ⟨n, gn, hg⟩
     refine' ⟨m + n, fn * X ^ n + gn * X ^ m, _⟩
feat: port Data.Polynomial.Laurent (#2953)

Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: int-y1 <jason_yuen2007@hotmail.com>

Dependencies 8 + 469

470 files ported (98.3%)
197618 lines ported (98.5%)
Show graph

The unported dependencies are