ring_theory.witt_vector.witt_polynomial
⟷
Mathlib.RingTheory.WittVector.WittPolynomial
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -122,7 +122,7 @@ variable {R} {S : Type _} [CommRing S]
@[simp]
theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
by
- rw [wittPolynomial, RingHom.map_sum, wittPolynomial, sum_congr rfl]
+ rw [wittPolynomial, map_sum, wittPolynomial, sum_congr rfl]
intro i hi
rw [map_monomial, RingHom.map_pow, map_natCast]
#align map_witt_polynomial map_wittPolynomial
@@ -135,7 +135,7 @@ variable (R)
theorem constantCoeff_wittPolynomial [hp : Fact p.Prime] (n : ℕ) :
constantCoeff (wittPolynomial p R n) = 0 :=
by
- simp only [wittPolynomial, RingHom.map_sum, constant_coeff_monomial]
+ simp only [wittPolynomial, map_sum, constant_coeff_monomial]
rw [sum_eq_zero]
rintro i hi
rw [if_neg]
@@ -257,7 +257,7 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
by
apply Nat.strong_induction_on n <;> clear n
intro n IH
- rw [xInTermsOfW_eq, mul_comm, RingHom.map_mul, RingHom.map_sub, RingHom.map_sum, constant_coeff_C,
+ rw [xInTermsOfW_eq, mul_comm, RingHom.map_mul, RingHom.map_sub, map_sum, constant_coeff_C,
sum_eq_zero]
· simp only [constant_coeff_X, sub_zero, MulZeroClass.mul_zero]
· intro m H
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -5,9 +5,9 @@ Authors: Johan Commelin, Robert Y. Lewis
-/
import Algebra.CharP.Invertible
import Data.Fintype.BigOperators
-import Data.MvPolynomial.Degrees
-import Data.MvPolynomial.CommRing
-import Data.MvPolynomial.Expand
+import Algebra.MvPolynomial.Degrees
+import Algebra.MvPolynomial.CommRing
+import Algebra.MvPolynomial.Expand
import Data.ZMod.Basic
#align_import ring_theory.witt_vector.witt_polynomial from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -5,10 +5,10 @@ Authors: Johan Commelin, Robert Y. Lewis
-/
import Algebra.CharP.Invertible
import Data.Fintype.BigOperators
-import Data.MvPolynomial.Variables
+import Data.MvPolynomial.Degrees
import Data.MvPolynomial.CommRing
import Data.MvPolynomial.Expand
-import Data.Zmod.Basic
+import Data.ZMod.Basic
#align_import ring_theory.witt_vector.witt_polynomial from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
@@ -178,7 +178,7 @@ theorem wittPolynomial_zmod_self (n : ℕ) :
rw [sum_range_succ, ← Nat.cast_pow, CharP.cast_eq_zero (ZMod (p ^ (n + 1))) (p ^ (n + 1)), C_0,
MulZeroClass.zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
intro k hk
- rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, alg_hom_C, ← pow_mul, ← pow_succ]
+ rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, alg_hom_C, ← pow_mul, ← pow_succ']
congr
rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (nat.lt_succ_iff.mp hk), ← add_comm]
@@ -350,7 +350,7 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
rw [xInTermsOfW_eq, AlgHom.map_mul, AlgHom.map_sub, bind₁_X_right, alg_hom_C, AlgHom.map_sum]
have : W_ R n - ∑ i in range n, C (p ^ i : R) * X i ^ p ^ (n - i) = C (p ^ n : R) * X n := by
simp only [wittPolynomial_eq_sum_C_mul_X_pow, tsub_self, sum_range_succ_comm, pow_one,
- add_sub_cancel, pow_zero]
+ add_sub_cancel_right, pow_zero]
rw [sum_congr rfl, this]
·-- this is really slow for some reason
rw [mul_right_comm, ← C_mul, ← mul_pow, mul_invOf_self, one_pow, C_1, one_mul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -180,7 +180,7 @@ theorem wittPolynomial_zmod_self (n : ℕ) :
intro k hk
rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, alg_hom_C, ← pow_mul, ← pow_succ]
congr
- rw [mem_range] at hk
+ rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (nat.lt_succ_iff.mp hk), ← add_comm]
#align witt_polynomial_zmod_self wittPolynomial_zmod_self
-/
@@ -261,7 +261,7 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
sum_eq_zero]
· simp only [constant_coeff_X, sub_zero, MulZeroClass.mul_zero]
· intro m H
- rw [mem_range] at H
+ rw [mem_range] at H
simp only [RingHom.map_mul, RingHom.map_pow, constant_coeff_C, IH m H]
rw [zero_pow, MulZeroClass.mul_zero]
apply pow_pos hp.1.Pos
@@ -297,14 +297,14 @@ theorem xInTermsOfW_vars_aux (n : ℕ) :
all_goals
intro H
replace H := vars_sum_subset _ _ H
- rw [mem_bUnion] at H
+ rw [mem_bUnion] at H
rcases H with ⟨j, hj, H⟩
- rw [vars_C_mul] at H
+ rw [vars_C_mul] at H
swap
· apply pow_ne_zero; exact_mod_cast hp.1.NeZero
- rw [mem_range] at hj
+ rw [mem_range] at hj
replace H := (ih j hj).2 (vars_pow _ _ H)
- rw [mem_range] at H
+ rw [mem_range] at H
· rw [mem_range]
exact lt_of_lt_of_le H hj
· exact lt_irrefl n (lt_of_lt_of_le H hj)
@@ -355,7 +355,7 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
·-- this is really slow for some reason
rw [mul_right_comm, ← C_mul, ← mul_pow, mul_invOf_self, one_pow, C_1, one_mul]
· intro i h
- rw [mem_range] at h
+ rw [mem_range] at h
simp only [AlgHom.map_mul, AlgHom.map_pow, alg_hom_C, H i h]
#align bind₁_witt_polynomial_X_in_terms_of_W bind₁_wittPolynomial_xInTermsOfW
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,12 +3,12 @@ Copyright (c) 2020 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
-/
-import Mathbin.Algebra.CharP.Invertible
-import Mathbin.Data.Fintype.BigOperators
-import Mathbin.Data.MvPolynomial.Variables
-import Mathbin.Data.MvPolynomial.CommRing
-import Mathbin.Data.MvPolynomial.Expand
-import Mathbin.Data.Zmod.Basic
+import Algebra.CharP.Invertible
+import Data.Fintype.BigOperators
+import Data.MvPolynomial.Variables
+import Data.MvPolynomial.CommRing
+import Data.MvPolynomial.Expand
+import Data.Zmod.Basic
#align_import ring_theory.witt_vector.witt_polynomial from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -166,12 +166,12 @@ theorem aeval_wittPolynomial {A : Type _} [CommRing A] [Algebra R A] (f : ℕ
#align aeval_witt_polynomial aeval_wittPolynomial
-/
-#print wittPolynomial_zMod_self /-
+#print wittPolynomial_zmod_self /-
/-- Over the ring `zmod (p^(n+1))`, we produce the `n+1`st Witt polynomial
by expanding the `n`th Witt polynomial by `p`.
-/
@[simp]
-theorem wittPolynomial_zMod_self (n : ℕ) :
+theorem wittPolynomial_zmod_self (n : ℕ) :
W_ (ZMod (p ^ (n + 1))) (n + 1) = expand p (W_ (ZMod (p ^ (n + 1))) n) :=
by
simp only [wittPolynomial_eq_sum_C_mul_X_pow]
@@ -182,7 +182,7 @@ theorem wittPolynomial_zMod_self (n : ℕ) :
congr
rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (nat.lt_succ_iff.mp hk), ← add_comm]
-#align witt_polynomial_zmod_self wittPolynomial_zMod_self
+#align witt_polynomial_zmod_self wittPolynomial_zmod_self
-/
section PPrime
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2020 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
-
-! This file was ported from Lean 3 source module ring_theory.witt_vector.witt_polynomial
-! leanprover-community/mathlib commit 38df578a6450a8c5142b3727e3ae894c2300cae0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.CharP.Invertible
import Mathbin.Data.Fintype.BigOperators
@@ -15,6 +10,8 @@ import Mathbin.Data.MvPolynomial.CommRing
import Mathbin.Data.MvPolynomial.Expand
import Mathbin.Data.Zmod.Basic
+#align_import ring_theory.witt_vector.witt_polynomial from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
+
/-!
# Witt polynomials
mathlib commit https://github.com/leanprover-community/mathlib/commit/8b981918a93bc45a8600de608cde7944a80d92b9
@@ -89,15 +89,15 @@ noncomputable def wittPolynomial (n : ℕ) : MvPolynomial ℕ R :=
#align witt_polynomial wittPolynomial
-/
-#print wittPolynomial_eq_sum_c_mul_x_pow /-
-theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
+#print wittPolynomial_eq_sum_C_mul_X_pow /-
+theorem wittPolynomial_eq_sum_C_mul_X_pow (n : ℕ) :
wittPolynomial p R n = ∑ i in range (n + 1), C (p ^ i : R) * X i ^ p ^ (n - i) :=
by
apply sum_congr rfl
rintro i -
rw [monomial_eq, Finsupp.prod_single_index]
rw [pow_zero]
-#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_c_mul_x_pow
+#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_C_mul_X_pow
-/
/-! We set up notation locally to this file, to keep statements short and comprehensible.
@@ -157,7 +157,7 @@ theorem wittPolynomial_zero : wittPolynomial p R 0 = X 0 := by
#print wittPolynomial_one /-
@[simp]
theorem wittPolynomial_one : wittPolynomial p R 1 = C ↑p * X 1 + X 0 ^ p := by
- simp only [wittPolynomial_eq_sum_c_mul_x_pow, sum_range_succ_comm, range_one, sum_singleton,
+ simp only [wittPolynomial_eq_sum_C_mul_X_pow, sum_range_succ_comm, range_one, sum_singleton,
one_mul, pow_one, C_1, pow_zero]
#align witt_polynomial_one wittPolynomial_one
-/
@@ -177,7 +177,7 @@ by expanding the `n`th Witt polynomial by `p`.
theorem wittPolynomial_zMod_self (n : ℕ) :
W_ (ZMod (p ^ (n + 1))) (n + 1) = expand p (W_ (ZMod (p ^ (n + 1))) n) :=
by
- simp only [wittPolynomial_eq_sum_c_mul_x_pow]
+ simp only [wittPolynomial_eq_sum_C_mul_X_pow]
rw [sum_range_succ, ← Nat.cast_pow, CharP.cast_eq_zero (ZMod (p ^ (n + 1))) (p ^ (n + 1)), C_0,
MulZeroClass.zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
intro k hk
@@ -335,7 +335,7 @@ theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
bind₁ (xInTermsOfW p R) (W_ R k) = X k :=
by
- rw [wittPolynomial_eq_sum_c_mul_x_pow, AlgHom.map_sum]
+ rw [wittPolynomial_eq_sum_C_mul_X_pow, AlgHom.map_sum]
simp only [AlgHom.map_pow, C_pow, AlgHom.map_mul, alg_hom_C]
rw [sum_range_succ_comm, tsub_self, pow_zero, pow_one, bind₁_X_right, mul_comm, ← C_pow,
xInTermsOfW_aux]
@@ -352,7 +352,7 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
clear n; intro n H
rw [xInTermsOfW_eq, AlgHom.map_mul, AlgHom.map_sub, bind₁_X_right, alg_hom_C, AlgHom.map_sum]
have : W_ R n - ∑ i in range n, C (p ^ i : R) * X i ^ p ^ (n - i) = C (p ^ n : R) * X n := by
- simp only [wittPolynomial_eq_sum_c_mul_x_pow, tsub_self, sum_range_succ_comm, pow_one,
+ simp only [wittPolynomial_eq_sum_C_mul_X_pow, tsub_self, sum_range_succ_comm, pow_one,
add_sub_cancel, pow_zero]
rw [sum_congr rfl, this]
·-- this is really slow for some reason
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -89,6 +89,7 @@ noncomputable def wittPolynomial (n : ℕ) : MvPolynomial ℕ R :=
#align witt_polynomial wittPolynomial
-/
+#print wittPolynomial_eq_sum_c_mul_x_pow /-
theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
wittPolynomial p R n = ∑ i in range (n + 1), C (p ^ i : R) * X i ^ p ^ (n - i) :=
by
@@ -97,16 +98,15 @@ theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
rw [monomial_eq, Finsupp.prod_single_index]
rw [pow_zero]
#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_c_mul_x_pow
+-/
/-! We set up notation locally to this file, to keep statements short and comprehensible.
This allows us to simply write `W n` or `W_ ℤ n`. -/
--- mathport name: witt_polynomial
-- Notation with ring of coefficients explicit
scoped[Witt] notation "W_" => wittPolynomial p
--- mathport name: witt_polynomial.infer
-- Notation with ring of coefficients implicit
scoped[Witt] notation "W" => wittPolynomial p hole!
@@ -121,6 +121,7 @@ section
variable {R} {S : Type _} [CommRing S]
+#print map_wittPolynomial /-
@[simp]
theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
by
@@ -128,9 +129,11 @@ theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
intro i hi
rw [map_monomial, RingHom.map_pow, map_natCast]
#align map_witt_polynomial map_wittPolynomial
+-/
variable (R)
+#print constantCoeff_wittPolynomial /-
@[simp]
theorem constantCoeff_wittPolynomial [hp : Fact p.Prime] (n : ℕ) :
constantCoeff (wittPolynomial p R n) = 0 :=
@@ -142,6 +145,7 @@ theorem constantCoeff_wittPolynomial [hp : Fact p.Prime] (n : ℕ) :
rw [Finsupp.single_eq_zero]
exact ne_of_gt (pow_pos hp.1.Pos _)
#align constant_coeff_witt_polynomial constantCoeff_wittPolynomial
+-/
#print wittPolynomial_zero /-
@[simp]
@@ -150,17 +154,22 @@ theorem wittPolynomial_zero : wittPolynomial p R 0 = X 0 := by
#align witt_polynomial_zero wittPolynomial_zero
-/
+#print wittPolynomial_one /-
@[simp]
theorem wittPolynomial_one : wittPolynomial p R 1 = C ↑p * X 1 + X 0 ^ p := by
simp only [wittPolynomial_eq_sum_c_mul_x_pow, sum_range_succ_comm, range_one, sum_singleton,
one_mul, pow_one, C_1, pow_zero]
#align witt_polynomial_one wittPolynomial_one
+-/
+#print aeval_wittPolynomial /-
theorem aeval_wittPolynomial {A : Type _} [CommRing A] [Algebra R A] (f : ℕ → A) (n : ℕ) :
aeval f (W_ R n) = ∑ i in range (n + 1), p ^ i * f i ^ p ^ (n - i) := by
simp [wittPolynomial, AlgHom.map_sum, aeval_monomial, Finsupp.prod_single_index]
#align aeval_witt_polynomial aeval_wittPolynomial
+-/
+#print wittPolynomial_zMod_self /-
/-- Over the ring `zmod (p^(n+1))`, we produce the `n+1`st Witt polynomial
by expanding the `n`th Witt polynomial by `p`.
-/
@@ -177,13 +186,13 @@ theorem wittPolynomial_zMod_self (n : ℕ) :
rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (nat.lt_succ_iff.mp hk), ← add_comm]
#align witt_polynomial_zmod_self wittPolynomial_zMod_self
+-/
section PPrime
variable [hp : NeZero p]
-include hp
-
+#print wittPolynomial_vars /-
theorem wittPolynomial_vars [CharZero R] (n : ℕ) : (wittPolynomial p R n).vars = range (n + 1) :=
by
have : ∀ i, (monomial (Finsupp.single i (p ^ (n - i))) (p ^ i : R)).vars = {i} :=
@@ -199,6 +208,7 @@ theorem wittPolynomial_vars [CharZero R] (n : ℕ) : (wittPolynomial p R n).vars
apply disjoint_singleton_left.mpr
rwa [mem_singleton]
#align witt_polynomial_vars wittPolynomial_vars
+-/
#print wittPolynomial_vars_subset /-
theorem wittPolynomial_vars_subset (n : ℕ) : (wittPolynomial p R n).vars ⊆ range (n + 1) :=
@@ -222,6 +232,7 @@ The polynomials `X_in_terms_of_W` give the coordinate transformation in the back
-/
+#print xInTermsOfW /-
/-- The `X_in_terms_of_W p R n` is the polynomial on the basis of Witt polynomials
that corresponds to the ordinary `X n`. -/
noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
@@ -232,13 +243,17 @@ noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
C (p ^ (i : ℕ) : R) * xInTermsOfW i ^ p ^ (n - i)) *
C (⅟ p ^ n : R)
#align X_in_terms_of_W xInTermsOfW
+-/
+#print xInTermsOfW_eq /-
theorem xInTermsOfW_eq [Invertible (p : R)] {n : ℕ} :
xInTermsOfW p R n =
(X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i)) * C (⅟ p ^ n : R) :=
by rw [xInTermsOfW, ← Fin.sum_univ_eq_sum_range]
#align X_in_terms_of_W_eq xInTermsOfW_eq
+-/
+#print constantCoeff_xInTermsOfW /-
@[simp]
theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n : ℕ) :
constantCoeff (xInTermsOfW p R n) = 0 :=
@@ -254,18 +269,19 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
rw [zero_pow, MulZeroClass.mul_zero]
apply pow_pos hp.1.Pos
#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfW
+-/
+#print xInTermsOfW_zero /-
@[simp]
theorem xInTermsOfW_zero [Invertible (p : R)] : xInTermsOfW p R 0 = X 0 := by
rw [xInTermsOfW_eq, range_zero, sum_empty, pow_zero, C_1, mul_one, sub_zero]
#align X_in_terms_of_W_zero xInTermsOfW_zero
+-/
section PPrime
variable [hp : Fact p.Prime]
-include hp
-
#print xInTermsOfW_vars_aux /-
theorem xInTermsOfW_vars_aux (n : ℕ) :
n ∈ (xInTermsOfW p ℚ n).vars ∧ (xInTermsOfW p ℚ n).vars ⊆ range (n + 1) :=
@@ -306,12 +322,15 @@ theorem xInTermsOfW_vars_subset (n : ℕ) : (xInTermsOfW p ℚ n).vars ⊆ range
end PPrime
+#print xInTermsOfW_aux /-
theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
xInTermsOfW p R n * C (p ^ n : R) =
X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i) :=
by rw [xInTermsOfW_eq, mul_assoc, ← C_mul, ← mul_pow, invOf_mul_self, one_pow, C_1, mul_one]
#align X_in_terms_of_W_aux xInTermsOfW_aux
+-/
+#print bind₁_xInTermsOfW_wittPolynomial /-
@[simp]
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
bind₁ (xInTermsOfW p R) (W_ R k) = X k :=
@@ -322,7 +341,9 @@ theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
xInTermsOfW_aux]
simp only [C_pow, bind₁_X_right, sub_add_cancel]
#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomial
+-/
+#print bind₁_wittPolynomial_xInTermsOfW /-
@[simp]
theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
bind₁ (W_ R) (xInTermsOfW p R n) = X n :=
@@ -340,4 +361,5 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
rw [mem_range] at h
simp only [AlgHom.map_mul, AlgHom.map_pow, alg_hom_C, H i h]
#align bind₁_witt_polynomial_X_in_terms_of_W bind₁_wittPolynomial_xInTermsOfW
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -330,7 +330,7 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
apply Nat.strong_induction_on n
clear n; intro n H
rw [xInTermsOfW_eq, AlgHom.map_mul, AlgHom.map_sub, bind₁_X_right, alg_hom_C, AlgHom.map_sum]
- have : (W_ R n - ∑ i in range n, C (p ^ i : R) * X i ^ p ^ (n - i)) = C (p ^ n : R) * X n := by
+ have : W_ R n - ∑ i in range n, C (p ^ i : R) * X i ^ p ^ (n - i) = C (p ^ n : R) * X n := by
simp only [wittPolynomial_eq_sum_c_mul_x_pow, tsub_self, sum_range_succ_comm, pow_one,
add_sub_cancel, pow_zero]
rw [sum_congr rfl, this]
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -174,7 +174,7 @@ theorem wittPolynomial_zMod_self (n : ℕ) :
intro k hk
rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, alg_hom_C, ← pow_mul, ← pow_succ]
congr
- rw [mem_range] at hk
+ rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (nat.lt_succ_iff.mp hk), ← add_comm]
#align witt_polynomial_zmod_self wittPolynomial_zMod_self
@@ -249,7 +249,7 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
sum_eq_zero]
· simp only [constant_coeff_X, sub_zero, MulZeroClass.mul_zero]
· intro m H
- rw [mem_range] at H
+ rw [mem_range] at H
simp only [RingHom.map_mul, RingHom.map_pow, constant_coeff_C, IH m H]
rw [zero_pow, MulZeroClass.mul_zero]
apply pow_pos hp.1.Pos
@@ -284,14 +284,14 @@ theorem xInTermsOfW_vars_aux (n : ℕ) :
all_goals
intro H
replace H := vars_sum_subset _ _ H
- rw [mem_bUnion] at H
+ rw [mem_bUnion] at H
rcases H with ⟨j, hj, H⟩
- rw [vars_C_mul] at H
+ rw [vars_C_mul] at H
swap
· apply pow_ne_zero; exact_mod_cast hp.1.NeZero
- rw [mem_range] at hj
+ rw [mem_range] at hj
replace H := (ih j hj).2 (vars_pow _ _ H)
- rw [mem_range] at H
+ rw [mem_range] at H
· rw [mem_range]
exact lt_of_lt_of_le H hj
· exact lt_irrefl n (lt_of_lt_of_le H hj)
@@ -337,7 +337,7 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
·-- this is really slow for some reason
rw [mul_right_comm, ← C_mul, ← mul_pow, mul_invOf_self, one_pow, C_1, one_mul]
· intro i h
- rw [mem_range] at h
+ rw [mem_range] at h
simp only [AlgHom.map_mul, AlgHom.map_pow, alg_hom_C, H i h]
#align bind₁_witt_polynomial_X_in_terms_of_W bind₁_wittPolynomial_xInTermsOfW
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -156,14 +156,11 @@ theorem wittPolynomial_one : wittPolynomial p R 1 = C ↑p * X 1 + X 0 ^ p := by
one_mul, pow_one, C_1, pow_zero]
#align witt_polynomial_one wittPolynomial_one
-#print aeval_wittPolynomial /-
theorem aeval_wittPolynomial {A : Type _} [CommRing A] [Algebra R A] (f : ℕ → A) (n : ℕ) :
aeval f (W_ R n) = ∑ i in range (n + 1), p ^ i * f i ^ p ^ (n - i) := by
simp [wittPolynomial, AlgHom.map_sum, aeval_monomial, Finsupp.prod_single_index]
#align aeval_witt_polynomial aeval_wittPolynomial
--/
-#print wittPolynomial_zMod_self /-
/-- Over the ring `zmod (p^(n+1))`, we produce the `n+1`st Witt polynomial
by expanding the `n`th Witt polynomial by `p`.
-/
@@ -180,7 +177,6 @@ theorem wittPolynomial_zMod_self (n : ℕ) :
rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (nat.lt_succ_iff.mp hk), ← add_comm]
#align witt_polynomial_zmod_self wittPolynomial_zMod_self
--/
section PPrime
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -70,7 +70,7 @@ open Finset hiding map
open Finsupp (single)
-open BigOperators
+open scoped BigOperators
attribute [-simp] coe_eval₂_hom
@@ -110,7 +110,7 @@ scoped[Witt] notation "W_" => wittPolynomial p
-- Notation with ring of coefficients implicit
scoped[Witt] notation "W" => wittPolynomial p hole!
-open Witt
+open scoped Witt
open MvPolynomial
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -89,9 +89,6 @@ noncomputable def wittPolynomial (n : ℕ) : MvPolynomial ℕ R :=
#align witt_polynomial wittPolynomial
-/
-/- warning: witt_polynomial_eq_sum_C_mul_X_pow -> wittPolynomial_eq_sum_c_mul_x_pow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_c_mul_x_powₓ'. -/
theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
wittPolynomial p R n = ∑ i in range (n + 1), C (p ^ i : R) * X i ^ p ^ (n - i) :=
by
@@ -124,9 +121,6 @@ section
variable {R} {S : Type _} [CommRing S]
-/- warning: map_witt_polynomial -> map_wittPolynomial is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align map_witt_polynomial map_wittPolynomialₓ'. -/
@[simp]
theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
by
@@ -137,12 +131,6 @@ theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
variable (R)
-/- warning: constant_coeff_witt_polynomial -> constantCoeff_wittPolynomial is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] (n : Nat), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> R) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n)) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n)) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (CommSemiring.toCommMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align constant_coeff_witt_polynomial constantCoeff_wittPolynomialₓ'. -/
@[simp]
theorem constantCoeff_wittPolynomial [hp : Fact p.Prime] (n : ℕ) :
constantCoeff (wittPolynomial p R n) = 0 :=
@@ -162,9 +150,6 @@ theorem wittPolynomial_zero : wittPolynomial p R 0 = X 0 := by
#align witt_polynomial_zero wittPolynomial_zero
-/
-/- warning: witt_polynomial_one -> wittPolynomial_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align witt_polynomial_one wittPolynomial_oneₓ'. -/
@[simp]
theorem wittPolynomial_one : wittPolynomial p R 1 = C ↑p * X 1 + X 0 ^ p := by
simp only [wittPolynomial_eq_sum_c_mul_x_pow, sum_range_succ_comm, range_one, sum_singleton,
@@ -203,12 +188,6 @@ variable [hp : NeZero p]
include hp
-/- warning: witt_polynomial_vars -> wittPolynomial_vars is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : NeZero.{0} Nat Nat.hasZero p] [_inst_3 : CharZero.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))] (n : Nat), Eq.{1} (Finset.{0} Nat) (MvPolynomial.vars.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1 n)) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : NeZero.{0} Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) p] [_inst_3 : CharZero.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (Ring.toAddGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))] (n : Nat), Eq.{1} (Finset.{0} Nat) (MvPolynomial.vars.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1 n)) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))
-Case conversion may be inaccurate. Consider using '#align witt_polynomial_vars wittPolynomial_varsₓ'. -/
theorem wittPolynomial_vars [CharZero R] (n : ℕ) : (wittPolynomial p R n).vars = range (n + 1) :=
by
have : ∀ i, (monomial (Finsupp.single i (p ^ (n - i))) (p ^ i : R)).vars = {i} :=
@@ -247,12 +226,6 @@ The polynomials `X_in_terms_of_W` give the coordinate transformation in the back
-/
-/- warning: X_in_terms_of_W -> xInTermsOfW is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)], Nat -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)], Nat -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))
-Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W xInTermsOfWₓ'. -/
/-- The `X_in_terms_of_W p R n` is the polynomial on the basis of Witt polynomials
that corresponds to the ordinary `X n`. -/
noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
@@ -264,21 +237,12 @@ noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
C (⅟ p ^ n : R)
#align X_in_terms_of_W xInTermsOfW
-/- warning: X_in_terms_of_W_eq -> xInTermsOfW_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_eq xInTermsOfW_eqₓ'. -/
theorem xInTermsOfW_eq [Invertible (p : R)] {n : ℕ} :
xInTermsOfW p R n =
(X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i)) * C (⅟ p ^ n : R) :=
by rw [xInTermsOfW, ← Fin.sum_univ_eq_sum_range]
#align X_in_terms_of_W_eq xInTermsOfW_eq
-/- warning: constant_coeff_X_in_terms_of_W -> constantCoeff_xInTermsOfW is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (n : Nat), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> R) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (CommSemiring.toCommMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfWₓ'. -/
@[simp]
theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n : ℕ) :
constantCoeff (xInTermsOfW p R n) = 0 :=
@@ -295,12 +259,6 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
apply pow_pos hp.1.Pos
#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfW
-/- warning: X_in_terms_of_W_zero -> xInTermsOfW_zero is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))
-Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_zero xInTermsOfW_zeroₓ'. -/
@[simp]
theorem xInTermsOfW_zero [Invertible (p : R)] : xInTermsOfW p R 0 = X 0 := by
rw [xInTermsOfW_eq, range_zero, sum_empty, pow_zero, C_1, mul_one, sub_zero]
@@ -352,18 +310,12 @@ theorem xInTermsOfW_vars_subset (n : ℕ) : (xInTermsOfW p ℚ n).vars ⊆ range
end PPrime
-/- warning: X_in_terms_of_W_aux -> xInTermsOfW_aux is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_aux xInTermsOfW_auxₓ'. -/
theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
xInTermsOfW p R n * C (p ^ n : R) =
X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i) :=
by rw [xInTermsOfW_eq, mul_assoc, ← C_mul, ← mul_pow, invOf_mul_self, one_pow, C_1, mul_one]
#align X_in_terms_of_W_aux xInTermsOfW_aux
-/- warning: bind₁_X_in_terms_of_W_witt_polynomial -> bind₁_xInTermsOfW_wittPolynomial is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomialₓ'. -/
@[simp]
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
bind₁ (xInTermsOfW p R) (W_ R k) = X k :=
@@ -375,9 +327,6 @@ theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
simp only [C_pow, bind₁_X_right, sub_add_cancel]
#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomial
-/- warning: bind₁_witt_polynomial_X_in_terms_of_W -> bind₁_wittPolynomial_xInTermsOfW is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align bind₁_witt_polynomial_X_in_terms_of_W bind₁_wittPolynomial_xInTermsOfWₓ'. -/
@[simp]
theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
bind₁ (W_ R) (xInTermsOfW p R n) = X n :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -334,8 +334,7 @@ theorem xInTermsOfW_vars_aux (n : ℕ) :
rcases H with ⟨j, hj, H⟩
rw [vars_C_mul] at H
swap
- · apply pow_ne_zero
- exact_mod_cast hp.1.NeZero
+ · apply pow_ne_zero; exact_mod_cast hp.1.NeZero
rw [mem_range] at hj
replace H := (ih j hj).2 (vars_pow _ _ H)
rw [mem_range] at H
@@ -384,8 +383,7 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
bind₁ (W_ R) (xInTermsOfW p R n) = X n :=
by
apply Nat.strong_induction_on n
- clear n
- intro n H
+ clear n; intro n H
rw [xInTermsOfW_eq, AlgHom.map_mul, AlgHom.map_sub, bind₁_X_right, alg_hom_C, AlgHom.map_sum]
have : (W_ R n - ∑ i in range n, C (p ^ i : R) * X i ^ p ^ (n - i)) = C (p ^ n : R) * X n := by
simp only [wittPolynomial_eq_sum_c_mul_x_pow, tsub_self, sum_range_succ_comm, pow_one,
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -90,10 +90,7 @@ noncomputable def wittPolynomial (n : ℕ) : MvPolynomial ℕ R :=
-/
/- warning: witt_polynomial_eq_sum_C_mul_X_pow -> wittPolynomial_eq_sum_c_mul_x_pow is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (AddCommGroup.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toAddCommGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) n i)))))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) n i)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_c_mul_x_powₓ'. -/
theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
wittPolynomial p R n = ∑ i in range (n + 1), C (p ^ i : R) * X i ^ p ^ (n - i) :=
@@ -128,10 +125,7 @@ section
variable {R} {S : Type _} [CommRing S]
/- warning: map_witt_polynomial -> map_wittPolynomial is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] {S : Type.{u2}} [_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)))) (n : Nat), Eq.{succ u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (MvPolynomial.commSemiring.{u2, 0} S Nat (CommRing.toCommSemiring.{u2} S _inst_2))))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (MvPolynomial.commSemiring.{u2, 0} S Nat (CommRing.toCommSemiring.{u2} S _inst_2))))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (MvPolynomial.commSemiring.{u2, 0} S Nat (CommRing.toCommSemiring.{u2} S _inst_2))))) (MvPolynomial.map.{u1, u2, 0} R S Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f) (wittPolynomial.{u1} p R _inst_1 n)) (wittPolynomial.{u2} p S _inst_2 n)
-but is expected to have type
- forall (p : Nat) {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {S : Type.{u1}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) => MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (wittPolynomial.{u2} p R _inst_1 n)) (FunLike.coe.{max (max (succ u2) (succ u1)) 1, succ u2, succ u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (fun (_x : MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) => MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2)))) (RingHom.instRingHomClassRingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2)))))))) (MvPolynomial.map.{u2, u1, 0} R S Nat (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u1} S _inst_2) f) (wittPolynomial.{u2} p R _inst_1 n)) (wittPolynomial.{u1} p S _inst_2 n)
+<too large>
Case conversion may be inaccurate. Consider using '#align map_witt_polynomial map_wittPolynomialₓ'. -/
@[simp]
theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
@@ -169,10 +163,7 @@ theorem wittPolynomial_zero : wittPolynomial p R 0 = X 0 := by
-/
/- warning: witt_polynomial_one -> wittPolynomial_one is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (HAdd.hAdd.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHAdd.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) p))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (HAdd.hAdd.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHAdd.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (Distrib.toAdd.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonUnitalNonAssocSemiring.toDistrib.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) p))
+<too large>
Case conversion may be inaccurate. Consider using '#align witt_polynomial_one wittPolynomial_oneₓ'. -/
@[simp]
theorem wittPolynomial_one : wittPolynomial p R 1 = C ↑p * X 1 + X 0 ^ p := by
@@ -274,10 +265,7 @@ noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
#align X_in_terms_of_W xInTermsOfW
/- warning: X_in_terms_of_W_eq -> xInTermsOfW_eq is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] {n : Nat}, Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (AddCommGroup.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toAddCommGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) n i)))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Invertible.invOf.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) _inst_2) n)))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] {n : Nat}, Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Invertible.invOf.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) _inst_2) n)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) n i)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Invertible.invOf.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) _inst_2) n)))
+<too large>
Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_eq xInTermsOfW_eqₓ'. -/
theorem xInTermsOfW_eq [Invertible (p : R)] {n : ℕ} :
xInTermsOfW p R n =
@@ -366,10 +354,7 @@ theorem xInTermsOfW_vars_subset (n : ℕ) : (xInTermsOfW p ℚ n).vars ⊆ range
end PPrime
/- warning: X_in_terms_of_W_aux -> xInTermsOfW_aux is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) n))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (AddCommGroup.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toAddCommGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) n i))))))
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) n)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) n))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) n i))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_aux xInTermsOfW_auxₓ'. -/
theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
xInTermsOfW p R n * C (p ^ n : R) =
@@ -378,10 +363,7 @@ theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
#align X_in_terms_of_W_aux xInTermsOfW_aux
/- warning: bind₁_X_in_terms_of_W_witt_polynomial -> bind₁_xInTermsOfW_wittPolynomial is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (k : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) ([anonymous].{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (xInTermsOfW.{u1} p R _inst_1 _inst_2)) (wittPolynomial.{u1} p R _inst_1 k)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) k)
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (k : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 k)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (xInTermsOfW.{u1} p R _inst_1 _inst_2)) (wittPolynomial.{u1} p R _inst_1 k)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) k)
+<too large>
Case conversion may be inaccurate. Consider using '#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomialₓ'. -/
@[simp]
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
@@ -395,10 +377,7 @@ theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomial
/- warning: bind₁_witt_polynomial_X_in_terms_of_W -> bind₁_wittPolynomial_xInTermsOfW is a dubious translation:
-lean 3 declaration is
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) ([anonymous].{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n)
-but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n)
+<too large>
Case conversion may be inaccurate. Consider using '#align bind₁_witt_polynomial_X_in_terms_of_W bind₁_wittPolynomial_xInTermsOfWₓ'. -/
@[simp]
theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -381,7 +381,7 @@ theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
lean 3 declaration is
forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (k : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) ([anonymous].{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (xInTermsOfW.{u1} p R _inst_1 _inst_2)) (wittPolynomial.{u1} p R _inst_1 k)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) k)
but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (k : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 k)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (xInTermsOfW.{u1} p R _inst_1 _inst_2)) (wittPolynomial.{u1} p R _inst_1 k)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) k)
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (k : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 k)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (xInTermsOfW.{u1} p R _inst_1 _inst_2)) (wittPolynomial.{u1} p R _inst_1 k)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) k)
Case conversion may be inaccurate. Consider using '#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomialₓ'. -/
@[simp]
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
@@ -398,7 +398,7 @@ theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
lean 3 declaration is
forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) ([anonymous].{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n)
but is expected to have type
- forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n)
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n)
Case conversion may be inaccurate. Consider using '#align bind₁_witt_polynomial_X_in_terms_of_W bind₁_wittPolynomial_xInTermsOfWₓ'. -/
@[simp]
theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
! This file was ported from Lean 3 source module ring_theory.witt_vector.witt_polynomial
-! leanprover-community/mathlib commit c3019c79074b0619edb4b27553a91b2e82242395
+! leanprover-community/mathlib commit 38df578a6450a8c5142b3727e3ae894c2300cae0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -18,6 +18,9 @@ import Mathbin.Data.Zmod.Basic
/-!
# Witt polynomials
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
To endow `witt_vector p R` with a ring structure,
we need to study the so-called Witt polynomials.
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -75,6 +75,7 @@ variable (p : ℕ)
variable (R : Type _) [CommRing R]
+#print wittPolynomial /-
/-- `witt_polynomial p R n` is the `n`-th Witt polynomial
with respect to a prime `p` with coefficients in a commutative ring `R`.
It is defined as:
@@ -83,7 +84,14 @@ It is defined as:
noncomputable def wittPolynomial (n : ℕ) : MvPolynomial ℕ R :=
∑ i in range (n + 1), monomial (single i (p ^ (n - i))) (p ^ i : R)
#align witt_polynomial wittPolynomial
+-/
+/- warning: witt_polynomial_eq_sum_C_mul_X_pow -> wittPolynomial_eq_sum_c_mul_x_pow is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (AddCommGroup.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toAddCommGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) n i)))))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) n i)))))
+Case conversion may be inaccurate. Consider using '#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_c_mul_x_powₓ'. -/
theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
wittPolynomial p R n = ∑ i in range (n + 1), C (p ^ i : R) * X i ^ p ^ (n - i) :=
by
@@ -116,6 +124,12 @@ section
variable {R} {S : Type _} [CommRing S]
+/- warning: map_witt_polynomial -> map_wittPolynomial is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] {S : Type.{u2}} [_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)))) (n : Nat), Eq.{succ u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (MvPolynomial.commSemiring.{u2, 0} S Nat (CommRing.toCommSemiring.{u2} S _inst_2))))) (fun (_x : RingHom.{u1, u2} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (MvPolynomial.commSemiring.{u2, 0} S Nat (CommRing.toCommSemiring.{u2} S _inst_2))))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.hasCoeToFun.{u1, u2} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat S (CommRing.toCommSemiring.{u2} S _inst_2)) (MvPolynomial.commSemiring.{u2, 0} S Nat (CommRing.toCommSemiring.{u2} S _inst_2))))) (MvPolynomial.map.{u1, u2, 0} R S Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u2} S _inst_2) f) (wittPolynomial.{u1} p R _inst_1 n)) (wittPolynomial.{u2} p S _inst_2 n)
+but is expected to have type
+ forall (p : Nat) {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {S : Type.{u1}} [_inst_2 : CommRing.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) => MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (wittPolynomial.{u2} p R _inst_1 n)) (FunLike.coe.{max (max (succ u2) (succ u1)) 1, succ u2, succ u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (fun (_x : MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) => MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2))))) (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2)))) (RingHom.instRingHomClassRingHom.{u2, u1} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} (MvPolynomial.{0, u2} Nat R (CommRing.toCommSemiring.{u2} R _inst_1)) (MvPolynomial.commSemiring.{u2, 0} R Nat (CommRing.toCommSemiring.{u2} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat S (CommRing.toCommSemiring.{u1} S _inst_2)) (MvPolynomial.commSemiring.{u1, 0} S Nat (CommRing.toCommSemiring.{u1} S _inst_2)))))))) (MvPolynomial.map.{u2, u1, 0} R S Nat (CommRing.toCommSemiring.{u2} R _inst_1) (CommRing.toCommSemiring.{u1} S _inst_2) f) (wittPolynomial.{u2} p R _inst_1 n)) (wittPolynomial.{u1} p S _inst_2 n)
+Case conversion may be inaccurate. Consider using '#align map_witt_polynomial map_wittPolynomialₓ'. -/
@[simp]
theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
by
@@ -126,6 +140,12 @@ theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n :=
variable (R)
+/- warning: constant_coeff_witt_polynomial -> constantCoeff_wittPolynomial is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] (n : Nat), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> R) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n)) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 n)) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (CommSemiring.toCommMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (wittPolynomial.{u1} p R _inst_1 n)) _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align constant_coeff_witt_polynomial constantCoeff_wittPolynomialₓ'. -/
@[simp]
theorem constantCoeff_wittPolynomial [hp : Fact p.Prime] (n : ℕ) :
constantCoeff (wittPolynomial p R n) = 0 :=
@@ -138,22 +158,33 @@ theorem constantCoeff_wittPolynomial [hp : Fact p.Prime] (n : ℕ) :
exact ne_of_gt (pow_pos hp.1.Pos _)
#align constant_coeff_witt_polynomial constantCoeff_wittPolynomial
+#print wittPolynomial_zero /-
@[simp]
theorem wittPolynomial_zero : wittPolynomial p R 0 = X 0 := by
simp only [wittPolynomial, X, sum_singleton, range_one, pow_zero]
#align witt_polynomial_zero wittPolynomial_zero
+-/
+/- warning: witt_polynomial_one -> wittPolynomial_one is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (HAdd.hAdd.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHAdd.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) p))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (HAdd.hAdd.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHAdd.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (Distrib.toAdd.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonUnitalNonAssocSemiring.toDistrib.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) p))
+Case conversion may be inaccurate. Consider using '#align witt_polynomial_one wittPolynomial_oneₓ'. -/
@[simp]
theorem wittPolynomial_one : wittPolynomial p R 1 = C ↑p * X 1 + X 0 ^ p := by
simp only [wittPolynomial_eq_sum_c_mul_x_pow, sum_range_succ_comm, range_one, sum_singleton,
one_mul, pow_one, C_1, pow_zero]
#align witt_polynomial_one wittPolynomial_one
+#print aeval_wittPolynomial /-
theorem aeval_wittPolynomial {A : Type _} [CommRing A] [Algebra R A] (f : ℕ → A) (n : ℕ) :
aeval f (W_ R n) = ∑ i in range (n + 1), p ^ i * f i ^ p ^ (n - i) := by
simp [wittPolynomial, AlgHom.map_sum, aeval_monomial, Finsupp.prod_single_index]
#align aeval_witt_polynomial aeval_wittPolynomial
+-/
+#print wittPolynomial_zMod_self /-
/-- Over the ring `zmod (p^(n+1))`, we produce the `n+1`st Witt polynomial
by expanding the `n`th Witt polynomial by `p`.
-/
@@ -170,6 +201,7 @@ theorem wittPolynomial_zMod_self (n : ℕ) :
rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (nat.lt_succ_iff.mp hk), ← add_comm]
#align witt_polynomial_zmod_self wittPolynomial_zMod_self
+-/
section PPrime
@@ -177,6 +209,12 @@ variable [hp : NeZero p]
include hp
+/- warning: witt_polynomial_vars -> wittPolynomial_vars is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : NeZero.{0} Nat Nat.hasZero p] [_inst_3 : CharZero.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))] (n : Nat), Eq.{1} (Finset.{0} Nat) (MvPolynomial.vars.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1 n)) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : NeZero.{0} Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) p] [_inst_3 : CharZero.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (Ring.toAddGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))] (n : Nat), Eq.{1} (Finset.{0} Nat) (MvPolynomial.vars.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1 n)) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))
+Case conversion may be inaccurate. Consider using '#align witt_polynomial_vars wittPolynomial_varsₓ'. -/
theorem wittPolynomial_vars [CharZero R] (n : ℕ) : (wittPolynomial p R n).vars = range (n + 1) :=
by
have : ∀ i, (monomial (Finsupp.single i (p ^ (n - i))) (p ^ i : R)).vars = {i} :=
@@ -193,11 +231,13 @@ theorem wittPolynomial_vars [CharZero R] (n : ℕ) : (wittPolynomial p R n).vars
rwa [mem_singleton]
#align witt_polynomial_vars wittPolynomial_vars
+#print wittPolynomial_vars_subset /-
theorem wittPolynomial_vars_subset (n : ℕ) : (wittPolynomial p R n).vars ⊆ range (n + 1) :=
by
rw [← map_wittPolynomial p (Int.castRingHom R), ← wittPolynomial_vars p ℤ]
apply vars_map
#align witt_polynomial_vars_subset wittPolynomial_vars_subset
+-/
end PPrime
@@ -213,6 +253,12 @@ The polynomials `X_in_terms_of_W` give the coordinate transformation in the back
-/
+/- warning: X_in_terms_of_W -> xInTermsOfW is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)], Nat -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)], Nat -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))
+Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W xInTermsOfWₓ'. -/
/-- The `X_in_terms_of_W p R n` is the polynomial on the basis of Witt polynomials
that corresponds to the ordinary `X n`. -/
noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
@@ -224,12 +270,24 @@ noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
C (⅟ p ^ n : R)
#align X_in_terms_of_W xInTermsOfW
+/- warning: X_in_terms_of_W_eq -> xInTermsOfW_eq is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] {n : Nat}, Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (AddCommGroup.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toAddCommGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) n i)))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Invertible.invOf.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) _inst_2) n)))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] {n : Nat}, Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Invertible.invOf.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) _inst_2) n)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) n i)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Invertible.invOf.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) _inst_2) n)))
+Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_eq xInTermsOfW_eqₓ'. -/
theorem xInTermsOfW_eq [Invertible (p : R)] {n : ℕ} :
xInTermsOfW p R n =
(X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i)) * C (⅟ p ^ n : R) :=
by rw [xInTermsOfW, ← Fin.sum_univ_eq_sum_range]
#align X_in_terms_of_W_eq xInTermsOfW_eq
+/- warning: constant_coeff_X_in_terms_of_W -> constantCoeff_xInTermsOfW is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (n : Nat), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> R) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [hp : Fact (Nat.Prime p)] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) (MvPolynomial.constantCoeff.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (CommSemiring.toCommMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => R) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfWₓ'. -/
@[simp]
theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n : ℕ) :
constantCoeff (xInTermsOfW p R n) = 0 :=
@@ -246,6 +304,12 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
apply pow_pos hp.1.Pos
#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfW
+/- warning: X_in_terms_of_W_zero -> xInTermsOfW_zero is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)], Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))
+Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_zero xInTermsOfW_zeroₓ'. -/
@[simp]
theorem xInTermsOfW_zero [Invertible (p : R)] : xInTermsOfW p R 0 = X 0 := by
rw [xInTermsOfW_eq, range_zero, sum_empty, pow_zero, C_1, mul_one, sub_zero]
@@ -257,6 +321,7 @@ variable [hp : Fact p.Prime]
include hp
+#print xInTermsOfW_vars_aux /-
theorem xInTermsOfW_vars_aux (n : ℕ) :
n ∈ (xInTermsOfW p ℚ n).vars ∧ (xInTermsOfW p ℚ n).vars ⊆ range (n + 1) :=
by
@@ -287,19 +352,34 @@ theorem xInTermsOfW_vars_aux (n : ℕ) :
exact lt_of_lt_of_le H hj
· exact lt_irrefl n (lt_of_lt_of_le H hj)
#align X_in_terms_of_W_vars_aux xInTermsOfW_vars_aux
+-/
+#print xInTermsOfW_vars_subset /-
theorem xInTermsOfW_vars_subset (n : ℕ) : (xInTermsOfW p ℚ n).vars ⊆ range (n + 1) :=
(xInTermsOfW_vars_aux p n).2
#align X_in_terms_of_W_vars_subset xInTermsOfW_vars_subset
+-/
end PPrime
+/- warning: X_in_terms_of_W_aux -> xInTermsOfW_aux is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) n))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SubNegMonoid.toHasSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroup.toSubNegMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddGroupWithOne.toAddGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toAddCommGroupWithOne.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (AddCommGroup.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toAddCommGroup.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Distrib.toHasMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toDistrib.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) => R -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.hasCoeToFun.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commRing.{u1, 0} R Nat _inst_1))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) n i))))))
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HMul.hMul.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) n)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) n))) (HSub.hSub.{u1, u1, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSub.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n) (Finset.sum.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toNonAssocRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toRing.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (Finset.range n) (fun (i : Nat) => HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonUnitalNonAssocRing.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (Ring.toNonAssocRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (MvPolynomial.instCommRingMvPolynomialToCommSemiring.{u1, 0} R Nat _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.C.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p) i)) (HPow.hPow.{u1, 0, u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (instHPow.{u1, 0} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) Nat (Monoid.Pow.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toMonoidWithZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (xInTermsOfW.{u1} p R _inst_1 _inst_2 i) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) p (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) n i))))))
+Case conversion may be inaccurate. Consider using '#align X_in_terms_of_W_aux xInTermsOfW_auxₓ'. -/
theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
xInTermsOfW p R n * C (p ^ n : R) =
X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i) :=
by rw [xInTermsOfW_eq, mul_assoc, ← C_mul, ← mul_pow, invOf_mul_self, one_pow, C_1, mul_one]
#align X_in_terms_of_W_aux xInTermsOfW_aux
+/- warning: bind₁_X_in_terms_of_W_witt_polynomial -> bind₁_xInTermsOfW_wittPolynomial is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (k : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) ([anonymous].{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (xInTermsOfW.{u1} p R _inst_1 _inst_2)) (wittPolynomial.{u1} p R _inst_1 k)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) k)
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (k : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (wittPolynomial.{u1} p R _inst_1 k)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (xInTermsOfW.{u1} p R _inst_1 _inst_2)) (wittPolynomial.{u1} p R _inst_1 k)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) k)
+Case conversion may be inaccurate. Consider using '#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomialₓ'. -/
@[simp]
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
bind₁ (xInTermsOfW p R) (W_ R k) = X k :=
@@ -311,6 +391,12 @@ theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
simp only [C_pow, bind₁_X_right, sub_add_cancel]
#align bind₁_X_in_terms_of_W_witt_polynomial bind₁_xInTermsOfW_wittPolynomial
+/- warning: bind₁_witt_polynomial_X_in_terms_of_W -> bind₁_wittPolynomial_xInTermsOfW is a dubious translation:
+lean 3 declaration is
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) p)] (n : Nat), Eq.{succ u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (coeFn.{succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (fun (_x : AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) => (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) -> (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1))) ([anonymous].{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n)
+but is expected to have type
+ forall (p : Nat) (R : Type.{u1}) [_inst_1 : CommRing.{u1} R] [_inst_2 : Invertible.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Nat.cast.{u1} R (Semiring.toNatCast.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) p)] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (FunLike.coe.{succ u1, succ u1, succ u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (fun (_x : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) => MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) _x) (SMulHomClass.toFunLike.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (SMulZeroClass.toSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toZero.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribSMul.toSMulZeroClass.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddMonoid.toAddZeroClass.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulAction.toDistribSMul.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (DistribMulActionHomClass.toSMulHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (AddCommMonoid.toAddMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{u1, u1, u1, u1} (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Module.toDistribMulAction.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Algebra.toModule.{u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AlgHom.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (AlgHom.algHomClass.{u1, u1, u1} R (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (CommSemiring.toSemiring.{u1} (MvPolynomial.{0, u1} Nat R (CommRing.toCommSemiring.{u1} R _inst_1)) (MvPolynomial.commSemiring.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (MvPolynomial.algebra.{u1, u1, 0} R R Nat (CommRing.toCommSemiring.{u1} R _inst_1) (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) (MvPolynomial.bind₁.{0, 0, u1} Nat Nat R (CommRing.toCommSemiring.{u1} R _inst_1) (wittPolynomial.{u1} p R _inst_1)) (xInTermsOfW.{u1} p R _inst_1 _inst_2 n)) (MvPolynomial.X.{u1, 0} R Nat (CommRing.toCommSemiring.{u1} R _inst_1) n)
+Case conversion may be inaccurate. Consider using '#align bind₁_witt_polynomial_X_in_terms_of_W bind₁_wittPolynomial_xInTermsOfWₓ'. -/
@[simp]
theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
bind₁ (W_ R) (xInTermsOfW p R n) = X n :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a313d8bba1bad05faba71a4a4e9742ab5bd9efd
@@ -85,7 +85,7 @@ noncomputable def wittPolynomial (n : ℕ) : MvPolynomial ℕ R :=
#align witt_polynomial wittPolynomial
theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
- wittPolynomial p R n = ∑ i in range (n + 1), c (p ^ i : R) * x i ^ p ^ (n - i) :=
+ wittPolynomial p R n = ∑ i in range (n + 1), C (p ^ i : R) * X i ^ p ^ (n - i) :=
by
apply sum_congr rfl
rintro i -
@@ -139,12 +139,12 @@ theorem constantCoeff_wittPolynomial [hp : Fact p.Prime] (n : ℕ) :
#align constant_coeff_witt_polynomial constantCoeff_wittPolynomial
@[simp]
-theorem wittPolynomial_zero : wittPolynomial p R 0 = x 0 := by
+theorem wittPolynomial_zero : wittPolynomial p R 0 = X 0 := by
simp only [wittPolynomial, X, sum_singleton, range_one, pow_zero]
#align witt_polynomial_zero wittPolynomial_zero
@[simp]
-theorem wittPolynomial_one : wittPolynomial p R 1 = c ↑p * x 1 + x 0 ^ p := by
+theorem wittPolynomial_one : wittPolynomial p R 1 = C ↑p * X 1 + X 0 ^ p := by
simp only [wittPolynomial_eq_sum_c_mul_x_pow, sum_range_succ_comm, range_one, sum_singleton,
one_mul, pow_one, C_1, pow_zero]
#align witt_polynomial_one wittPolynomial_one
@@ -217,16 +217,16 @@ The polynomials `X_in_terms_of_W` give the coordinate transformation in the back
that corresponds to the ordinary `X n`. -/
noncomputable def xInTermsOfW [Invertible (p : R)] : ℕ → MvPolynomial ℕ R
| n =>
- (x n -
+ (X n -
∑ i : Fin n,
have := i.2
- c (p ^ (i : ℕ) : R) * xInTermsOfW i ^ p ^ (n - i)) *
- c (⅟ p ^ n : R)
+ C (p ^ (i : ℕ) : R) * xInTermsOfW i ^ p ^ (n - i)) *
+ C (⅟ p ^ n : R)
#align X_in_terms_of_W xInTermsOfW
theorem xInTermsOfW_eq [Invertible (p : R)] {n : ℕ} :
xInTermsOfW p R n =
- (x n - ∑ i in range n, c (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i)) * c (⅟ p ^ n : R) :=
+ (X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i)) * C (⅟ p ^ n : R) :=
by rw [xInTermsOfW, ← Fin.sum_univ_eq_sum_range]
#align X_in_terms_of_W_eq xInTermsOfW_eq
@@ -247,7 +247,7 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfW
@[simp]
-theorem xInTermsOfW_zero [Invertible (p : R)] : xInTermsOfW p R 0 = x 0 := by
+theorem xInTermsOfW_zero [Invertible (p : R)] : xInTermsOfW p R 0 = X 0 := by
rw [xInTermsOfW_eq, range_zero, sum_empty, pow_zero, C_1, mul_one, sub_zero]
#align X_in_terms_of_W_zero xInTermsOfW_zero
@@ -295,14 +295,14 @@ theorem xInTermsOfW_vars_subset (n : ℕ) : (xInTermsOfW p ℚ n).vars ⊆ range
end PPrime
theorem xInTermsOfW_aux [Invertible (p : R)] (n : ℕ) :
- xInTermsOfW p R n * c (p ^ n : R) =
- x n - ∑ i in range n, c (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i) :=
+ xInTermsOfW p R n * C (p ^ n : R) =
+ X n - ∑ i in range n, C (p ^ i : R) * xInTermsOfW p R i ^ p ^ (n - i) :=
by rw [xInTermsOfW_eq, mul_assoc, ← C_mul, ← mul_pow, invOf_mul_self, one_pow, C_1, mul_one]
#align X_in_terms_of_W_aux xInTermsOfW_aux
@[simp]
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
- bind₁ (xInTermsOfW p R) (W_ R k) = x k :=
+ bind₁ (xInTermsOfW p R) (W_ R k) = X k :=
by
rw [wittPolynomial_eq_sum_c_mul_x_pow, AlgHom.map_sum]
simp only [AlgHom.map_pow, C_pow, AlgHom.map_mul, alg_hom_C]
@@ -313,7 +313,7 @@ theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
@[simp]
theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
- bind₁ (W_ R) (xInTermsOfW p R n) = x n :=
+ bind₁ (W_ R) (xInTermsOfW p R n) = X n :=
by
apply Nat.strong_induction_on n
clear n
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -163,7 +163,7 @@ theorem wittPolynomial_zMod_self (n : ℕ) :
by
simp only [wittPolynomial_eq_sum_c_mul_x_pow]
rw [sum_range_succ, ← Nat.cast_pow, CharP.cast_eq_zero (ZMod (p ^ (n + 1))) (p ^ (n + 1)), C_0,
- zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
+ MulZeroClass.zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
intro k hk
rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, alg_hom_C, ← pow_mul, ← pow_succ]
congr
@@ -238,11 +238,11 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
intro n IH
rw [xInTermsOfW_eq, mul_comm, RingHom.map_mul, RingHom.map_sub, RingHom.map_sum, constant_coeff_C,
sum_eq_zero]
- · simp only [constant_coeff_X, sub_zero, mul_zero]
+ · simp only [constant_coeff_X, sub_zero, MulZeroClass.mul_zero]
· intro m H
rw [mem_range] at H
simp only [RingHom.map_mul, RingHom.map_pow, constant_coeff_C, IH m H]
- rw [zero_pow, mul_zero]
+ rw [zero_pow, MulZeroClass.mul_zero]
apply pow_pos hp.1.Pos
#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfW
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
All of these changes appear to be oversights to me.
@@ -107,7 +107,7 @@ open Witt
open MvPolynomial
-/- The first observation is that the Witt polynomial doesn't really depend on the coefficient ring.
+/-! The first observation is that the Witt polynomial doesn't really depend on the coefficient ring.
If we map the coefficients through a ring homomorphism, we obtain the corresponding Witt polynomial
over the target ring. -/
section
@@ -151,8 +151,7 @@ theorem aeval_wittPolynomial {A : Type*} [CommRing A] [Algebra R A] (f : ℕ →
#align aeval_witt_polynomial aeval_wittPolynomial
/-- Over the ring `ZMod (p^(n+1))`, we produce the `n+1`st Witt polynomial
-by expanding the `n`th Witt polynomial by `p`.
--/
+by expanding the `n`th Witt polynomial by `p`. -/
@[simp]
theorem wittPolynomial_zmod_self (n : ℕ) :
W_ (ZMod (p ^ (n + 1))) (n + 1) = expand p (W_ (ZMod (p ^ (n + 1))) n) := by
@@ -93,13 +93,11 @@ set_option linter.uppercaseLean3 false in
This allows us to simply write `W n` or `W_ ℤ n`. -/
--- mathport name: witt_polynomial
-- Notation with ring of coefficients explicit
set_option quotPrecheck false in
@[inherit_doc]
scoped[Witt] notation "W_" => wittPolynomial p
--- mathport name: witt_polynomial.infer
-- Notation with ring of coefficients implicit
set_option quotPrecheck false in
@[inherit_doc]
Data
(#11751)
Polynomial
and MvPolynomial
are algebraic objects, hence should be under Algebra
(or at least not under Data
)
@@ -4,10 +4,10 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
-/
import Mathlib.Algebra.CharP.Invertible
+import Mathlib.Algebra.MvPolynomial.Variables
+import Mathlib.Algebra.MvPolynomial.CommRing
+import Mathlib.Algebra.MvPolynomial.Expand
import Mathlib.Data.Fintype.BigOperators
-import Mathlib.Data.MvPolynomial.Variables
-import Mathlib.Data.MvPolynomial.CommRing
-import Mathlib.Data.MvPolynomial.Expand
import Mathlib.Data.ZMod.Basic
#align_import ring_theory.witt_vector.witt_polynomial from "leanprover-community/mathlib"@"c3019c79074b0619edb4b27553a91b2e82242395"
We change the following field in the definition of an additive commutative monoid:
nsmul_succ : ∀ (n : ℕ) (x : G),
- AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+ AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x
where the latter is more natural
We adjust the definitions of ^
in monoids, groups, etc.
Originally there was a warning comment about why this natural order was preferred
use
x * npowRec n x
and notnpowRec n x * x
in the definition to make sure that definitional unfolding ofnpowRec
is blocked, to avoid deep recursion issues.
but it seems to no longer apply.
Remarks on the PR :
pow_succ
and pow_succ'
have switched their meanings.Ideal.IsPrime.mul_mem_pow
which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul
.@@ -162,7 +162,7 @@ theorem wittPolynomial_zmod_self (n : ℕ) :
rw [sum_range_succ, ← Nat.cast_pow, CharP.cast_eq_zero (ZMod (p ^ (n + 1))) (p ^ (n + 1)), C_0,
zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
intro k hk
- rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, algHom_C, ← pow_mul, ← pow_succ]
+ rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, algHom_C, ← pow_mul, ← pow_succ']
congr
rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (Nat.lt_succ_iff.mp hk), ← add_comm]
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)
@@ -69,7 +69,6 @@ open BigOperators
--attribute [-simp] coe_eval₂_hom
variable (p : ℕ)
-
variable (R : Type*) [CommRing R] [DecidableEq R]
/-- `wittPolynomial p R n` is the `n`-th Witt polynomial
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -229,7 +229,7 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
intro n IH
rw [xInTermsOfW_eq, mul_comm, RingHom.map_mul, RingHom.map_sub, map_sum, constantCoeff_C,
constantCoeff_X, zero_sub, mul_neg, neg_eq_zero]
- -- porting note: here, we should be able to do `rw [sum_eq_zero]`, but the goal that
+ -- Porting note: here, we should be able to do `rw [sum_eq_zero]`, but the goal that
-- is created is not what we expect, and the sum is not replaced by zero...
-- is it a bug in `rw` tactic?
refine' Eq.trans (_ : _ = ((⅟↑p : R) ^ n)* 0) (mul_zero _)
I ran tryAtEachStep on all files under Mathlib
to find all locations where omega
succeeds. For each that was a linarith
without an only
, I tried replacing it with omega
, and I verified that elaboration time got smaller. (In almost all cases, there was a noticeable speedup.) I also replaced some slow aesop
s along the way.
@@ -278,8 +278,8 @@ theorem xInTermsOfW_vars_aux (n : ℕ) :
replace H := (ih j hj).2 (vars_pow _ _ H)
rw [mem_range] at H
· rw [mem_range]
- linarith
- · linarith
+ omega
+ · omega
set_option linter.uppercaseLean3 false in
#align X_in_terms_of_W_vars_aux xInTermsOfW_vars_aux
f ^ n
(#9617)
This involves moving lemmas from Algebra.GroupPower.Ring
to Algebra.GroupWithZero.Basic
and changing some 0 < n
assumptions to n ≠ 0
.
From LeanAPAP
@@ -239,7 +239,7 @@ theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n :
rw [mem_range] at H
simp only [RingHom.map_mul, RingHom.map_pow, map_natCast, IH m H]
rw [zero_pow, mul_zero]
- apply pow_pos hp.1.pos
+ exact pow_ne_zero _ hp.1.ne_zero
set_option linter.uppercaseLean3 false in
#align constant_coeff_X_in_terms_of_W constantCoeff_xInTermsOfW
@[inherit_doc]
on notations (#9942)
Make all the notations that unambiguously should inherit the docstring of their definition actually inherit it.
Also write a few docstrings by hand. I only wrote the ones I was competent to write and which I was sure of. Some docstrings come from mathlib3 as they were lost during the early port.
This PR is only intended as a first pass There are many more docstrings to add.
@@ -97,11 +97,13 @@ This allows us to simply write `W n` or `W_ ℤ n`. -/
-- mathport name: witt_polynomial
-- Notation with ring of coefficients explicit
set_option quotPrecheck false in
+@[inherit_doc]
scoped[Witt] notation "W_" => wittPolynomial p
-- mathport name: witt_polynomial.infer
-- Notation with ring of coefficients implicit
set_option quotPrecheck false in
+@[inherit_doc]
scoped[Witt] notation "W" => wittPolynomial p _
open Witt
exact_mod_cast
tactic with mod_cast
elaborator where possible (#8404)
We still have the exact_mod_cast
tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast
are the ones that don't work using the term elaborator by itself.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -271,7 +271,7 @@ theorem xInTermsOfW_vars_aux (n : ℕ) :
rw [vars_C_mul] at H
swap
· apply pow_ne_zero
- exact_mod_cast hp.1.ne_zero
+ exact mod_cast hp.1.ne_zero
rw [mem_range] at hj
replace H := (ih j hj).2 (vars_pow _ _ H)
rw [mem_range] at H
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -159,7 +159,7 @@ theorem wittPolynomial_zmod_self (n : ℕ) :
W_ (ZMod (p ^ (n + 1))) (n + 1) = expand p (W_ (ZMod (p ^ (n + 1))) n) := by
simp only [wittPolynomial_eq_sum_C_mul_X_pow]
rw [sum_range_succ, ← Nat.cast_pow, CharP.cast_eq_zero (ZMod (p ^ (n + 1))) (p ^ (n + 1)), C_0,
- MulZeroClass.zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
+ zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
intro k hk
rw [AlgHom.map_mul, AlgHom.map_pow, expand_X, algHom_C, ← pow_mul, ← pow_succ]
congr
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -70,7 +70,7 @@ open BigOperators
variable (p : ℕ)
-variable (R : Type _) [CommRing R] [DecidableEq R]
+variable (R : Type*) [CommRing R] [DecidableEq R]
/-- `wittPolynomial p R n` is the `n`-th Witt polynomial
with respect to a prime `p` with coefficients in a commutative ring `R`.
@@ -113,7 +113,7 @@ If we map the coefficients through a ring homomorphism, we obtain the correspond
over the target ring. -/
section
-variable {R} {S : Type _} [CommRing S]
+variable {R} {S : Type*} [CommRing S]
@[simp]
theorem map_wittPolynomial (f : R →+* S) (n : ℕ) : map f (W n) = W n := by
@@ -146,7 +146,7 @@ theorem wittPolynomial_one : wittPolynomial p R 1 = C (p : R) * X 1 + X 0 ^ p :=
one_mul, pow_one, C_1, pow_zero, tsub_self, tsub_zero]
#align witt_polynomial_one wittPolynomial_one
-theorem aeval_wittPolynomial {A : Type _} [CommRing A] [Algebra R A] (f : ℕ → A) (n : ℕ) :
+theorem aeval_wittPolynomial {A : Type*} [CommRing A] [Algebra R A] (f : ℕ → A) (n : ℕ) :
aeval f (W_ R n) = ∑ i in range (n + 1), (p : A) ^ i * f i ^ p ^ (n - i) := by
simp [wittPolynomial, AlgHom.map_sum, aeval_monomial, Finsupp.prod_single_index]
#align aeval_witt_polynomial aeval_wittPolynomial
@@ -155,7 +155,7 @@ theorem aeval_wittPolynomial {A : Type _} [CommRing A] [Algebra R A] (f : ℕ
by expanding the `n`th Witt polynomial by `p`.
-/
@[simp]
-theorem wittPolynomial_zMod_self (n : ℕ) :
+theorem wittPolynomial_zmod_self (n : ℕ) :
W_ (ZMod (p ^ (n + 1))) (n + 1) = expand p (W_ (ZMod (p ^ (n + 1))) n) := by
simp only [wittPolynomial_eq_sum_C_mul_X_pow]
rw [sum_range_succ, ← Nat.cast_pow, CharP.cast_eq_zero (ZMod (p ^ (n + 1))) (p ^ (n + 1)), C_0,
@@ -165,7 +165,7 @@ theorem wittPolynomial_zMod_self (n : ℕ) :
congr
rw [mem_range] at hk
rw [add_comm, add_tsub_assoc_of_le (Nat.lt_succ_iff.mp hk), ← add_comm]
-#align witt_polynomial_zmod_self wittPolynomial_zMod_self
+#align witt_polynomial_zmod_self wittPolynomial_zmod_self
section PPrime
@@ -2,11 +2,6 @@
Copyright (c) 2020 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
-
-! This file was ported from Lean 3 source module ring_theory.witt_vector.witt_polynomial
-! leanprover-community/mathlib commit c3019c79074b0619edb4b27553a91b2e82242395
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.CharP.Invertible
import Mathlib.Data.Fintype.BigOperators
@@ -15,6 +10,8 @@ import Mathlib.Data.MvPolynomial.CommRing
import Mathlib.Data.MvPolynomial.Expand
import Mathlib.Data.ZMod.Basic
+#align_import ring_theory.witt_vector.witt_polynomial from "leanprover-community/mathlib"@"c3019c79074b0619edb4b27553a91b2e82242395"
+
/-!
# Witt polynomials
This is the second half of the changes originally in #5699, removing all occurrences of ;
after a space and implementing a linter rule to enforce it.
In most cases this 2-character substring has a space after it, so the following command was run first:
find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;
The remaining cases were few enough in number that they were done manually.
@@ -226,7 +226,7 @@ set_option linter.uppercaseLean3 false in
@[simp]
theorem constantCoeff_xInTermsOfW [hp : Fact p.Prime] [Invertible (p : R)] (n : ℕ) :
constantCoeff (xInTermsOfW p R n) = 0 := by
- apply Nat.strongInductionOn n ; clear n
+ apply Nat.strongInductionOn n; clear n
intro n IH
rw [xInTermsOfW_eq, mul_comm, RingHom.map_mul, RingHom.map_sub, map_sum, constantCoeff_C,
constantCoeff_X, zero_sub, mul_neg, neg_eq_zero]
This PR is the result of running
find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +·)\n +(.*)$/\1 \2/;P;D' {} \;
which firstly replaces .
focusing dots with ·
and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.
@@ -273,14 +273,14 @@ theorem xInTermsOfW_vars_aux (n : ℕ) :
rcases H with ⟨j, hj, H⟩
rw [vars_C_mul] at H
swap
- . apply pow_ne_zero
+ · apply pow_ne_zero
exact_mod_cast hp.1.ne_zero
rw [mem_range] at hj
replace H := (ih j hj).2 (vars_pow _ _ H)
rw [mem_range] at H
- . rw [mem_range]
+ · rw [mem_range]
linarith
- . linarith
+ · linarith
set_option linter.uppercaseLean3 false in
#align X_in_terms_of_W_vars_aux xInTermsOfW_vars_aux
@@ -84,14 +84,14 @@ noncomputable def wittPolynomial (n : ℕ) : MvPolynomial ℕ R :=
∑ i in range (n + 1), monomial (single i (p ^ (n - i))) ((p : R) ^ i)
#align witt_polynomial wittPolynomial
-theorem wittPolynomial_eq_sum_c_mul_x_pow (n : ℕ) :
+theorem wittPolynomial_eq_sum_C_mul_X_pow (n : ℕ) :
wittPolynomial p R n = ∑ i in range (n + 1), C ((p : R) ^ i) * X i ^ p ^ (n - i) := by
apply sum_congr rfl
rintro i -
rw [monomial_eq, Finsupp.prod_single_index]
rw [pow_zero]
set_option linter.uppercaseLean3 false in
-#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_c_mul_x_pow
+#align witt_polynomial_eq_sum_C_mul_X_pow wittPolynomial_eq_sum_C_mul_X_pow
/-! We set up notation locally to this file, to keep statements short and comprehensible.
This allows us to simply write `W n` or `W_ ℤ n`. -/
@@ -145,7 +145,7 @@ theorem wittPolynomial_zero : wittPolynomial p R 0 = X 0 := by
@[simp]
theorem wittPolynomial_one : wittPolynomial p R 1 = C (p : R) * X 1 + X 0 ^ p := by
- simp only [wittPolynomial_eq_sum_c_mul_x_pow, sum_range_succ_comm, range_one, sum_singleton,
+ simp only [wittPolynomial_eq_sum_C_mul_X_pow, sum_range_succ_comm, range_one, sum_singleton,
one_mul, pow_one, C_1, pow_zero, tsub_self, tsub_zero]
#align witt_polynomial_one wittPolynomial_one
@@ -160,7 +160,7 @@ by expanding the `n`th Witt polynomial by `p`.
@[simp]
theorem wittPolynomial_zMod_self (n : ℕ) :
W_ (ZMod (p ^ (n + 1))) (n + 1) = expand p (W_ (ZMod (p ^ (n + 1))) n) := by
- simp only [wittPolynomial_eq_sum_c_mul_x_pow]
+ simp only [wittPolynomial_eq_sum_C_mul_X_pow]
rw [sum_range_succ, ← Nat.cast_pow, CharP.cast_eq_zero (ZMod (p ^ (n + 1))) (p ^ (n + 1)), C_0,
MulZeroClass.zero_mul, add_zero, AlgHom.map_sum, sum_congr rfl]
intro k hk
@@ -302,7 +302,7 @@ set_option linter.uppercaseLean3 false in
@[simp]
theorem bind₁_xInTermsOfW_wittPolynomial [Invertible (p : R)] (k : ℕ) :
bind₁ (xInTermsOfW p R) (W_ R k) = X k := by
- rw [wittPolynomial_eq_sum_c_mul_x_pow, AlgHom.map_sum]
+ rw [wittPolynomial_eq_sum_C_mul_X_pow, AlgHom.map_sum]
simp only [Nat.cast_pow, AlgHom.map_pow, C_pow, AlgHom.map_mul, algHom_C]
rw [sum_range_succ_comm, tsub_self, pow_zero, pow_one, bind₁_X_right, mul_comm, ← C_pow,
xInTermsOfW_aux]
@@ -320,7 +320,7 @@ theorem bind₁_wittPolynomial_xInTermsOfW [Invertible (p : R)] (n : ℕ) :
show X n = (X n * C ((p : R) ^ n)) * C ((⅟p : R) ^ n) by
rw [mul_assoc, ← C_mul, ← mul_pow, mul_invOf_self, one_pow, map_one, mul_one]]
congr 1
- rw [wittPolynomial_eq_sum_c_mul_x_pow, sum_range_succ_comm,
+ rw [wittPolynomial_eq_sum_C_mul_X_pow, sum_range_succ_comm,
tsub_self, pow_zero, pow_one, mul_comm (X n), add_sub_assoc, add_right_eq_self, sub_eq_zero]
apply sum_congr rfl
intro i h
fix-comments.py
on all files.@@ -154,7 +154,7 @@ theorem aeval_wittPolynomial {A : Type _} [CommRing A] [Algebra R A] (f : ℕ
simp [wittPolynomial, AlgHom.map_sum, aeval_monomial, Finsupp.prod_single_index]
#align aeval_witt_polynomial aeval_wittPolynomial
-/-- Over the ring `zmod (p^(n+1))`, we produce the `n+1`st Witt polynomial
+/-- Over the ring `ZMod (p^(n+1))`, we produce the `n+1`st Witt polynomial
by expanding the `n`th Witt polynomial by `p`.
-/
@[simp]
The unported dependencies are