data.mv_polynomial.comm_ring
⟷
Mathlib.Data.MvPolynomial.CommRing
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)
(last sync)
decidable_eq
arguments to lemmas (#18848)
This does not change the type of any definitions; the effect of this PR is to make the statement of the lemmas syntactically more general.
To ensure this catches them all, this removes open_locale classical
from the beginning of every file in data/mv_polynomial
and ring_theory/mv_polynomial
.
For definitions which bake in a classical.dec_eq
assumption, this adds a lemma proven by convert rfl
that unfolds them to a version with an arbitrary decidable_eq
instance, following a pattern established elsewhere.
Unlike previous refactors of this style this doesn't seemed to have helped any downstream proofs much.
@@ -38,8 +38,6 @@ This will give rise to a monomial in `mv_polynomial σ R` which mathematicians m
noncomputable theory
-open_locale classical big_operators
-
open set function finsupp add_monoid_algebra
open_locale big_operators
@@ -70,7 +68,8 @@ variables (σ a a')
@[simp] lemma support_neg : (- p).support = p.support :=
finsupp.support_neg p
-lemma support_sub (p q : mv_polynomial σ R) : (p - q).support ⊆ p.support ∪ q.support :=
+lemma support_sub [decidable_eq σ] (p q : mv_polynomial σ R) :
+ (p - q).support ⊆ p.support ∪ q.support :=
finsupp.support_sub
variables {σ} (p)
@@ -80,9 +79,9 @@ section degrees
lemma degrees_neg (p : mv_polynomial σ R) : (- p).degrees = p.degrees :=
by rw [degrees, support_neg]; refl
-lemma degrees_sub (p q : mv_polynomial σ R) :
+lemma degrees_sub [decidable_eq σ] (p q : mv_polynomial σ R) :
(p - q).degrees ≤ p.degrees ⊔ q.degrees :=
-by simpa only [sub_eq_add_neg] using le_trans (degrees_add p (-q)) (by rw degrees_neg)
+by classical; simpa only [sub_eq_add_neg, degrees_neg] using degrees_add p (-q)
end degrees
@@ -93,13 +92,14 @@ variables (p q)
@[simp] lemma vars_neg : (-p).vars = p.vars :=
by simp [vars, degrees_neg]
-lemma vars_sub_subset : (p - q).vars ⊆ p.vars ∪ q.vars :=
+lemma vars_sub_subset [decidable_eq σ] : (p - q).vars ⊆ p.vars ∪ q.vars :=
by convert vars_add_subset p (-q) using 2; simp [sub_eq_add_neg]
variables {p q}
@[simp]
-lemma vars_sub_of_disjoint (hpq : disjoint p.vars q.vars) : (p - q).vars = p.vars ∪ q.vars :=
+lemma vars_sub_of_disjoint [decidable_eq σ] (hpq : disjoint p.vars q.vars) :
+ (p - q).vars = p.vars ∪ q.vars :=
begin
rw ←vars_neg q at hpq,
convert vars_add_of_disjoint hpq using 2;
@@ -148,6 +148,7 @@ lemma degree_of_sub_lt {x : σ} {f g : mv_polynomial σ R} {k : ℕ} (h : 0 < k)
(hg : ∀ (m : σ →₀ ℕ), m ∈ g.support → (k ≤ m x) → coeff m f = coeff m g) :
degree_of x (f - g) < k :=
begin
+ classical,
rw degree_of_lt_iff h,
intros m hm,
by_contra hc,
@@ -169,9 +170,12 @@ by simp only [total_degree, support_neg]
lemma total_degree_sub (a b : mv_polynomial σ R) :
(a - b).total_degree ≤ max a.total_degree b.total_degree :=
-calc (a - b).total_degree = (a + -b).total_degree : by rw sub_eq_add_neg
- ... ≤ max a.total_degree (-b).total_degree : total_degree_add a (-b)
- ... = max a.total_degree b.total_degree : by rw total_degree_neg
+begin
+ classical,
+ calc (a - b).total_degree = (a + -b).total_degree : by rw sub_eq_add_neg
+ ... ≤ max a.total_degree (-b).total_degree : total_degree_add a (-b)
+ ... = max a.total_degree b.total_degree : by rw total_degree_neg
+end
end total_degree
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
-/
-import Data.MvPolynomial.Degrees
+import Algebra.MvPolynomial.Degrees
#align_import data.mv_polynomial.comm_ring from "leanprover-community/mathlib"@"2f5b500a507264de86d666a5f87ddb976e2d8de4"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
-/
-import Data.MvPolynomial.Variables
+import Data.MvPolynomial.Degrees
#align_import data.mv_polynomial.comm_ring from "leanprover-community/mathlib"@"2f5b500a507264de86d666a5f87ddb976e2d8de4"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -147,7 +147,7 @@ variable {p q}
theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
(p - q).vars = p.vars ∪ q.vars :=
by
- rw [← vars_neg q] at hpq
+ rw [← vars_neg q] at hpq
convert vars_add_of_disjoint hpq using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjoint
-/
@@ -217,9 +217,9 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
rw [degree_of_lt_iff h]
intro m hm
by_contra hc
- simp only [not_lt] at hc
+ simp only [not_lt] at hc
have h := support_sub σ f g hm
- simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
+ simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
cases' Finset.mem_union.1 h with cf cg
· exact hm (hf m cf hc)
· exact hm (hg m cg hc)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -117,7 +117,8 @@ theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
#print MvPolynomial.degrees_sub /-
theorem degrees_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
- (p - q).degrees ≤ p.degrees ⊔ q.degrees := by classical
+ (p - q).degrees ≤ p.degrees ⊔ q.degrees := by
+ classical simpa only [sub_eq_add_neg, degrees_neg] using degrees_add p (-q)
#align mv_polynomial.degrees_sub MvPolynomial.degrees_sub
-/
@@ -211,7 +212,17 @@ section DegreeOf
theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hf : ∀ m : σ →₀ ℕ, m ∈ f.support → k ≤ m x → coeff m f = coeff m g)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) : degreeOf x (f - g) < k :=
- by classical
+ by
+ classical
+ rw [degree_of_lt_iff h]
+ intro m hm
+ by_contra hc
+ simp only [not_lt] at hc
+ have h := support_sub σ f g hm
+ simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
+ cases' Finset.mem_union.1 h with cf cg
+ · exact hm (hf m cf hc)
+ · exact hm (hg m cg hc)
#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_lt
-/
@@ -228,7 +239,11 @@ theorem totalDegree_neg (a : MvPolynomial σ R) : (-a).totalDegree = a.totalDegr
#print MvPolynomial.totalDegree_sub /-
theorem totalDegree_sub (a b : MvPolynomial σ R) :
- (a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by classical
+ (a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by
+ classical calc
+ (a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
+ _ ≤ max a.total_degree (-b).totalDegree := (total_degree_add a (-b))
+ _ = max a.total_degree b.total_degree := by rw [total_degree_neg]
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -117,8 +117,7 @@ theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
#print MvPolynomial.degrees_sub /-
theorem degrees_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
- (p - q).degrees ≤ p.degrees ⊔ q.degrees := by
- classical simpa only [sub_eq_add_neg, degrees_neg] using degrees_add p (-q)
+ (p - q).degrees ≤ p.degrees ⊔ q.degrees := by classical
#align mv_polynomial.degrees_sub MvPolynomial.degrees_sub
-/
@@ -212,17 +211,7 @@ section DegreeOf
theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hf : ∀ m : σ →₀ ℕ, m ∈ f.support → k ≤ m x → coeff m f = coeff m g)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) : degreeOf x (f - g) < k :=
- by
- classical
- rw [degree_of_lt_iff h]
- intro m hm
- by_contra hc
- simp only [not_lt] at hc
- have h := support_sub σ f g hm
- simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
- cases' Finset.mem_union.1 h with cf cg
- · exact hm (hf m cf hc)
- · exact hm (hg m cg hc)
+ by classical
#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_lt
-/
@@ -239,11 +228,7 @@ theorem totalDegree_neg (a : MvPolynomial σ R) : (-a).totalDegree = a.totalDegr
#print MvPolynomial.totalDegree_sub /-
theorem totalDegree_sub (a b : MvPolynomial σ R) :
- (a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by
- classical calc
- (a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
- _ ≤ max a.total_degree (-b).totalDegree := (total_degree_add a (-b))
- _ = max a.total_degree b.total_degree := by rw [total_degree_neg]
+ (a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by classical
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
-/
-import Mathbin.Data.MvPolynomial.Variables
+import Data.MvPolynomial.Variables
#align_import data.mv_polynomial.comm_ring from "leanprover-community/mathlib"@"2f5b500a507264de86d666a5f87ddb976e2d8de4"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
-
-! This file was ported from Lean 3 source module data.mv_polynomial.comm_ring
-! leanprover-community/mathlib commit 2f5b500a507264de86d666a5f87ddb976e2d8de4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.MvPolynomial.Variables
+#align_import data.mv_polynomial.comm_ring from "leanprover-community/mathlib"@"2f5b500a507264de86d666a5f87ddb976e2d8de4"
+
/-!
# Multivariate polynomials over a ring
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -66,48 +66,64 @@ instance : CommRing (MvPolynomial σ R) :=
variable (σ a a')
+#print MvPolynomial.C_sub /-
@[simp]
theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
RingHom.map_sub _ _ _
#align mv_polynomial.C_sub MvPolynomial.C_sub
+-/
+#print MvPolynomial.C_neg /-
@[simp]
theorem C_neg : (C (-a) : MvPolynomial σ R) = -C a :=
RingHom.map_neg _ _
#align mv_polynomial.C_neg MvPolynomial.C_neg
+-/
+#print MvPolynomial.coeff_neg /-
@[simp]
theorem coeff_neg (m : σ →₀ ℕ) (p : MvPolynomial σ R) : coeff m (-p) = -coeff m p :=
Finsupp.neg_apply _ _
#align mv_polynomial.coeff_neg MvPolynomial.coeff_neg
+-/
+#print MvPolynomial.coeff_sub /-
@[simp]
theorem coeff_sub (m : σ →₀ ℕ) (p q : MvPolynomial σ R) : coeff m (p - q) = coeff m p - coeff m q :=
Finsupp.sub_apply _ _ _
#align mv_polynomial.coeff_sub MvPolynomial.coeff_sub
+-/
+#print MvPolynomial.support_neg /-
@[simp]
theorem support_neg : (-p).support = p.support :=
Finsupp.support_neg p
#align mv_polynomial.support_neg MvPolynomial.support_neg
+-/
+#print MvPolynomial.support_sub /-
theorem support_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
(p - q).support ⊆ p.support ∪ q.support :=
Finsupp.support_sub
#align mv_polynomial.support_sub MvPolynomial.support_sub
+-/
variable {σ} (p)
section Degrees
+#print MvPolynomial.degrees_neg /-
theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
rw [degrees, support_neg] <;> rfl
#align mv_polynomial.degrees_neg MvPolynomial.degrees_neg
+-/
+#print MvPolynomial.degrees_sub /-
theorem degrees_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
(p - q).degrees ≤ p.degrees ⊔ q.degrees := by
classical simpa only [sub_eq_add_neg, degrees_neg] using degrees_add p (-q)
#align mv_polynomial.degrees_sub MvPolynomial.degrees_sub
+-/
end Degrees
@@ -115,16 +131,21 @@ section Vars
variable (p q)
+#print MvPolynomial.vars_neg /-
@[simp]
theorem vars_neg : (-p).vars = p.vars := by simp [vars, degrees_neg]
#align mv_polynomial.vars_neg MvPolynomial.vars_neg
+-/
+#print MvPolynomial.vars_sub_subset /-
theorem vars_sub_subset [DecidableEq σ] : (p - q).vars ⊆ p.vars ∪ q.vars := by
convert vars_add_subset p (-q) using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subset
+-/
variable {p q}
+#print MvPolynomial.vars_sub_of_disjoint /-
@[simp]
theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
(p - q).vars = p.vars ∪ q.vars :=
@@ -132,6 +153,7 @@ theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
rw [← vars_neg q] at hpq
convert vars_add_of_disjoint hpq using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjoint
+-/
end Vars
@@ -141,20 +163,27 @@ variable [CommRing S]
variable (f : R →+* S) (g : σ → S)
+#print MvPolynomial.eval₂_sub /-
@[simp]
theorem eval₂_sub : (p - q).eval₂ f g = p.eval₂ f g - q.eval₂ f g :=
(eval₂Hom f g).map_sub _ _
#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_sub
+-/
+#print MvPolynomial.eval₂_neg /-
@[simp]
theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
(eval₂Hom f g).map_neg _
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
+-/
+#print MvPolynomial.hom_C /-
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
#align mv_polynomial.hom_C MvPolynomial.hom_C
+-/
+#print MvPolynomial.eval₂Hom_X /-
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
@[simp]
@@ -164,7 +193,9 @@ theorem eval₂Hom_X {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+
(fun p q hp hq => by rw [eval₂_add, hp, hq]; exact (f.map_add _ _).symm) fun p n hp => by
rw [eval₂_mul, eval₂_X, hp]; exact (f.map_mul _ _).symm
#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_X
+-/
+#print MvPolynomial.homEquiv /-
/-- Ring homomorphisms out of integer polynomials on a type `σ` are the same as
functions out of the type `σ`, -/
def homEquiv : (MvPolynomial σ ℤ →+* S) ≃ (σ → S)
@@ -174,11 +205,13 @@ def homEquiv : (MvPolynomial σ ℤ →+* S) ≃ (σ → S)
left_inv f := RingHom.ext <| eval₂Hom_X _ _
right_inv f := funext fun x => by simp only [coe_eval₂_hom, Function.comp_apply, eval₂_X]
#align mv_polynomial.hom_equiv MvPolynomial.homEquiv
+-/
end Eval₂
section DegreeOf
+#print MvPolynomial.degreeOf_sub_lt /-
theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hf : ∀ m : σ →₀ ℕ, m ∈ f.support → k ≤ m x → coeff m f = coeff m g)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) : degreeOf x (f - g) < k :=
@@ -194,16 +227,20 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
· exact hm (hf m cf hc)
· exact hm (hg m cg hc)
#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_lt
+-/
end DegreeOf
section TotalDegree
+#print MvPolynomial.totalDegree_neg /-
@[simp]
theorem totalDegree_neg (a : MvPolynomial σ R) : (-a).totalDegree = a.totalDegree := by
simp only [total_degree, support_neg]
#align mv_polynomial.total_degree_neg MvPolynomial.totalDegree_neg
+-/
+#print MvPolynomial.totalDegree_sub /-
theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by
classical calc
@@ -211,6 +248,7 @@ theorem totalDegree_sub (a b : MvPolynomial σ R) :
_ ≤ max a.total_degree (-b).totalDegree := (total_degree_add a (-b))
_ = max a.total_degree b.total_degree := by rw [total_degree_neg]
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
+-/
end TotalDegree
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -210,7 +210,6 @@ theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
_ ≤ max a.total_degree (-b).totalDegree := (total_degree_add a (-b))
_ = max a.total_degree b.total_degree := by rw [total_degree_neg]
-
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
end TotalDegree
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -184,15 +184,15 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) : degreeOf x (f - g) < k :=
by
classical
- rw [degree_of_lt_iff h]
- intro m hm
- by_contra hc
- simp only [not_lt] at hc
- have h := support_sub σ f g hm
- simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
- cases' Finset.mem_union.1 h with cf cg
- · exact hm (hf m cf hc)
- · exact hm (hg m cg hc)
+ rw [degree_of_lt_iff h]
+ intro m hm
+ by_contra hc
+ simp only [not_lt] at hc
+ have h := support_sub σ f g hm
+ simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
+ cases' Finset.mem_union.1 h with cf cg
+ · exact hm (hf m cf hc)
+ · exact hm (hg m cg hc)
#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_lt
end DegreeOf
@@ -207,10 +207,10 @@ theorem totalDegree_neg (a : MvPolynomial σ R) : (-a).totalDegree = a.totalDegr
theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by
classical calc
- (a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
- _ ≤ max a.total_degree (-b).totalDegree := (total_degree_add a (-b))
- _ = max a.total_degree b.total_degree := by rw [total_degree_neg]
-
+ (a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
+ _ ≤ max a.total_degree (-b).totalDegree := (total_degree_add a (-b))
+ _ = max a.total_degree b.total_degree := by rw [total_degree_neg]
+
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
end TotalDegree
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -129,7 +129,7 @@ variable {p q}
theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
(p - q).vars = p.vars ∪ q.vars :=
by
- rw [← vars_neg q] at hpq
+ rw [← vars_neg q] at hpq
convert vars_add_of_disjoint hpq using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjoint
@@ -187,9 +187,9 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
rw [degree_of_lt_iff h]
intro m hm
by_contra hc
- simp only [not_lt] at hc
+ simp only [not_lt] at hc
have h := support_sub σ f g hm
- simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
+ simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
cases' Finset.mem_union.1 h with cf cg
· exact hm (hf m cf hc)
· exact hm (hg m cg hc)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -45,7 +45,7 @@ noncomputable section
open Set Function Finsupp AddMonoidAlgebra
-open BigOperators
+open scoped BigOperators
universe u v
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -66,61 +66,31 @@ instance : CommRing (MvPolynomial σ R) :=
variable (σ a a')
-/- warning: mv_polynomial.C_sub -> MvPolynomial.C_sub is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_sub MvPolynomial.C_subₓ'. -/
@[simp]
theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
RingHom.map_sub _ _ _
#align mv_polynomial.C_sub MvPolynomial.C_sub
-/- warning: mv_polynomial.C_neg -> MvPolynomial.C_neg is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_neg MvPolynomial.C_negₓ'. -/
@[simp]
theorem C_neg : (C (-a) : MvPolynomial σ R) = -C a :=
RingHom.map_neg _ _
#align mv_polynomial.C_neg MvPolynomial.C_neg
-/- warning: mv_polynomial.coeff_neg -> MvPolynomial.coeff_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p))
-but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m p))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.coeff_neg MvPolynomial.coeff_negₓ'. -/
@[simp]
theorem coeff_neg (m : σ →₀ ℕ) (p : MvPolynomial σ R) : coeff m (-p) = -coeff m p :=
Finsupp.neg_apply _ _
#align mv_polynomial.coeff_neg MvPolynomial.coeff_neg
-/- warning: mv_polynomial.coeff_sub -> MvPolynomial.coeff_sub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m q))
-but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m p) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m q))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.coeff_sub MvPolynomial.coeff_subₓ'. -/
@[simp]
theorem coeff_sub (m : σ →₀ ℕ) (p q : MvPolynomial σ R) : coeff m (p - q) = coeff m p - coeff m q :=
Finsupp.sub_apply _ _ _
#align mv_polynomial.coeff_sub MvPolynomial.coeff_sub
-/- warning: mv_polynomial.support_neg -> MvPolynomial.support_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, Eq.{succ u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
-but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] {p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, Eq.{succ u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_neg MvPolynomial.support_negₓ'. -/
@[simp]
theorem support_neg : (-p).support = p.support :=
Finsupp.support_neg p
#align mv_polynomial.support_neg MvPolynomial.support_neg
-/- warning: mv_polynomial.support_sub -> MvPolynomial.support_sub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasSubset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasUnion.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (a : Finsupp.{u2, 0} σ Nat Nat.hasZero) (b : Finsupp.{u2, 0} σ Nat Nat.hasZero) => Finsupp.decidableEq.{u2, 0} σ Nat Nat.hasZero (fun (a : σ) (b : σ) => _inst_2 a b) (fun (a : Nat) (b : Nat) => Nat.decidableEq a b) a b)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
-but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] [_inst_2 : DecidableEq.{succ u1} σ] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), HasSubset.Subset.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instHasSubsetFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instUnionFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (fun (a : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (b : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) => Finsupp.decidableEq.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (fun (a : σ) (b : σ) => _inst_2 a b) (fun (a : Nat) (b : Nat) => instDecidableEqNat a b) a b)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_sub MvPolynomial.support_subₓ'. -/
theorem support_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
(p - q).support ⊆ p.support ∪ q.support :=
Finsupp.support_sub
@@ -130,22 +100,10 @@ variable {σ} (p)
section Degrees
-/- warning: mv_polynomial.degrees_neg -> MvPolynomial.degrees_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Multiset.{u2} σ) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u1} (Multiset.{u1} σ) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_neg MvPolynomial.degrees_negₓ'. -/
theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
rw [degrees, support_neg] <;> rfl
#align mv_polynomial.degrees_neg MvPolynomial.degrees_neg
-/- warning: mv_polynomial.degrees_sub -> MvPolynomial.degrees_sub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toHasLe.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : DecidableEq.{succ u1} σ] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => _inst_2 a b)))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_sub MvPolynomial.degrees_subₓ'. -/
theorem degrees_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
(p - q).degrees ≤ p.degrees ⊔ q.degrees := by
classical simpa only [sub_eq_add_neg, degrees_neg] using degrees_add p (-q)
@@ -157,34 +115,16 @@ section Vars
variable (p q)
-/- warning: mv_polynomial.vars_neg -> MvPolynomial.vars_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_neg MvPolynomial.vars_negₓ'. -/
@[simp]
theorem vars_neg : (-p).vars = p.vars := by simp [vars, degrees_neg]
#align mv_polynomial.vars_neg MvPolynomial.vars_neg
-/- warning: mv_polynomial.vars_sub_subset -> MvPolynomial.vars_sub_subset is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : DecidableEq.{succ u2} σ], HasSubset.Subset.{u2} (Finset.{u2} σ) (Finset.hasSubset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : DecidableEq.{succ u1} σ], HasSubset.Subset.{u1} (Finset.{u1} σ) (Finset.instHasSubsetFinset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subsetₓ'. -/
theorem vars_sub_subset [DecidableEq σ] : (p - q).vars ⊆ p.vars ∪ q.vars := by
convert vars_add_subset p (-q) using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subset
variable {p q}
-/- warning: mv_polynomial.vars_sub_of_disjoint -> MvPolynomial.vars_sub_of_disjoint is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : DecidableEq.{succ u2} σ], (Disjoint.{u2} (Finset.{u2} σ) (Finset.partialOrder.{u2} σ) (Finset.orderBot.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)) -> (Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)))
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : DecidableEq.{succ u1} σ], (Disjoint.{u1} (Finset.{u1} σ) (Finset.partialOrder.{u1} σ) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)) -> (Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjointₓ'. -/
@[simp]
theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
(p - q).vars = p.vars ∪ q.vars :=
@@ -201,38 +141,20 @@ variable [CommRing S]
variable (f : R →+* S) (g : σ → S)
-/- warning: mv_polynomial.eval₂_sub -> MvPolynomial.eval₂_sub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) {q : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (HSub.hSub.{max u3 u1, max u3 u1, max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1)))))))) p q)) (HSub.hSub.{u2, u2, u2} S S S (instHSub.{u2} S (SubNegMonoid.toHasSub.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (Ring.toAddCommGroupWithOne.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g q))
-but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u3, u3, u3} S S S (instHSub.{u3} S (Ring.toSub.{u3} S (CommRing.toRing.{u3} S _inst_2))) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g q))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_subₓ'. -/
@[simp]
theorem eval₂_sub : (p - q).eval₂ f g = p.eval₂ f g - q.eval₂ f g :=
(eval₂Hom f g).map_sub _ _
#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_sub
-/- warning: mv_polynomial.eval₂_neg -> MvPolynomial.eval₂_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (Neg.neg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1))))))) p)) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (Ring.toAddCommGroupWithOne.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p))
-but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u3} S (Ring.toNeg.{u3} S (CommRing.toRing.{u3} S _inst_2)) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_negₓ'. -/
@[simp]
theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
(eval₂Hom f g).map_neg _
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
-/- warning: mv_polynomial.hom_C -> MvPolynomial.hom_C is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_C MvPolynomial.hom_Cₓ'. -/
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
#align mv_polynomial.hom_C MvPolynomial.hom_C
-/- warning: mv_polynomial.eval₂_hom_X -> MvPolynomial.eval₂Hom_X is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_Xₓ'. -/
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
@[simp]
@@ -243,12 +165,6 @@ theorem eval₂Hom_X {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+
rw [eval₂_mul, eval₂_X, hp]; exact (f.map_mul _ _).symm
#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_X
-/- warning: mv_polynomial.hom_equiv -> MvPolynomial.homEquiv is a dubious translation:
-lean 3 declaration is
- forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (σ -> S)
-but is expected to have type
- forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u2} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (σ -> S)
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_equiv MvPolynomial.homEquivₓ'. -/
/-- Ring homomorphisms out of integer polynomials on a type `σ` are the same as
functions out of the type `σ`, -/
def homEquiv : (MvPolynomial σ ℤ →+* S) ≃ (σ → S)
@@ -263,12 +179,6 @@ end Eval₂
section DegreeOf
-/- warning: mv_polynomial.degree_of_sub_lt -> MvPolynomial.degreeOf_sub_lt is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {x : σ} {f : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {g : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {k : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) k) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) f)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) g)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (LT.lt.{0} Nat Nat.hasLt (MvPolynomial.degreeOf.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) x (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) f g)) k)
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] {x : σ} {f : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} {g : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} {k : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) k) -> (forall (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)), (Membership.mem.{u1, u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instMembershipFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) m (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) f)) -> (LE.le.{0} Nat instLENat k (FunLike.coe.{succ u1, succ u1, 1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) σ (fun (_x : σ) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : σ) => Nat) _x) (Finsupp.funLike.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) m x)) -> (Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m f) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m g))) -> (forall (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)), (Membership.mem.{u1, u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instMembershipFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) m (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) g)) -> (LE.le.{0} Nat instLENat k (FunLike.coe.{succ u1, succ u1, 1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) σ (fun (_x : σ) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : σ) => Nat) _x) (Finsupp.funLike.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) m x)) -> (Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m f) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m g))) -> (LT.lt.{0} Nat instLTNat (MvPolynomial.degreeOf.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) x (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) f g)) k)
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_ltₓ'. -/
theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hf : ∀ m : σ →₀ ℕ, m ∈ f.support → k ≤ m x → coeff m f = coeff m g)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) : degreeOf x (f - g) < k :=
@@ -289,23 +199,11 @@ end DegreeOf
section TotalDegree
-/- warning: mv_polynomial.total_degree_neg -> MvPolynomial.totalDegree_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{1} Nat (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) a)) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a)
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (a : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{1} Nat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) a)) (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.total_degree_neg MvPolynomial.totalDegree_negₓ'. -/
@[simp]
theorem totalDegree_neg (a : MvPolynomial σ R) : (-a).totalDegree = a.totalDegree := by
simp only [total_degree, support_neg]
#align mv_polynomial.total_degree_neg MvPolynomial.totalDegree_neg
-/- warning: mv_polynomial.total_degree_sub -> MvPolynomial.totalDegree_sub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (b : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{0} Nat Nat.hasLe (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) a b)) (LinearOrder.max.{0} Nat Nat.linearOrder (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) b))
-but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (a : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (b : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{0} Nat instLENat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) a b)) (Max.max.{0} Nat Nat.instMaxNat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) a) (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) b))
-Case conversion may be inaccurate. Consider using '#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_subₓ'. -/
theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by
classical calc
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -238,16 +238,9 @@ is determined by the evaluations f(X_1), f(X_2), ... -/
@[simp]
theorem eval₂Hom_X {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+* S) (x : MvPolynomial R ℤ) :
eval₂ c (f ∘ X) x = f x :=
- MvPolynomial.induction_on x
- (fun n => by
- rw [hom_C f, eval₂_C]
- exact eq_intCast c n)
- (fun p q hp hq => by
- rw [eval₂_add, hp, hq]
- exact (f.map_add _ _).symm)
- fun p n hp => by
- rw [eval₂_mul, eval₂_X, hp]
- exact (f.map_mul _ _).symm
+ MvPolynomial.induction_on x (fun n => by rw [hom_C f, eval₂_C]; exact eq_intCast c n)
+ (fun p q hp hq => by rw [eval₂_add, hp, hq]; exact (f.map_add _ _).symm) fun p n hp => by
+ rw [eval₂_mul, eval₂_X, hp]; exact (f.map_mul _ _).symm
#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_X
/- warning: mv_polynomial.hom_equiv -> MvPolynomial.homEquiv is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -67,10 +67,7 @@ instance : CommRing (MvPolynomial σ R) :=
variable (σ a a')
/- warning: mv_polynomial.C_sub -> MvPolynomial.C_sub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) (a' : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a'))
-but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) (a' : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a') ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (instHSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a'))
+<too large>
Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_sub MvPolynomial.C_subₓ'. -/
@[simp]
theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
@@ -78,10 +75,7 @@ theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
#align mv_polynomial.C_sub MvPolynomial.C_sub
/- warning: mv_polynomial.C_neg -> MvPolynomial.C_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) a)) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a))
-but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (Neg.neg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toNeg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a))
+<too large>
Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_neg MvPolynomial.C_negₓ'. -/
@[simp]
theorem C_neg : (C (-a) : MvPolynomial σ R) = -C a :=
@@ -230,20 +224,14 @@ theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
/- warning: mv_polynomial.hom_C -> MvPolynomial.hom_C is a dubious translation:
-lean 3 declaration is
- forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (n : Int), Eq.{succ u1} S (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (fun (_x : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) => (MvPolynomial.{u2, 0} σ Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) f (coeFn.{succ u2, succ u2} (RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (fun (_x : RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) => Int -> (MvPolynomial.{u2, 0} σ Int Int.commSemiring)) (RingHom.hasCoeToFun.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (MvPolynomial.C.{0, u2} Int σ Int.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int S (HasLiftT.mk.{1, succ u1} Int S (CoeTCₓ.coe.{1, succ u1} Int S (Int.castCoe.{u1} S (AddGroupWithOne.toHasIntCast.{u1} S (AddCommGroupWithOne.toAddGroupWithOne.{u1} S (Ring.toAddCommGroupWithOne.{u1} S (CommRing.toRing.{u1} S _inst_2))))))) n)
-but is expected to have type
- forall {S : Type.{u2}} {σ : Type.{u1}} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (n : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (Int.cast.{u2} S (Ring.toIntCast.{u2} S (CommRing.toRing.{u2} S _inst_2)) n)
+<too large>
Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_C MvPolynomial.hom_Cₓ'. -/
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
#align mv_polynomial.hom_C MvPolynomial.hom_C
/- warning: mv_polynomial.eval₂_hom_X -> MvPolynomial.eval₂Hom_X is a dubious translation:
-lean 3 declaration is
- forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (NonAssocRing.toNonAssocSemiring.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.commSemiring), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.commSemiring (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f) (MvPolynomial.X.{0, u1} Int R Int.commSemiring)) x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f x)
-but is expected to have type
- forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (Semiring.toNonAssocSemiring.{0} Int Int.instSemiringInt) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.instCommSemiringInt (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f x)
+<too large>
Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_Xₓ'. -/
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/33c67ae661dd8988516ff7f247b0be3018cdd952
@@ -125,7 +125,7 @@ theorem support_neg : (-p).support = p.support :=
lean 3 declaration is
forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasSubset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasUnion.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (a : Finsupp.{u2, 0} σ Nat Nat.hasZero) (b : Finsupp.{u2, 0} σ Nat Nat.hasZero) => Finsupp.decidableEq.{u2, 0} σ Nat Nat.hasZero (fun (a : σ) (b : σ) => _inst_2 a b) (fun (a : Nat) (b : Nat) => Nat.decidableEq a b) a b)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (_inst_2 : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), HasSubset.Subset.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instHasSubsetFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) _inst_2 p)) (Union.union.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instUnionFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (fun (a : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (b : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) => Finsupp.decidableEq.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b)) (fun (a : Nat) (b : Nat) => instDecidableEqNat a b) a b)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) _inst_2) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p))
+ forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] [_inst_2 : DecidableEq.{succ u1} σ] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), HasSubset.Subset.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instHasSubsetFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instUnionFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (fun (a : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (b : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) => Finsupp.decidableEq.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (fun (a : σ) (b : σ) => _inst_2 a b) (fun (a : Nat) (b : Nat) => instDecidableEqNat a b) a b)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_sub MvPolynomial.support_subₓ'. -/
theorem support_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
(p - q).support ⊆ p.support ∪ q.support :=
@@ -150,7 +150,7 @@ theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
lean 3 declaration is
forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toHasLe.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (_inst_2 : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) _inst_2 p)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) _inst_2) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p))
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : DecidableEq.{succ u1} σ] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => _inst_2 a b)))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_sub MvPolynomial.degrees_subₓ'. -/
theorem degrees_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
(p - q).degrees ≤ p.degrees ⊔ q.degrees := by
@@ -177,7 +177,7 @@ theorem vars_neg : (-p).vars = p.vars := by simp [vars, degrees_neg]
lean 3 declaration is
forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : DecidableEq.{succ u2} σ], HasSubset.Subset.{u2} (Finset.{u2} σ) (Finset.hasSubset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} σ) (Finset.instHasSubsetFinset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : DecidableEq.{succ u1} σ], HasSubset.Subset.{u1} (Finset.{u1} σ) (Finset.instHasSubsetFinset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subsetₓ'. -/
theorem vars_sub_subset [DecidableEq σ] : (p - q).vars ⊆ p.vars ∪ q.vars := by
convert vars_add_subset p (-q) using 2 <;> simp [sub_eq_add_neg]
@@ -189,7 +189,7 @@ variable {p q}
lean 3 declaration is
forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : DecidableEq.{succ u2} σ], (Disjoint.{u2} (Finset.{u2} σ) (Finset.partialOrder.{u2} σ) (Finset.orderBot.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)) -> (Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)))
but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, (Disjoint.{u1} (Finset.{u1} σ) (Finset.partialOrder.{u1} σ) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)) -> (Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)))
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : DecidableEq.{succ u1} σ], (Disjoint.{u1} (Finset.{u1} σ) (Finset.partialOrder.{u1} σ) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)) -> (Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjointₓ'. -/
@[simp]
theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -70,7 +70,7 @@ variable (σ a a')
lean 3 declaration is
forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) (a' : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a'))
but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) (a' : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a') ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (instHSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a'))
+ forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) (a' : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a') ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (instHSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a'))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_sub MvPolynomial.C_subₓ'. -/
@[simp]
theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
@@ -81,7 +81,7 @@ theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
lean 3 declaration is
forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) a)) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a))
but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (Neg.neg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toNeg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a))
+ forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (Neg.neg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toNeg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_neg MvPolynomial.C_negₓ'. -/
@[simp]
theorem C_neg : (C (-a) : MvPolynomial σ R) = -C a :=
@@ -233,7 +233,7 @@ theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
lean 3 declaration is
forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (n : Int), Eq.{succ u1} S (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (fun (_x : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) => (MvPolynomial.{u2, 0} σ Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) f (coeFn.{succ u2, succ u2} (RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (fun (_x : RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) => Int -> (MvPolynomial.{u2, 0} σ Int Int.commSemiring)) (RingHom.hasCoeToFun.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (MvPolynomial.C.{0, u2} Int σ Int.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int S (HasLiftT.mk.{1, succ u1} Int S (CoeTCₓ.coe.{1, succ u1} Int S (Int.castCoe.{u1} S (AddGroupWithOne.toHasIntCast.{u1} S (AddCommGroupWithOne.toAddGroupWithOne.{u1} S (Ring.toAddCommGroupWithOne.{u1} S (CommRing.toRing.{u1} S _inst_2))))))) n)
but is expected to have type
- forall {S : Type.{u2}} {σ : Type.{u1}} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (n : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (Int.cast.{u2} S (Ring.toIntCast.{u2} S (CommRing.toRing.{u2} S _inst_2)) n)
+ forall {S : Type.{u2}} {σ : Type.{u1}} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (n : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (Int.cast.{u2} S (Ring.toIntCast.{u2} S (CommRing.toRing.{u2} S _inst_2)) n)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_C MvPolynomial.hom_Cₓ'. -/
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
@@ -243,7 +243,7 @@ theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
lean 3 declaration is
forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (NonAssocRing.toNonAssocSemiring.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.commSemiring), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.commSemiring (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f) (MvPolynomial.X.{0, u1} Int R Int.commSemiring)) x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f x)
but is expected to have type
- forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (Semiring.toNonAssocSemiring.{0} Int Int.instSemiringInt) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.instCommSemiringInt (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f x)
+ forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (Semiring.toNonAssocSemiring.{0} Int Int.instSemiringInt) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.instCommSemiringInt (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f x)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_Xₓ'. -/
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -148,7 +148,7 @@ theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
/- warning: mv_polynomial.degrees_sub -> MvPolynomial.degrees_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toLE.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toHasLe.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (_inst_2 : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) _inst_2 p)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) _inst_2) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_sub MvPolynomial.degrees_subₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
! This file was ported from Lean 3 source module data.mv_polynomial.comm_ring
-! leanprover-community/mathlib commit 1dac236edca9b4b6f5f00b1ad831e35f89472837
+! leanprover-community/mathlib commit 2f5b500a507264de86d666a5f87ddb976e2d8de4
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -43,8 +43,6 @@ This will give rise to a monomial in `mv_polynomial σ R` which mathematicians m
noncomputable section
-open Classical BigOperators
-
open Set Function Finsupp AddMonoidAlgebra
open BigOperators
@@ -125,11 +123,12 @@ theorem support_neg : (-p).support = p.support :=
/- warning: mv_polynomial.support_sub -> MvPolynomial.support_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasSubset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasUnion.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (a : Finsupp.{u2, 0} σ Nat Nat.hasZero) (b : Finsupp.{u2, 0} σ Nat Nat.hasZero) => Finsupp.decidableEq.{u2, 0} σ Nat Nat.hasZero (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b)) (fun (a : Nat) (b : Nat) => Nat.decidableEq a b) a b)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasSubset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasUnion.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (a : Finsupp.{u2, 0} σ Nat Nat.hasZero) (b : Finsupp.{u2, 0} σ Nat Nat.hasZero) => Finsupp.decidableEq.{u2, 0} σ Nat Nat.hasZero (fun (a : σ) (b : σ) => _inst_2 a b) (fun (a : Nat) (b : Nat) => Nat.decidableEq a b) a b)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
- forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), HasSubset.Subset.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instHasSubsetFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instUnionFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (fun (a : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (b : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) => Finsupp.decidableEq.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b)) (fun (a : Nat) (b : Nat) => instDecidableEqNat a b) a b)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
+ forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (_inst_2 : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), HasSubset.Subset.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instHasSubsetFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) _inst_2 p)) (Union.union.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instUnionFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (fun (a : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (b : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) => Finsupp.decidableEq.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b)) (fun (a : Nat) (b : Nat) => instDecidableEqNat a b) a b)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) _inst_2) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_sub MvPolynomial.support_subₓ'. -/
-theorem support_sub (p q : MvPolynomial σ R) : (p - q).support ⊆ p.support ∪ q.support :=
+theorem support_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
+ (p - q).support ⊆ p.support ∪ q.support :=
Finsupp.support_sub
#align mv_polynomial.support_sub MvPolynomial.support_sub
@@ -149,12 +148,13 @@ theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
/- warning: mv_polynomial.degrees_sub -> MvPolynomial.degrees_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toLE.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : DecidableEq.{succ u2} σ] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toLE.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
- forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (_inst_2 : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) _inst_2 p)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) _inst_2) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_sub MvPolynomial.degrees_subₓ'. -/
-theorem degrees_sub (p q : MvPolynomial σ R) : (p - q).degrees ≤ p.degrees ⊔ q.degrees := by
- simpa only [sub_eq_add_neg] using le_trans (degrees_add p (-q)) (by rw [degrees_neg])
+theorem degrees_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
+ (p - q).degrees ≤ p.degrees ⊔ q.degrees := by
+ classical simpa only [sub_eq_add_neg, degrees_neg] using degrees_add p (-q)
#align mv_polynomial.degrees_sub MvPolynomial.degrees_sub
end Degrees
@@ -175,11 +175,11 @@ theorem vars_neg : (-p).vars = p.vars := by simp [vars, degrees_neg]
/- warning: mv_polynomial.vars_sub_subset -> MvPolynomial.vars_sub_subset is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} σ) (Finset.hasSubset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : DecidableEq.{succ u2} σ], HasSubset.Subset.{u2} (Finset.{u2} σ) (Finset.hasSubset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} σ) (Finset.instHasSubsetFinset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subsetₓ'. -/
-theorem vars_sub_subset : (p - q).vars ⊆ p.vars ∪ q.vars := by
+theorem vars_sub_subset [DecidableEq σ] : (p - q).vars ⊆ p.vars ∪ q.vars := by
convert vars_add_subset p (-q) using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subset
@@ -187,12 +187,13 @@ variable {p q}
/- warning: mv_polynomial.vars_sub_of_disjoint -> MvPolynomial.vars_sub_of_disjoint is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, (Disjoint.{u2} (Finset.{u2} σ) (Finset.partialOrder.{u2} σ) (Finset.orderBot.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)) -> (Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : DecidableEq.{succ u2} σ], (Disjoint.{u2} (Finset.{u2} σ) (Finset.partialOrder.{u2} σ) (Finset.orderBot.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)) -> (Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => _inst_2 a b)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)))
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, (Disjoint.{u1} (Finset.{u1} σ) (Finset.partialOrder.{u1} σ) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)) -> (Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjointₓ'. -/
@[simp]
-theorem vars_sub_of_disjoint (hpq : Disjoint p.vars q.vars) : (p - q).vars = p.vars ∪ q.vars :=
+theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
+ (p - q).vars = p.vars ∪ q.vars :=
by
rw [← vars_neg q] at hpq
convert vars_add_of_disjoint hpq using 2 <;> simp [sub_eq_add_neg]
@@ -291,15 +292,16 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hf : ∀ m : σ →₀ ℕ, m ∈ f.support → k ≤ m x → coeff m f = coeff m g)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) : degreeOf x (f - g) < k :=
by
- rw [degree_of_lt_iff h]
- intro m hm
- by_contra hc
- simp only [not_lt] at hc
- have h := support_sub σ f g hm
- simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
- cases' Finset.mem_union.1 h with cf cg
- · exact hm (hf m cf hc)
- · exact hm (hg m cg hc)
+ classical
+ rw [degree_of_lt_iff h]
+ intro m hm
+ by_contra hc
+ simp only [not_lt] at hc
+ have h := support_sub σ f g hm
+ simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
+ cases' Finset.mem_union.1 h with cf cg
+ · exact hm (hf m cf hc)
+ · exact hm (hg m cg hc)
#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_lt
end DegreeOf
@@ -324,12 +326,12 @@ but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (a : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (b : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{0} Nat instLENat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) a b)) (Max.max.{0} Nat Nat.instMaxNat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) a) (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) b))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_subₓ'. -/
theorem totalDegree_sub (a b : MvPolynomial σ R) :
- (a - b).totalDegree ≤ max a.totalDegree b.totalDegree :=
- calc
- (a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
- _ ≤ max a.totalDegree (-b).totalDegree := (totalDegree_add a (-b))
- _ = max a.totalDegree b.totalDegree := by rw [total_degree_neg]
-
+ (a - b).totalDegree ≤ max a.totalDegree b.totalDegree := by
+ classical calc
+ (a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
+ _ ≤ max a.total_degree (-b).totalDegree := (total_degree_add a (-b))
+ _ = max a.total_degree b.total_degree := by rw [total_degree_neg]
+
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
end TotalDegree
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -210,7 +210,7 @@ variable (f : R →+* S) (g : σ → S)
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) {q : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (HSub.hSub.{max u3 u1, max u3 u1, max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1)))))))) p q)) (HSub.hSub.{u2, u2, u2} S S S (instHSub.{u2} S (SubNegMonoid.toHasSub.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (Ring.toAddCommGroupWithOne.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g q))
but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (CommRing.toRing.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u3, u3, u3} S S S (instHSub.{u3} S (Ring.toSub.{u3} S (CommRing.toRing.{u3} S _inst_2))) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g q))
+ forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u3, u3, u3} S S S (instHSub.{u3} S (Ring.toSub.{u3} S (CommRing.toRing.{u3} S _inst_2))) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_subₓ'. -/
@[simp]
theorem eval₂_sub : (p - q).eval₂ f g = p.eval₂ f g - q.eval₂ f g :=
@@ -221,7 +221,7 @@ theorem eval₂_sub : (p - q).eval₂ f g = p.eval₂ f g - q.eval₂ f g :=
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (Neg.neg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1))))))) p)) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (Ring.toAddCommGroupWithOne.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p))
but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (CommRing.toRing.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u3} S (Ring.toNeg.{u3} S (CommRing.toRing.{u3} S _inst_2)) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p))
+ forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u3} S (Ring.toNeg.{u3} S (CommRing.toRing.{u3} S _inst_2)) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_negₓ'. -/
@[simp]
theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
@@ -232,7 +232,7 @@ theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
lean 3 declaration is
forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (n : Int), Eq.{succ u1} S (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (fun (_x : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) => (MvPolynomial.{u2, 0} σ Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) f (coeFn.{succ u2, succ u2} (RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (fun (_x : RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) => Int -> (MvPolynomial.{u2, 0} σ Int Int.commSemiring)) (RingHom.hasCoeToFun.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (MvPolynomial.C.{0, u2} Int σ Int.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int S (HasLiftT.mk.{1, succ u1} Int S (CoeTCₓ.coe.{1, succ u1} Int S (Int.castCoe.{u1} S (AddGroupWithOne.toHasIntCast.{u1} S (AddCommGroupWithOne.toAddGroupWithOne.{u1} S (Ring.toAddCommGroupWithOne.{u1} S (CommRing.toRing.{u1} S _inst_2))))))) n)
but is expected to have type
- forall {S : Type.{u2}} {σ : Type.{u1}} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (n : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (Int.cast.{u2} S (Ring.toIntCast.{u2} S (CommRing.toRing.{u2} S _inst_2)) n)
+ forall {S : Type.{u2}} {σ : Type.{u1}} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (n : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (Int.cast.{u2} S (Ring.toIntCast.{u2} S (CommRing.toRing.{u2} S _inst_2)) n)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_C MvPolynomial.hom_Cₓ'. -/
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
@@ -242,7 +242,7 @@ theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
lean 3 declaration is
forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (NonAssocRing.toNonAssocSemiring.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.commSemiring), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.commSemiring (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f) (MvPolynomial.X.{0, u1} Int R Int.commSemiring)) x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f x)
but is expected to have type
- forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (NonAssocRing.toNonAssocSemiring.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.instCommSemiringInt (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) f) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) f x)
+ forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (Semiring.toNonAssocSemiring.{0} Int Int.instSemiringInt) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.instCommSemiringInt (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f x)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_Xₓ'. -/
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
@@ -265,7 +265,7 @@ theorem eval₂Hom_X {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+
lean 3 declaration is
forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (σ -> S)
but is expected to have type
- forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u2} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (σ -> S)
+ forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) S (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u2} Int σ Int.instCommSemiringInt))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (σ -> S)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_equiv MvPolynomial.homEquivₓ'. -/
/-- Ring homomorphisms out of integer polynomials on a type `σ` are the same as
functions out of the type `σ`, -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -70,7 +70,7 @@ variable (σ a a')
/- warning: mv_polynomial.C_sub -> MvPolynomial.C_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) (a' : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a'))
+ forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) (a' : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a'))
but is expected to have type
forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) (a' : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a') ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (instHSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a'))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_sub MvPolynomial.C_subₓ'. -/
@@ -81,7 +81,7 @@ theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
/- warning: mv_polynomial.C_neg -> MvPolynomial.C_neg is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) a)) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a))
+ forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) a)) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a))
but is expected to have type
forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (Neg.neg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toNeg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_neg MvPolynomial.C_negₓ'. -/
@@ -92,7 +92,7 @@ theorem C_neg : (C (-a) : MvPolynomial σ R) = -C a :=
/- warning: mv_polynomial.coeff_neg -> MvPolynomial.coeff_neg is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p))
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p))
but is expected to have type
forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m p))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.coeff_neg MvPolynomial.coeff_negₓ'. -/
@@ -103,7 +103,7 @@ theorem coeff_neg (m : σ →₀ ℕ) (p : MvPolynomial σ R) : coeff m (-p) = -
/- warning: mv_polynomial.coeff_sub -> MvPolynomial.coeff_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m q))
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m q))
but is expected to have type
forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m p) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.coeff_sub MvPolynomial.coeff_subₓ'. -/
@@ -114,7 +114,7 @@ theorem coeff_sub (m : σ →₀ ℕ) (p q : MvPolynomial σ R) : coeff m (p - q
/- warning: mv_polynomial.support_neg -> MvPolynomial.support_neg is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, Eq.{succ u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, Eq.{succ u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
but is expected to have type
forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] {p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, Eq.{succ u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_neg MvPolynomial.support_negₓ'. -/
@@ -125,7 +125,7 @@ theorem support_neg : (-p).support = p.support :=
/- warning: mv_polynomial.support_sub -> MvPolynomial.support_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasSubset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasUnion.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (a : Finsupp.{u2, 0} σ Nat Nat.hasZero) (b : Finsupp.{u2, 0} σ Nat Nat.hasZero) => Finsupp.decidableEq.{u2, 0} σ Nat Nat.hasZero (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b)) (fun (a : Nat) (b : Nat) => Nat.decidableEq a b) a b)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasSubset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasUnion.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (a : Finsupp.{u2, 0} σ Nat Nat.hasZero) (b : Finsupp.{u2, 0} σ Nat Nat.hasZero) => Finsupp.decidableEq.{u2, 0} σ Nat Nat.hasZero (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b)) (fun (a : Nat) (b : Nat) => Nat.decidableEq a b) a b)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), HasSubset.Subset.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instHasSubsetFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instUnionFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (fun (a : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (b : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) => Finsupp.decidableEq.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b)) (fun (a : Nat) (b : Nat) => instDecidableEqNat a b) a b)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_sub MvPolynomial.support_subₓ'. -/
@@ -139,7 +139,7 @@ section Degrees
/- warning: mv_polynomial.degrees_neg -> MvPolynomial.degrees_neg is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Multiset.{u2} σ) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Multiset.{u2} σ) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u1} (Multiset.{u1} σ) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_neg MvPolynomial.degrees_negₓ'. -/
@@ -149,7 +149,7 @@ theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
/- warning: mv_polynomial.degrees_sub -> MvPolynomial.degrees_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toLE.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toLE.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_sub MvPolynomial.degrees_subₓ'. -/
@@ -165,7 +165,7 @@ variable (p q)
/- warning: mv_polynomial.vars_neg -> MvPolynomial.vars_neg is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_neg MvPolynomial.vars_negₓ'. -/
@@ -175,7 +175,7 @@ theorem vars_neg : (-p).vars = p.vars := by simp [vars, degrees_neg]
/- warning: mv_polynomial.vars_sub_subset -> MvPolynomial.vars_sub_subset is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} σ) (Finset.hasSubset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} σ) (Finset.hasSubset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} σ) (Finset.instHasSubsetFinset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subsetₓ'. -/
@@ -187,7 +187,7 @@ variable {p q}
/- warning: mv_polynomial.vars_sub_of_disjoint -> MvPolynomial.vars_sub_of_disjoint is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, (Disjoint.{u2} (Finset.{u2} σ) (Finset.partialOrder.{u2} σ) (Finset.orderBot.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)) -> (Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, (Disjoint.{u2} (Finset.{u2} σ) (Finset.partialOrder.{u2} σ) (Finset.orderBot.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)) -> (Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)))
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, (Disjoint.{u1} (Finset.{u1} σ) (Finset.partialOrder.{u1} σ) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)) -> (Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjointₓ'. -/
@@ -208,7 +208,7 @@ variable (f : R →+* S) (g : σ → S)
/- warning: mv_polynomial.eval₂_sub -> MvPolynomial.eval₂_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) {q : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (HSub.hSub.{max u3 u1, max u3 u1, max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1)))))))) p q)) (HSub.hSub.{u2, u2, u2} S S S (instHSub.{u2} S (SubNegMonoid.toHasSub.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g q))
+ forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) {q : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (HSub.hSub.{max u3 u1, max u3 u1, max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1)))))))) p q)) (HSub.hSub.{u2, u2, u2} S S S (instHSub.{u2} S (SubNegMonoid.toHasSub.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (Ring.toAddCommGroupWithOne.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g q))
but is expected to have type
forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (CommRing.toRing.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u3, u3, u3} S S S (instHSub.{u3} S (Ring.toSub.{u3} S (CommRing.toRing.{u3} S _inst_2))) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g q))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_subₓ'. -/
@@ -219,7 +219,7 @@ theorem eval₂_sub : (p - q).eval₂ f g = p.eval₂ f g - q.eval₂ f g :=
/- warning: mv_polynomial.eval₂_neg -> MvPolynomial.eval₂_neg is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (Neg.neg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1))))))) p)) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p))
+ forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (Neg.neg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1))))))) p)) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (Ring.toAddCommGroupWithOne.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p))
but is expected to have type
forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (CommRing.toRing.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u3} S (Ring.toNeg.{u3} S (CommRing.toRing.{u3} S _inst_2)) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_negₓ'. -/
@@ -230,7 +230,7 @@ theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
/- warning: mv_polynomial.hom_C -> MvPolynomial.hom_C is a dubious translation:
lean 3 declaration is
- forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (n : Int), Eq.{succ u1} S (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (fun (_x : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) => (MvPolynomial.{u2, 0} σ Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) f (coeFn.{succ u2, succ u2} (RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (fun (_x : RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) => Int -> (MvPolynomial.{u2, 0} σ Int Int.commSemiring)) (RingHom.hasCoeToFun.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (MvPolynomial.C.{0, u2} Int σ Int.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int S (HasLiftT.mk.{1, succ u1} Int S (CoeTCₓ.coe.{1, succ u1} Int S (Int.castCoe.{u1} S (AddGroupWithOne.toHasIntCast.{u1} S (NonAssocRing.toAddGroupWithOne.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2))))))) n)
+ forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (n : Int), Eq.{succ u1} S (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (fun (_x : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) => (MvPolynomial.{u2, 0} σ Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) f (coeFn.{succ u2, succ u2} (RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (fun (_x : RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) => Int -> (MvPolynomial.{u2, 0} σ Int Int.commSemiring)) (RingHom.hasCoeToFun.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (MvPolynomial.C.{0, u2} Int σ Int.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int S (HasLiftT.mk.{1, succ u1} Int S (CoeTCₓ.coe.{1, succ u1} Int S (Int.castCoe.{u1} S (AddGroupWithOne.toHasIntCast.{u1} S (AddCommGroupWithOne.toAddGroupWithOne.{u1} S (Ring.toAddCommGroupWithOne.{u1} S (CommRing.toRing.{u1} S _inst_2))))))) n)
but is expected to have type
forall {S : Type.{u2}} {σ : Type.{u1}} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (n : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (Int.cast.{u2} S (Ring.toIntCast.{u2} S (CommRing.toRing.{u2} S _inst_2)) n)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_C MvPolynomial.hom_Cₓ'. -/
@@ -283,7 +283,7 @@ section DegreeOf
/- warning: mv_polynomial.degree_of_sub_lt -> MvPolynomial.degreeOf_sub_lt is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {x : σ} {f : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {g : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {k : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) k) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) f)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) g)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (LT.lt.{0} Nat Nat.hasLt (MvPolynomial.degreeOf.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) x (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) f g)) k)
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {x : σ} {f : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {g : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {k : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) k) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) f)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) g)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (LT.lt.{0} Nat Nat.hasLt (MvPolynomial.degreeOf.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) x (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) f g)) k)
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] {x : σ} {f : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} {g : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} {k : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) k) -> (forall (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)), (Membership.mem.{u1, u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instMembershipFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) m (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) f)) -> (LE.le.{0} Nat instLENat k (FunLike.coe.{succ u1, succ u1, 1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) σ (fun (_x : σ) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : σ) => Nat) _x) (Finsupp.funLike.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) m x)) -> (Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m f) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m g))) -> (forall (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)), (Membership.mem.{u1, u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instMembershipFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) m (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) g)) -> (LE.le.{0} Nat instLENat k (FunLike.coe.{succ u1, succ u1, 1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) σ (fun (_x : σ) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : σ) => Nat) _x) (Finsupp.funLike.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) m x)) -> (Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m f) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m g))) -> (LT.lt.{0} Nat instLTNat (MvPolynomial.degreeOf.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) x (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) f g)) k)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_ltₓ'. -/
@@ -308,7 +308,7 @@ section TotalDegree
/- warning: mv_polynomial.total_degree_neg -> MvPolynomial.totalDegree_neg is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{1} Nat (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) a)) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a)
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{1} Nat (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) a)) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a)
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (a : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{1} Nat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) a)) (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) a)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.total_degree_neg MvPolynomial.totalDegree_negₓ'. -/
@@ -319,7 +319,7 @@ theorem totalDegree_neg (a : MvPolynomial σ R) : (-a).totalDegree = a.totalDegr
/- warning: mv_polynomial.total_degree_sub -> MvPolynomial.totalDegree_sub is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (b : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{0} Nat Nat.hasLe (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) a b)) (LinearOrder.max.{0} Nat Nat.linearOrder (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) b))
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (b : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{0} Nat Nat.hasLe (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) a b)) (LinearOrder.max.{0} Nat Nat.linearOrder (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) b))
but is expected to have type
forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (a : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (b : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{0} Nat instLENat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) a b)) (Max.max.{0} Nat Nat.instMaxNat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) a) (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) b))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_subₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7ec294687917cbc5c73620b4414ae9b5dd9ae1b4
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
! This file was ported from Lean 3 source module data.mv_polynomial.comm_ring
-! leanprover-community/mathlib commit 972aa4234fa56ce119d19506045158a9d76881fd
+! leanprover-community/mathlib commit 1dac236edca9b4b6f5f00b1ad831e35f89472837
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Data.MvPolynomial.Variables
/-!
# Multivariate polynomials over a ring
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Many results about polynomials hold when the coefficient ring is a commutative semiring.
Some stronger results can be derived when we assume this semiring is a ring.
mathlib commit https://github.com/leanprover-community/mathlib/commit/02ba8949f486ebecf93fe7460f1ed0564b5e442c
@@ -65,31 +65,67 @@ instance : CommRing (MvPolynomial σ R) :=
variable (σ a a')
+/- warning: mv_polynomial.C_sub -> MvPolynomial.C_sub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) (a' : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a'))
+but is expected to have type
+ forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) (a' : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a') ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) a a')) (instHSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toSub.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a'))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_sub MvPolynomial.C_subₓ'. -/
@[simp]
-theorem c_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
+theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
RingHom.map_sub _ _ _
-#align mv_polynomial.C_sub MvPolynomial.c_sub
-
+#align mv_polynomial.C_sub MvPolynomial.C_sub
+
+/- warning: mv_polynomial.C_neg -> MvPolynomial.C_neg is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} (σ : Type.{u2}) (a : R) [_inst_1 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) a)) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) (coeFn.{max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, max u2 u1} R (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1)) a))
+but is expected to have type
+ forall {R : Type.{u2}} (σ : Type.{u1}) (a : R) [_inst_1 : CommRing.{u2} R], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) a)) (Neg.neg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (Ring.toNeg.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (CommRing.toRing.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) a) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) _x) (MulHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u2, max u1 u2} (RingHom.{u2, max u2 u1} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1))))) R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u2, max u1 u2} R (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)))))))) (MvPolynomial.C.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1)) a))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.C_neg MvPolynomial.C_negₓ'. -/
@[simp]
-theorem c_neg : (C (-a) : MvPolynomial σ R) = -C a :=
+theorem C_neg : (C (-a) : MvPolynomial σ R) = -C a :=
RingHom.map_neg _ _
-#align mv_polynomial.C_neg MvPolynomial.c_neg
-
+#align mv_polynomial.C_neg MvPolynomial.C_neg
+
+/- warning: mv_polynomial.coeff_neg -> MvPolynomial.coeff_neg is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p))
+but is expected to have type
+ forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u2} R (Ring.toNeg.{u2} R (CommRing.toRing.{u2} R _inst_1)) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m p))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.coeff_neg MvPolynomial.coeff_negₓ'. -/
@[simp]
theorem coeff_neg (m : σ →₀ ℕ) (p : MvPolynomial σ R) : coeff m (-p) = -coeff m p :=
Finsupp.neg_apply _ _
#align mv_polynomial.coeff_neg MvPolynomial.coeff_neg
+/- warning: mv_polynomial.coeff_sub -> MvPolynomial.coeff_sub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (m : Finsupp.{u2, 0} σ Nat Nat.hasZero) (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m p) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m q))
+but is expected to have type
+ forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_1))) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m p) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m q))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.coeff_sub MvPolynomial.coeff_subₓ'. -/
@[simp]
theorem coeff_sub (m : σ →₀ ℕ) (p q : MvPolynomial σ R) : coeff m (p - q) = coeff m p - coeff m q :=
Finsupp.sub_apply _ _ _
#align mv_polynomial.coeff_sub MvPolynomial.coeff_sub
+/- warning: mv_polynomial.support_neg -> MvPolynomial.support_neg is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, Eq.{succ u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
+but is expected to have type
+ forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] {p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, Eq.{succ u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_neg MvPolynomial.support_negₓ'. -/
@[simp]
theorem support_neg : (-p).support = p.support :=
Finsupp.support_neg p
#align mv_polynomial.support_neg MvPolynomial.support_neg
+/- warning: mv_polynomial.support_sub -> MvPolynomial.support_sub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} (σ : Type.{u2}) [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasSubset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasUnion.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (a : Finsupp.{u2, 0} σ Nat Nat.hasZero) (b : Finsupp.{u2, 0} σ Nat Nat.hasZero) => Finsupp.decidableEq.{u2, 0} σ Nat Nat.hasZero (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b)) (fun (a : Nat) (b : Nat) => Nat.decidableEq a b) a b)) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+but is expected to have type
+ forall {R : Type.{u2}} (σ : Type.{u1}) [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), HasSubset.Subset.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instHasSubsetFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instUnionFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (fun (a : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (b : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) => Finsupp.decidableEq.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b)) (fun (a : Nat) (b : Nat) => instDecidableEqNat a b) a b)) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.support_sub MvPolynomial.support_subₓ'. -/
theorem support_sub (p q : MvPolynomial σ R) : (p - q).support ⊆ p.support ∪ q.support :=
Finsupp.support_sub
#align mv_polynomial.support_sub MvPolynomial.support_sub
@@ -98,10 +134,22 @@ variable {σ} (p)
section Degrees
+/- warning: mv_polynomial.degrees_neg -> MvPolynomial.degrees_neg is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Multiset.{u2} σ) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u1} (Multiset.{u1} σ) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_neg MvPolynomial.degrees_negₓ'. -/
theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
rw [degrees, support_neg] <;> rfl
#align mv_polynomial.degrees_neg MvPolynomial.degrees_neg
+/- warning: mv_polynomial.degrees_sub -> MvPolynomial.degrees_sub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{u2} (Multiset.{u2} σ) (Preorder.toLE.{u2} (Multiset.{u2} σ) (PartialOrder.toPreorder.{u2} (Multiset.{u2} σ) (Multiset.partialOrder.{u2} σ))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Sup.sup.{u2} (Multiset.{u2} σ) (SemilatticeSup.toHasSup.{u2} (Multiset.{u2} σ) (Lattice.toSemilatticeSup.{u2} (Multiset.{u2} σ) (Multiset.lattice.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))))) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.degrees.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{u1} (Multiset.{u1} σ) (Preorder.toLE.{u1} (Multiset.{u1} σ) (PartialOrder.toPreorder.{u1} (Multiset.{u1} σ) (Multiset.instPartialOrderMultiset.{u1} σ))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Sup.sup.{u1} (Multiset.{u1} σ) (SemilatticeSup.toSup.{u1} (Multiset.{u1} σ) (Lattice.toSemilatticeSup.{u1} (Multiset.{u1} σ) (Multiset.instLatticeMultiset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))))) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.degrees.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.degrees_sub MvPolynomial.degrees_subₓ'. -/
theorem degrees_sub (p q : MvPolynomial σ R) : (p - q).degrees ≤ p.degrees ⊔ q.degrees := by
simpa only [sub_eq_add_neg] using le_trans (degrees_add p (-q)) (by rw [degrees_neg])
#align mv_polynomial.degrees_sub MvPolynomial.degrees_sub
@@ -112,16 +160,34 @@ section Vars
variable (p q)
+/- warning: mv_polynomial.vars_neg -> MvPolynomial.vars_neg is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) p)) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p)
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_neg MvPolynomial.vars_negₓ'. -/
@[simp]
theorem vars_neg : (-p).vars = p.vars := by simp [vars, degrees_neg]
#align mv_polynomial.vars_neg MvPolynomial.vars_neg
+/- warning: mv_polynomial.vars_sub_subset -> MvPolynomial.vars_sub_subset is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), HasSubset.Subset.{u2} (Finset.{u2} σ) (Finset.hasSubset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q))
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} σ) (Finset.instHasSubsetFinset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subsetₓ'. -/
theorem vars_sub_subset : (p - q).vars ⊆ p.vars ∪ q.vars := by
convert vars_add_subset p (-q) using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subset
variable {p q}
+/- warning: mv_polynomial.vars_sub_of_disjoint -> MvPolynomial.vars_sub_of_disjoint is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {p : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {q : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)}, (Disjoint.{u2} (Finset.{u2} σ) (Finset.partialOrder.{u2} σ) (Finset.orderBot.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)) -> (Eq.{succ u2} (Finset.{u2} σ) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) p q)) (Union.union.{u2} (Finset.{u2} σ) (Finset.hasUnion.{u2} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u2} σ a b))) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) p) (MvPolynomial.vars.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) q)))
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)}, (Disjoint.{u1} (Finset.{u1} σ) (Finset.partialOrder.{u1} σ) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)) -> (Eq.{succ u1} (Finset.{u1} σ) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (Union.union.{u1} (Finset.{u1} σ) (Finset.instUnionFinset.{u1} σ (fun (a : σ) (b : σ) => Classical.propDecidable (Eq.{succ u1} σ a b))) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) p) (MvPolynomial.vars.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) q)))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjointₓ'. -/
@[simp]
theorem vars_sub_of_disjoint (hpq : Disjoint p.vars q.vars) : (p - q).vars = p.vars ∪ q.vars :=
by
@@ -137,24 +203,48 @@ variable [CommRing S]
variable (f : R →+* S) (g : σ → S)
+/- warning: mv_polynomial.eval₂_sub -> MvPolynomial.eval₂_sub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) {q : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (HSub.hSub.{max u3 u1, max u3 u1, max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1)))))))) p q)) (HSub.hSub.{u2, u2, u2} S S S (instHSub.{u2} S (SubNegMonoid.toHasSub.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g q))
+but is expected to have type
+ forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) {q : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (CommRing.toRing.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) p q)) (HSub.hSub.{u3, u3, u3} S S S (instHSub.{u3} S (Ring.toSub.{u3} S (CommRing.toRing.{u3} S _inst_2))) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g q))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_subₓ'. -/
@[simp]
theorem eval₂_sub : (p - q).eval₂ f g = p.eval₂ f g - q.eval₂ f g :=
(eval₂Hom f g).map_sub _ _
#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_sub
+/- warning: mv_polynomial.eval₂_neg -> MvPolynomial.eval₂_neg is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} {σ : Type.{u3}} [_inst_1 : CommRing.{u1} R] (p : MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (g : σ -> S), Eq.{succ u2} S (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g (Neg.neg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u3 u1} (MvPolynomial.{u3, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u3} R σ _inst_1))))))) p)) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (MvPolynomial.eval₂.{u1, u2, u3} R S σ (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f g p))
+but is expected to have type
+ forall {R : Type.{u2}} {S : Type.{u3}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (p : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) [_inst_2 : CommRing.{u3} S] (f : RingHom.{u2, u3} R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (CommRing.toRing.{u3} S _inst_2)))) (g : σ -> S), Eq.{succ u3} S (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) p)) (Neg.neg.{u3} S (Ring.toNeg.{u3} S (CommRing.toRing.{u3} S _inst_2)) (MvPolynomial.eval₂.{u2, u3, u1} R S σ (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u3} S _inst_2) f g p))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_negₓ'. -/
@[simp]
theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
(eval₂Hom f g).map_neg _
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
-theorem hom_c (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
+/- warning: mv_polynomial.hom_C -> MvPolynomial.hom_C is a dubious translation:
+lean 3 declaration is
+ forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (n : Int), Eq.{succ u1} S (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (fun (_x : RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) => (MvPolynomial.{u2, 0} σ Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) f (coeFn.{succ u2, succ u2} (RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (fun (_x : RingHom.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) => Int -> (MvPolynomial.{u2, 0} σ Int Int.commSemiring)) (RingHom.hasCoeToFun.{0, u2} Int (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommSemiring.toSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u2} Int σ Int.commSemiring)))) (MvPolynomial.C.{0, u2} Int σ Int.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int S (HasLiftT.mk.{1, succ u1} Int S (CoeTCₓ.coe.{1, succ u1} Int S (Int.castCoe.{u1} S (AddGroupWithOne.toHasIntCast.{u1} S (NonAssocRing.toAddGroupWithOne.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2))))))) n)
+but is expected to have type
+ forall {S : Type.{u2}} {σ : Type.{u1}} [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (n : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int σ Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int σ Int.instCommSemiringInt) n)) (Int.cast.{u2} S (Ring.toIntCast.{u2} S (CommRing.toRing.{u2} S _inst_2)) n)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_C MvPolynomial.hom_Cₓ'. -/
+theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
-#align mv_polynomial.hom_C MvPolynomial.hom_c
-
+#align mv_polynomial.hom_C MvPolynomial.hom_C
+
+/- warning: mv_polynomial.eval₂_hom_X -> MvPolynomial.eval₂Hom_X is a dubious translation:
+lean 3 declaration is
+ forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (NonAssocRing.toNonAssocSemiring.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.commSemiring), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.commSemiring (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f) (MvPolynomial.X.{0, u1} Int R Int.commSemiring)) x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> S) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commRing.{0, u1} Int R Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f x)
+but is expected to have type
+ forall {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] {R : Type.{u1}} (c : RingHom.{0, u2} Int S (NonAssocRing.toNonAssocSemiring.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (f : RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt), Eq.{succ u2} S (MvPolynomial.eval₂.{0, u2, u1} Int S R Int.instCommSemiringInt (CommRing.toCommSemiring.{u2} S _inst_2) c (Function.comp.{succ u1, succ u1, succ u2} R (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) f) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommRing.toRing.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u1} Int R Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) f x)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_Xₓ'. -/
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
@[simp]
-theorem eval₂_hom_x {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+* S) (x : MvPolynomial R ℤ) :
+theorem eval₂Hom_X {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+* S) (x : MvPolynomial R ℤ) :
eval₂ c (f ∘ X) x = f x :=
MvPolynomial.induction_on x
(fun n => by
@@ -166,15 +256,21 @@ theorem eval₂_hom_x {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →
fun p n hp => by
rw [eval₂_mul, eval₂_X, hp]
exact (f.map_mul _ _).symm
-#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂_hom_x
-
+#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_X
+
+/- warning: mv_polynomial.hom_equiv -> MvPolynomial.homEquiv is a dubious translation:
+lean 3 declaration is
+ forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.commSemiring) (MvPolynomial.commRing.{0, u2} Int σ Int.commRing)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (σ -> S)
+but is expected to have type
+ forall {S : Type.{u1}} {σ : Type.{u2}} [_inst_2 : CommRing.{u1} S], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u2, u1} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) S (NonAssocRing.toNonAssocSemiring.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (Ring.toNonAssocRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (CommRing.toRing.{u2} (MvPolynomial.{u2, 0} σ Int Int.instCommSemiringInt) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{0, u2} Int σ Int.instCommRingInt)))) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2)))) (σ -> S)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.hom_equiv MvPolynomial.homEquivₓ'. -/
/-- Ring homomorphisms out of integer polynomials on a type `σ` are the same as
functions out of the type `σ`, -/
def homEquiv : (MvPolynomial σ ℤ →+* S) ≃ (σ → S)
where
toFun f := ⇑f ∘ X
invFun f := eval₂Hom (Int.castRingHom S) f
- left_inv f := RingHom.ext <| eval₂_hom_x _ _
+ left_inv f := RingHom.ext <| eval₂Hom_X _ _
right_inv f := funext fun x => by simp only [coe_eval₂_hom, Function.comp_apply, eval₂_X]
#align mv_polynomial.hom_equiv MvPolynomial.homEquiv
@@ -182,6 +278,12 @@ end Eval₂
section DegreeOf
+/- warning: mv_polynomial.degree_of_sub_lt -> MvPolynomial.degreeOf_sub_lt is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] {x : σ} {f : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {g : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)} {k : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) k) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) f)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (forall (m : Finsupp.{u2, 0} σ Nat Nat.hasZero), (Membership.Mem.{u2, u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (Finset.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) (Finset.hasMem.{u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero)) m (MvPolynomial.support.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) g)) -> (LE.le.{0} Nat Nat.hasLe k (coeFn.{succ u2, succ u2} (Finsupp.{u2, 0} σ Nat Nat.hasZero) (fun (_x : Finsupp.{u2, 0} σ Nat Nat.hasZero) => σ -> Nat) (Finsupp.coeFun.{u2, 0} σ Nat Nat.hasZero) m x)) -> (Eq.{succ u1} R (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m f) (MvPolynomial.coeff.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) m g))) -> (LT.lt.{0} Nat Nat.hasLt (MvPolynomial.degreeOf.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) x (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) f g)) k)
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] {x : σ} {f : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} {g : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)} {k : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) k) -> (forall (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)), (Membership.mem.{u1, u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instMembershipFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) m (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) f)) -> (LE.le.{0} Nat instLENat k (FunLike.coe.{succ u1, succ u1, 1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) σ (fun (_x : σ) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : σ) => Nat) _x) (Finsupp.funLike.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) m x)) -> (Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m f) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m g))) -> (forall (m : Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)), (Membership.mem.{u1, u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) (Finset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) (Finset.instMembershipFinset.{u1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero))) m (MvPolynomial.support.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) g)) -> (LE.le.{0} Nat instLENat k (FunLike.coe.{succ u1, succ u1, 1} (Finsupp.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) σ (fun (_x : σ) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : σ) => Nat) _x) (Finsupp.funLike.{u1, 0} σ Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero)) m x)) -> (Eq.{succ u2} R (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m f) (MvPolynomial.coeff.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) m g))) -> (LT.lt.{0} Nat instLTNat (MvPolynomial.degreeOf.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) x (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) f g)) k)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.degree_of_sub_lt MvPolynomial.degreeOf_sub_ltₓ'. -/
theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hf : ∀ m : σ →₀ ℕ, m ∈ f.support → k ≤ m x → coeff m f = coeff m g)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) : degreeOf x (f - g) < k :=
@@ -201,11 +303,23 @@ end DegreeOf
section TotalDegree
+/- warning: mv_polynomial.total_degree_neg -> MvPolynomial.totalDegree_neg is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), Eq.{1} Nat (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasNeg.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1))))))) a)) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a)
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (a : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), Eq.{1} Nat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (Neg.neg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toNeg.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1))) a)) (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) a)
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.total_degree_neg MvPolynomial.totalDegree_negₓ'. -/
@[simp]
theorem totalDegree_neg (a : MvPolynomial σ R) : (-a).totalDegree = a.totalDegree := by
simp only [total_degree, support_neg]
#align mv_polynomial.total_degree_neg MvPolynomial.totalDegree_neg
+/- warning: mv_polynomial.total_degree_sub -> MvPolynomial.totalDegree_sub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {σ : Type.{u2}} [_inst_1 : CommRing.{u1} R] (a : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (b : MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)), LE.le.{0} Nat Nat.hasLe (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toAddGroupWithOne.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u2, u1} σ R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, u2} R σ _inst_1)))))))) a b)) (LinearOrder.max.{0} Nat Nat.linearOrder (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) a) (MvPolynomial.totalDegree.{u1, u2} R σ (CommRing.toCommSemiring.{u1} R _inst_1) b))
+but is expected to have type
+ forall {R : Type.{u2}} {σ : Type.{u1}} [_inst_1 : CommRing.{u2} R] (a : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (b : MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)), LE.le.{0} Nat instLENat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (instHSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (Ring.toSub.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommRing.toRing.{max u2 u1} (MvPolynomial.{u1, u2} σ R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u2, u1} R σ _inst_1)))) a b)) (Max.max.{0} Nat Nat.instMaxNat (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) a) (MvPolynomial.totalDegree.{u2, u1} R σ (CommRing.toCommSemiring.{u2} R _inst_1) b))
+Case conversion may be inaccurate. Consider using '#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_subₓ'. -/
theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree ≤ max a.totalDegree b.totalDegree :=
calc
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a313d8bba1bad05faba71a4a4e9742ab5bd9efd
@@ -66,12 +66,12 @@ instance : CommRing (MvPolynomial σ R) :=
variable (σ a a')
@[simp]
-theorem c_sub : (c (a - a') : MvPolynomial σ R) = c a - c a' :=
+theorem c_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
RingHom.map_sub _ _ _
#align mv_polynomial.C_sub MvPolynomial.c_sub
@[simp]
-theorem c_neg : (c (-a) : MvPolynomial σ R) = -c a :=
+theorem c_neg : (C (-a) : MvPolynomial σ R) = -C a :=
RingHom.map_neg _ _
#align mv_polynomial.C_neg MvPolynomial.c_neg
@@ -147,15 +147,15 @@ theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
(eval₂Hom f g).map_neg _
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
-theorem hom_c (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (c n) = (n : S) :=
- eq_intCast (f.comp c) n
+theorem hom_c (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
+ eq_intCast (f.comp C) n
#align mv_polynomial.hom_C MvPolynomial.hom_c
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
@[simp]
theorem eval₂_hom_x {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+* S) (x : MvPolynomial R ℤ) :
- eval₂ c (f ∘ x) x = f x :=
+ eval₂ c (f ∘ X) x = f x :=
MvPolynomial.induction_on x
(fun n => by
rw [hom_C f, eval₂_C]
@@ -172,7 +172,7 @@ theorem eval₂_hom_x {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →
functions out of the type `σ`, -/
def homEquiv : (MvPolynomial σ ℤ →+* S) ≃ (σ → S)
where
- toFun f := ⇑f ∘ x
+ toFun f := ⇑f ∘ X
invFun f := eval₂Hom (Int.castRingHom S) f
left_inv f := RingHom.ext <| eval₂_hom_x _ _
right_inv f := funext fun x => by simp only [coe_eval₂_hom, Function.comp_apply, eval₂_X]
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -210,7 +210,7 @@ theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree ≤ max a.totalDegree b.totalDegree :=
calc
(a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
- _ ≤ max a.totalDegree (-b).totalDegree := totalDegree_add a (-b)
+ _ ≤ max a.totalDegree (-b).totalDegree := (totalDegree_add a (-b))
_ = max a.totalDegree b.totalDegree := by rw [total_degree_neg]
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -208,7 +208,7 @@ theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree ≤ max a.totalDegree b.totalDegree :=
calc
(a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
- _ ≤ max a.totalDegree (-b).totalDegree := (totalDegree_add a (-b))
+ _ ≤ max a.totalDegree (-b).totalDegree := totalDegree_add a (-b)
_ = max a.totalDegree b.totalDegree := by rw [totalDegree_neg]
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
Data
(#11751)
Polynomial
and MvPolynomial
are algebraic objects, hence should be under Algebra
(or at least not under Data
)
@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
-/
-import Mathlib.Data.MvPolynomial.Variables
+import Mathlib.Algebra.MvPolynomial.Variables
#align_import data.mv_polynomial.comm_ring from "leanprover-community/mathlib"@"2f5b500a507264de86d666a5f87ddb976e2d8de4"
@@ -189,7 +189,7 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
intro m hm
by_contra! hc
have h := support_sub σ f g hm
- simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
+ simp only [mem_support_iff, Ne, coeff_sub, sub_eq_zero] at hm
cases' Finset.mem_union.1 h with cf cg
· exact hm (hf m cf hc)
· exact hm (hg m cg hc)
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -50,7 +50,6 @@ variable {σ : Type*} {a a' a₁ a₂ : R} {e : ℕ} {n m : σ} {s : σ →₀
section CommRing
variable [CommRing R]
-
variable {p q : MvPolynomial σ R}
instance instCommRingMvPolynomial : CommRing (MvPolynomial σ R) :=
@@ -127,7 +126,6 @@ end Vars
section Eval
variable [CommRing S]
-
variable (f : R →+* S) (g : σ → S)
@[simp]
@@ -58,13 +58,13 @@ instance instCommRingMvPolynomial : CommRing (MvPolynomial σ R) :=
variable (σ a a')
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
theorem C_sub : (C (a - a') : MvPolynomial σ R) = C a - C a' :=
RingHom.map_sub _ _ _
set_option linter.uppercaseLean3 false in
#align mv_polynomial.C_sub MvPolynomial.C_sub
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
theorem C_neg : (C (-a) : MvPolynomial σ R) = -C a :=
RingHom.map_neg _ _
set_option linter.uppercaseLean3 false in
@@ -214,6 +214,10 @@ theorem totalDegree_sub (a b : MvPolynomial σ R) :
_ = max a.totalDegree b.totalDegree := by rw [totalDegree_neg]
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
+theorem totalDegree_sub_C_le (p : MvPolynomial σ R) (r : R) :
+ totalDegree (p - C r) ≤ totalDegree p :=
+ (totalDegree_sub _ _).trans_eq <| by rw [totalDegree_C, Nat.max_zero]
+
end TotalDegree
end CommRing
@@ -189,7 +189,7 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
classical
rw [degreeOf_lt_iff h]
intro m hm
- by_contra' hc
+ by_contra! hc
have h := support_sub σ f g hm
simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
cases' Finset.mem_union.1 h with cf cg
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -21,7 +21,7 @@ As in other polynomial files, we typically use the notation:
+ `σ : Type*` (indexing the variables)
-+ `R : Type _` `[CommRing R]` (the coefficients)
++ `R : Type*` `[CommRing R]` (the coefficients)
+ `s : σ →₀ ℕ`, a function from `σ` to `ℕ` which is zero away from a finite set.
This will give rise to a monomial in `MvPolynomial σ R` which mathematicians might call `X^s`
@@ -45,7 +45,7 @@ variable {R : Type u} {S : Type v}
namespace MvPolynomial
-variable {σ : Type _} {a a' a₁ a₂ : R} {e : ℕ} {n m : σ} {s : σ →₀ ℕ}
+variable {σ : Type*} {a a' a₁ a₂ : R} {e : ℕ} {n m : σ} {s : σ →₀ ℕ}
section CommRing
Per https://github.com/leanprover/lean4/issues/2343, we are going to need to change the automatic generation of instance names, as they become too long.
This PR ensures that everywhere in Mathlib that refers to an instance by name, that name is given explicitly, rather than being automatically generated.
There are four exceptions, which are now commented, with links to https://github.com/leanprover/lean4/issues/2343.
This was implemented by running Mathlib against a modified Lean that appended _ᾰ
to all automatically generated names, and fixing everything.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -53,7 +53,7 @@ variable [CommRing R]
variable {p q : MvPolynomial σ R}
-instance : CommRing (MvPolynomial σ R) :=
+instance instCommRingMvPolynomial : CommRing (MvPolynomial σ R) :=
AddMonoidAlgebra.commRing
variable (σ a a')
@@ -2,14 +2,11 @@
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
-
-! This file was ported from Lean 3 source module data.mv_polynomial.comm_ring
-! leanprover-community/mathlib commit 2f5b500a507264de86d666a5f87ddb976e2d8de4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.MvPolynomial.Variables
+#align_import data.mv_polynomial.comm_ring from "leanprover-community/mathlib"@"2f5b500a507264de86d666a5f87ddb976e2d8de4"
+
/-!
# Multivariate polynomials over a ring
@@ -127,7 +127,7 @@ theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
end Vars
-section Eval₂
+section Eval
variable [CommRing S]
@@ -138,11 +138,17 @@ theorem eval₂_sub : (p - q).eval₂ f g = p.eval₂ f g - q.eval₂ f g :=
(eval₂Hom f g).map_sub _ _
#align mv_polynomial.eval₂_sub MvPolynomial.eval₂_sub
+theorem eval_sub (f : σ → R) : eval f (p - q) = eval f p - eval f q :=
+ eval₂_sub _ _ _
+
@[simp]
theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
(eval₂Hom f g).map_neg _
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
+theorem eval_neg (f : σ → R) : eval f (-p) = -eval f p :=
+ eval₂_neg _ _ _
+
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
set_option linter.uppercaseLean3 false in
@@ -175,7 +181,7 @@ def homEquiv : (MvPolynomial σ ℤ →+* S) ≃ (σ → S) where
right_inv f := funext fun x => by simp only [coe_eval₂Hom, Function.comp_apply, eval₂_X]
#align mv_polynomial.hom_equiv MvPolynomial.homEquiv
-end Eval₂
+end Eval
section DegreeOf
I've been someone sloppy about forward-porting the exact mathport here; a lot of the classical
additions result in the whole proof being indented, which IMO just adds noise to the diff.
What's important is that:
open Classical
is removed from all the same files[DecidableEq _]
is added in the same position to all the same lemmas. In theory mathport will detect if we mess this up, so it's not essential to catch this in review. The linter will tell us if it is added unnecessarily, and the build will fail if is not added someewhere it is needed; so only the argument order is at risk of being wrong.foo_def
lemmas are all added in variables.lean
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Johan Commelin, Mario Carneiro
! This file was ported from Lean 3 source module data.mv_polynomial.comm_ring
-! leanprover-community/mathlib commit 972aa4234fa56ce119d19506045158a9d76881fd
+! leanprover-community/mathlib commit 2f5b500a507264de86d666a5f87ddb976e2d8de4
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -40,7 +40,7 @@ This will give rise to a monomial in `MvPolynomial σ R` which mathematicians mi
noncomputable section
-open Classical BigOperators Set Function Finsupp AddMonoidAlgebra
+open Set Function Finsupp AddMonoidAlgebra
universe u v
@@ -88,7 +88,8 @@ theorem support_neg : (-p).support = p.support :=
Finsupp.support_neg p
#align mv_polynomial.support_neg MvPolynomial.support_neg
-theorem support_sub (p q : MvPolynomial σ R) : (p - q).support ⊆ p.support ∪ q.support :=
+theorem support_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
+ (p - q).support ⊆ p.support ∪ q.support :=
Finsupp.support_sub
#align mv_polynomial.support_sub MvPolynomial.support_sub
@@ -100,7 +101,8 @@ theorem degrees_neg (p : MvPolynomial σ R) : (-p).degrees = p.degrees := by
rw [degrees, support_neg]; rfl
#align mv_polynomial.degrees_neg MvPolynomial.degrees_neg
-theorem degrees_sub (p q : MvPolynomial σ R) : (p - q).degrees ≤ p.degrees ⊔ q.degrees := by
+theorem degrees_sub [DecidableEq σ] (p q : MvPolynomial σ R) :
+ (p - q).degrees ≤ p.degrees ⊔ q.degrees := by
simpa only [sub_eq_add_neg] using le_trans (degrees_add p (-q)) (by rw [degrees_neg])
#align mv_polynomial.degrees_sub MvPolynomial.degrees_sub
@@ -112,12 +114,13 @@ section Vars
theorem vars_neg : (-p).vars = p.vars := by simp [vars, degrees_neg]
#align mv_polynomial.vars_neg MvPolynomial.vars_neg
-theorem vars_sub_subset : (p - q).vars ⊆ p.vars ∪ q.vars := by
+theorem vars_sub_subset [DecidableEq σ] : (p - q).vars ⊆ p.vars ∪ q.vars := by
convert vars_add_subset p (-q) using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_subset MvPolynomial.vars_sub_subset
@[simp]
-theorem vars_sub_of_disjoint (hpq : Disjoint p.vars q.vars) : (p - q).vars = p.vars ∪ q.vars := by
+theorem vars_sub_of_disjoint [DecidableEq σ] (hpq : Disjoint p.vars q.vars) :
+ (p - q).vars = p.vars ∪ q.vars := by
rw [← vars_neg q] at hpq
convert vars_add_of_disjoint hpq using 2 <;> simp [sub_eq_add_neg]
#align mv_polynomial.vars_sub_of_disjoint MvPolynomial.vars_sub_of_disjoint
@@ -180,6 +183,7 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
(hf : ∀ m : σ →₀ ℕ, m ∈ f.support → k ≤ m x → coeff m f = coeff m g)
(hg : ∀ m : σ →₀ ℕ, m ∈ g.support → k ≤ m x → coeff m f = coeff m g) :
degreeOf x (f - g) < k := by
+ classical
rw [degreeOf_lt_iff h]
intro m hm
by_contra' hc
Now that leanprover/lean4#2210 has been merged, this PR:
set_option synthInstance.etaExperiment true
commands (and some etaExperiment%
term elaborators)set_option maxHeartbeats
commandsCo-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -140,13 +140,11 @@ theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
(eval₂Hom f g).map_neg _
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
-set_option synthInstance.etaExperiment true in
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
set_option linter.uppercaseLean3 false in
#align mv_polynomial.hom_C MvPolynomial.hom_C
-set_option synthInstance.etaExperiment true in
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
@[simp]
We make sure that the canonical path from NonAssocSemiring
to Ring
passes through Semiring
,
as this is a path which is followed all the time in linear algebra where the defining semilinear map
σ : R →+* S
depends on the NonAssocSemiring
structure of R
and S
while the module
definition depends on the Semiring
structure.
Tt is not currently possible to adjust priorities by hand (see lean4#2115). Instead, the last
declared instance is used, so we make sure that Semiring
is declared after NonAssocRing
, so
that Semiring -> NonAssocSemiring
is tried before NonAssocRing -> NonAssocSemiring
.
@@ -140,11 +140,13 @@ theorem eval₂_neg : (-p).eval₂ f g = -p.eval₂ f g :=
(eval₂Hom f g).map_neg _
#align mv_polynomial.eval₂_neg MvPolynomial.eval₂_neg
+set_option synthInstance.etaExperiment true in
theorem hom_C (f : MvPolynomial σ ℤ →+* S) (n : ℤ) : f (C n) = (n : S) :=
eq_intCast (f.comp C) n
set_option linter.uppercaseLean3 false in
#align mv_polynomial.hom_C MvPolynomial.hom_C
+set_option synthInstance.etaExperiment true in
/-- A ring homomorphism f : Z[X_1, X_2, ...] → R
is determined by the evaluations f(X_1), f(X_2), ... -/
@[simp]
This PR fixes two things:
align
statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align
). This is often seen in the mathport output after ending calc
blocks.#align
statements. (This was needed for a script I wrote for #3630.)@@ -205,7 +205,6 @@ theorem totalDegree_sub (a b : MvPolynomial σ R) :
(a - b).totalDegree = (a + -b).totalDegree := by rw [sub_eq_add_neg]
_ ≤ max a.totalDegree (-b).totalDegree := (totalDegree_add a (-b))
_ = max a.totalDegree b.totalDegree := by rw [totalDegree_neg]
-
#align mv_polynomial.total_degree_sub MvPolynomial.totalDegree_sub
end TotalDegree
@@ -24,7 +24,7 @@ As in other polynomial files, we typically use the notation:
+ `σ : Type*` (indexing the variables)
-+ `R : Type*` `[CommRing R]` (the coefficients)
++ `R : Type _` `[CommRing R]` (the coefficients)
+ `s : σ →₀ ℕ`, a function from `σ` to `ℕ` which is zero away from a finite set.
This will give rise to a monomial in `MvPolynomial σ R` which mathematicians might call `X^s`
@@ -40,11 +40,7 @@ This will give rise to a monomial in `MvPolynomial σ R` which mathematicians mi
noncomputable section
-open Classical BigOperators
-
-open Set Function Finsupp AddMonoidAlgebra
-
-open BigOperators
+open Classical BigOperators Set Function Finsupp AddMonoidAlgebra
universe u v
@@ -161,9 +157,9 @@ theorem eval₂Hom_X {R : Type u} (c : ℤ →+* S) (f : MvPolynomial R ℤ →+
(fun p q hp hq => by
rw [eval₂_add, hp, hq]
exact (f.map_add _ _).symm)
- fun p n hp => by
- rw [eval₂_mul, eval₂_X, hp]
- exact (f.map_mul _ _).symm
+ (fun p n hp => by
+ rw [eval₂_mul, eval₂_X, hp]
+ exact (f.map_mul _ _).symm)
set_option linter.uppercaseLean3 false in
#align mv_polynomial.eval₂_hom_X MvPolynomial.eval₂Hom_X
@@ -186,8 +182,7 @@ theorem degreeOf_sub_lt {x : σ} {f g : MvPolynomial σ R} {k : ℕ} (h : 0 < k)
degreeOf x (f - g) < k := by
rw [degreeOf_lt_iff h]
intro m hm
- by_contra hc
- simp only [not_lt] at hc
+ by_contra' hc
have h := support_sub σ f g hm
simp only [mem_support_iff, Ne.def, coeff_sub, sub_eq_zero] at hm
cases' Finset.mem_union.1 h with cf cg
The unported dependencies are