data.polynomial.laurent
⟷
Mathlib.Data.Polynomial.Laurent
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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⁻¹] :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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']
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/c89fe2d59ae06402c3f55f978016d1ada444f57e
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -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ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7ad820c4997738e2f542f8a20f32911f52020e26
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -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⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Data
(#11751)
Polynomial
and MvPolynomial
are algebraic objects, hence should be under Algebra
(or at least not under Data
)
@@ -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"
coe_nat
to natCast
(#11637)
Reduce the diff of #11499
All in the Int
namespace:
ofNat_eq_cast
→ ofNat_eq_natCast
cast_eq_cast_iff_Nat
→ natCast_inj
natCast_eq_ofNat
→ ofNat_eq_natCast
coe_nat_sub
→ natCast_sub
coe_nat_nonneg
→ natCast_nonneg
sign_coe_add_one
→ sign_natCast_add_one
nat_succ_eq_int_succ
→ natCast_succ
succ_neg_nat_succ
→ succ_neg_natCast_succ
coe_pred_of_pos
→ natCast_pred_of_pos
coe_nat_div
→ natCast_div
coe_nat_ediv
→ natCast_ediv
sign_coe_nat_of_nonzero
→ sign_natCast_of_ne_zero
toNat_coe_nat
→ toNat_natCast
toNat_coe_nat_add_one
→ toNat_natCast_add_one
coe_nat_dvd
→ natCast_dvd_natCast
coe_nat_dvd_left
→ natCast_dvd
coe_nat_dvd_right
→ dvd_natCast
le_coe_nat_sub
→ le_natCast_sub
succ_coe_nat_pos
→ succ_natCast_pos
coe_nat_modEq_iff
→ natCast_modEq_iff
coe_natAbs
→ natCast_natAbs
coe_nat_eq_zero
→ natCast_eq_zero
coe_nat_ne_zero
→ natCast_ne_zero
coe_nat_ne_zero_iff_pos
→ natCast_ne_zero_iff_pos
abs_coe_nat
→ abs_natCast
coe_nat_nonpos_iff
→ natCast_nonpos_iff
Also rename Nat.coe_nat_dvd
to Nat.cast_dvd_cast
@@ -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
@@ -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
@@ -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
@@ -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.
@@ -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]
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>
@@ -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
open Classical
(#7706)
This doesn't change any polynomial operations, but:
Decidable
values computable (otherwise, they're pointless!)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
.
@@ -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
R[A]
for addMonoidAlgebra R A
(#7203)
Introduce the notation R[A]
for AddMonoidAlgebra R A
. This is to align Mathlib
s 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 A
s 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
@@ -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 _ _ _ }
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.
@@ -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
@@ -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
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).
@@ -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
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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 }
@@ -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
@@ -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
@@ -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
@@ -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, _⟩
The unported dependencies are