/-
Copyright (c) 2020 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin

! This file was ported from Lean 3 source module data.mv_polynomial.counit
! leanprover-community/mathlib commit 932872382355f00112641d305ba0619305dc8642
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Data.MvPolynomial.Basic

/-!
## Counit morphisms for multivariate polynomials

> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.

One may consider the ring of multivariate polynomials `mv_polynomial A R` with coefficients in `R`
and variables indexed by `A`. If `A` is not just a type, but an algebra over `R`,
then there is a natural surjective algebra homomorphism `mv_polynomial A R →ₐ[R] A`
obtained by `X a ↦ a`.

### Main declarations

* `mv_polynomial.acounit R A` is the natural surjective algebra homomorphism
  `mv_polynomial A R →ₐ[R] A` obtained by `X a ↦ a`
* `mv_polynomial.counit` is an “absolute” variant with `R = ℤ`
* `mv_polynomial.counit_nat` is an “absolute” variant with `R = ℕ`

-/

namespace MvPolynomial

open Function

variable (A B R : Type _) [CommSemiring A] [CommSemiring B] [CommRing R] [Algebra A B]

#print MvPolynomial.ACounit /-
/-- `mv_polynomial.acounit A B` is the natural surjective algebra homomorphism
`mv_polynomial B A →ₐ[A] B` obtained by `X a ↦ a`.

See `mv_polynomial.counit` for the “absolute” variant with `A = ℤ`,
and `mv_polynomial.counit_nat` for the “absolute” variant with `A = ℕ`. -/
noncomputable def ACounit : MvPolynomial B A →ₐ[A] B :=
  aeval id
#align mv_polynomial.acounit MvPolynomial.ACounit
-/

variable {B}

#print MvPolynomial.ACounit_X /-
@[simp]
theorem ACounit_X (b : B) : ACounit A B (X b) = b :=
  aeval_X _ b
#align mv_polynomial.acounit_X MvPolynomial.ACounit_X
-/

variable {A} (B)

#print MvPolynomial.ACounit_C /-
@[simp]
theorem ACounit_C (a : A) : ACounit A B (C a) = algebraMap A B a :=
  aeval_C _ a
#align mv_polynomial.acounit_C MvPolynomial.ACounit_C
-/

variable (A)

/- warning: mv_polynomial.acounit_surjective -> MvPolynomial.ACounit_surjective is a dubious translation:
lean 3 declaration is
  forall (A : Type.{u1}) (B : Type.{u2}) [_inst_1 : CommSemiring.{u1} A] [_inst_2 : CommSemiring.{u2} B] [_inst_4 : Algebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2)], Function.Surjective.{max (succ u2) (succ u1), succ u2} (MvPolynomial.{u2, u1} B A _inst_1) B (coeFn.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AlgHom.{u1, max u2 u1, u2} A (MvPolynomial.{u2, u1} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} B A _inst_1) (MvPolynomial.commSemiring.{u1, u2} A B _inst_1)) (CommSemiring.toSemiring.{u2} B _inst_2) (MvPolynomial.algebra.{u1, u1, u2} A A B _inst_1 _inst_1 (Algebra.id.{u1} A _inst_1)) _inst_4) (fun (_x : AlgHom.{u1, max u2 u1, u2} A (MvPolynomial.{u2, u1} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} B A _inst_1) (MvPolynomial.commSemiring.{u1, u2} A B _inst_1)) (CommSemiring.toSemiring.{u2} B _inst_2) (MvPolynomial.algebra.{u1, u1, u2} A A B _inst_1 _inst_1 (Algebra.id.{u1} A _inst_1)) _inst_4) => (MvPolynomial.{u2, u1} B A _inst_1) -> B) ([anonymous].{u1, max u2 u1, u2} A (MvPolynomial.{u2, u1} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u2, u1} B A _inst_1) (MvPolynomial.commSemiring.{u1, u2} A B _inst_1)) (CommSemiring.toSemiring.{u2} B _inst_2) (MvPolynomial.algebra.{u1, u1, u2} A A B _inst_1 _inst_1 (Algebra.id.{u1} A _inst_1)) _inst_4) (MvPolynomial.ACounit.{u1, u2} A B _inst_1 _inst_2 _inst_4))
but is expected to have type
  forall (A : Type.{u2}) (B : Type.{u1}) [_inst_1 : CommSemiring.{u2} A] [_inst_2 : CommSemiring.{u1} B] [_inst_4 : Algebra.{u2, u1} A B _inst_1 (CommSemiring.toSemiring.{u1} B _inst_2)], Function.Surjective.{max (succ u2) (succ u1), succ u1} (MvPolynomial.{u1, u2} B A _inst_1) B (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u1} (AlgHom.{u2, max u2 u1, u1} A (MvPolynomial.{u1, u2} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (CommSemiring.toSemiring.{u1} B _inst_2) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)) _inst_4) (MvPolynomial.{u1, u2} B A _inst_1) (fun (_x : MvPolynomial.{u1, u2} B A _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : MvPolynomial.{u1, u2} B A _inst_1) => B) _x) (SMulHomClass.toFunLike.{max u2 u1, u2, max u2 u1, u1} (AlgHom.{u2, max u2 u1, u1} A (MvPolynomial.{u1, u2} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (CommSemiring.toSemiring.{u1} B _inst_2) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)) _inst_4) A (MvPolynomial.{u1, u2} B A _inst_1) B (SMulZeroClass.toSMul.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) (AddMonoid.toZero.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (AddCommMonoid.toAddMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1))))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) (AddMonoid.toAddZeroClass.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (AddCommMonoid.toAddMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) (MonoidWithZero.toMonoid.{u2} A (Semiring.toMonoidWithZero.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)))))) (Module.toDistribMulAction.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{u2} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1))))) (Algebra.toModule.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1))))))) (SMulZeroClass.toSMul.{u2, u1} A B (AddMonoid.toZero.{u1} B (AddCommMonoid.toAddMonoid.{u1} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2)))))) (DistribSMul.toSMulZeroClass.{u2, u1} A B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2)))))) (DistribMulAction.toDistribSMul.{u2, u1} A B (MonoidWithZero.toMonoid.{u2} A (Semiring.toMonoidWithZero.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1))) (AddCommMonoid.toAddMonoid.{u1} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2))))) (Module.toDistribMulAction.{u2, u1} A B (CommSemiring.toSemiring.{u2} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2)))) (Algebra.toModule.{u2, u1} A B _inst_1 (CommSemiring.toSemiring.{u1} B _inst_2) _inst_4))))) (DistribMulActionHomClass.toSMulHomClass.{max u2 u1, u2, max u2 u1, u1} (AlgHom.{u2, max u2 u1, u1} A (MvPolynomial.{u1, u2} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (CommSemiring.toSemiring.{u1} B _inst_2) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)) _inst_4) A (MvPolynomial.{u1, u2} B A _inst_1) B (MonoidWithZero.toMonoid.{u2} A (Semiring.toMonoidWithZero.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)))))) (AddCommMonoid.toAddMonoid.{u1} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2))))) (Module.toDistribMulAction.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{u2} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1))))) (Algebra.toModule.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)))) (Module.toDistribMulAction.{u2, u1} A B (CommSemiring.toSemiring.{u2} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2)))) (Algebra.toModule.{u2, u1} A B _inst_1 (CommSemiring.toSemiring.{u1} B _inst_2) _inst_4)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u2 u1, u2, max u2 u1, u1} (AlgHom.{u2, max u2 u1, u1} A (MvPolynomial.{u1, u2} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (CommSemiring.toSemiring.{u1} B _inst_2) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)) _inst_4) A (MvPolynomial.{u1, u2} B A _inst_1) B (MonoidWithZero.toMonoid.{u2} A (Semiring.toMonoidWithZero.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2))) (Module.toDistribMulAction.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{u2} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (Semiring.toNonAssocSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1))))) (Algebra.toModule.{u2, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)))) (Module.toDistribMulAction.{u2, u1} A B (CommSemiring.toSemiring.{u2} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_2)))) (Algebra.toModule.{u2, u1} A B _inst_1 (CommSemiring.toSemiring.{u1} B _inst_2) _inst_4)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u2 u1, u1, max u2 u1} A (MvPolynomial.{u1, u2} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (CommSemiring.toSemiring.{u1} B _inst_2) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)) _inst_4 (AlgHom.{u2, max u2 u1, u1} A (MvPolynomial.{u1, u2} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (CommSemiring.toSemiring.{u1} B _inst_2) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)) _inst_4) (AlgHom.algHomClass.{u2, max u2 u1, u1} A (MvPolynomial.{u1, u2} B A _inst_1) B _inst_1 (CommSemiring.toSemiring.{max u2 u1} (MvPolynomial.{u1, u2} B A _inst_1) (MvPolynomial.commSemiring.{u2, u1} A B _inst_1)) (CommSemiring.toSemiring.{u1} B _inst_2) (MvPolynomial.algebra.{u2, u2, u1} A A B _inst_1 _inst_1 (Algebra.id.{u2} A _inst_1)) _inst_4))))) (MvPolynomial.ACounit.{u2, u1} A B _inst_1 _inst_2 _inst_4))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.acounit_surjective MvPolynomial.ACounit_surjectiveₓ'. -/
theorem ACounit_surjective : Surjective (ACounit A B) := fun b => ⟨X b, ACounit_X A b⟩
#align mv_polynomial.acounit_surjective MvPolynomial.ACounit_surjective

/- warning: mv_polynomial.counit -> MvPolynomial.counit is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) [_inst_3 : CommRing.{u1} R], RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))
but is expected to have type
  forall (R : Type.{u1}) [_inst_3 : CommRing.{u1} R], RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.counit MvPolynomial.counitₓ'. -/
/-- `mv_polynomial.counit R` is the natural surjective ring homomorphism
`mv_polynomial R ℤ →+* R` obtained by `X r ↦ r`.

See `mv_polynomial.acounit` for a “relative” variant for algebras over a base ring,
and `mv_polynomial.counit_nat` for the “absolute” variant with `R = ℕ`. -/
noncomputable def counit : MvPolynomial R ℤ →+* R :=
  ACounit ℤ R
#align mv_polynomial.counit MvPolynomial.counit

#print MvPolynomial.counitNat /-
/-- `mv_polynomial.counit_nat A` is the natural surjective ring homomorphism
`mv_polynomial A ℕ →+* A` obtained by `X a ↦ a`.

See `mv_polynomial.acounit` for a “relative” variant for algebras over a base ring
and `mv_polynomial.counit` for the “absolute” variant with `A = ℤ`. -/
noncomputable def counitNat : MvPolynomial A ℕ →+* A :=
  ACounit ℕ A
#align mv_polynomial.counit_nat MvPolynomial.counitNat
-/

/- warning: mv_polynomial.counit_surjective -> MvPolynomial.counit_surjective is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) [_inst_3 : CommRing.{u1} R], Function.Surjective.{succ u1, succ u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> R) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.counit.{u1} R _inst_3))
but is expected to have type
  forall (R : Type.{u1}) [_inst_3 : CommRing.{u1} R], Function.Surjective.{succ u1, succ u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))))) (MvPolynomial.counit.{u1} R _inst_3))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.counit_surjective MvPolynomial.counit_surjectiveₓ'. -/
theorem counit_surjective : Surjective (counit R) :=
  ACounit_surjective ℤ R
#align mv_polynomial.counit_surjective MvPolynomial.counit_surjective

/- warning: mv_polynomial.counit_nat_surjective -> MvPolynomial.counitNat_surjective is a dubious translation:
lean 3 declaration is
  forall (A : Type.{u1}) [_inst_1 : CommSemiring.{u1} A], Function.Surjective.{succ u1, succ u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) => (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) -> A) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.counitNat.{u1} A _inst_1))
but is expected to have type
  forall (A : Type.{u1}) [_inst_1 : CommSemiring.{u1} A], Function.Surjective.{succ u1, succ u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (fun (_x : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalNonAssocSemiring.toMul.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)))))) (MvPolynomial.counitNat.{u1} A _inst_1))
Case conversion may be inaccurate. Consider using '#align mv_polynomial.counit_nat_surjective MvPolynomial.counitNat_surjectiveₓ'. -/
theorem counitNat_surjective : Surjective (counitNat A) :=
  ACounit_surjective ℕ A
#align mv_polynomial.counit_nat_surjective MvPolynomial.counitNat_surjective

/- warning: mv_polynomial.counit_C -> MvPolynomial.counit_C is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) [_inst_3 : CommRing.{u1} R] (n : Int), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> R) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.counit.{u1} R _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring)))) (fun (_x : RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring)))) => Int -> (MvPolynomial.{u1, 0} R Int Int.commSemiring)) (RingHom.hasCoeToFun.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.commSemiring) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring)))) (MvPolynomial.C.{0, u1} Int R Int.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int R (HasLiftT.mk.{1, succ u1} Int R (CoeTCₓ.coe.{1, succ u1} Int R (Int.castCoe.{u1} R (AddGroupWithOne.toHasIntCast.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_3))))))) n)
but is expected to have type
  forall (R : Type.{u1}) [_inst_3 : CommRing.{u1} R] (n : Int), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int R Int.instCommSemiringInt) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))))) (MvPolynomial.counit.{u1} R _inst_3) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int R Int.instCommSemiringInt) n)) (Int.cast.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int R Int.instCommSemiringInt) n)) (Ring.toIntCast.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int R Int.instCommSemiringInt) n)) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (fun (a : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Int) => MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonUnitalNonAssocSemiring.toMul.{0} Int (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Int (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (RingHom.instRingHomClassRingHom.{0, u1} Int (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{0} Int (CommSemiring.toSemiring.{0} Int Int.instCommSemiringInt)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))))) (MvPolynomial.C.{0, u1} Int R Int.instCommSemiringInt) n)) _inst_3)) n)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.counit_C MvPolynomial.counit_Cₓ'. -/
theorem counit_C (n : ℤ) : counit R (C n) = n :=
  ACounit_C _ _
#align mv_polynomial.counit_C MvPolynomial.counit_C

/- warning: mv_polynomial.counit_nat_C -> MvPolynomial.counitNat_C is a dubious translation:
lean 3 declaration is
  forall (A : Type.{u1}) [_inst_1 : CommSemiring.{u1} A] (n : Nat), Eq.{succ u1} A (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) => (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) -> A) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.counitNat.{u1} A _inst_1) (coeFn.{succ u1, succ u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (fun (_x : RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) => Nat -> (MvPolynomial.{u1, 0} A Nat Nat.commSemiring)) (RingHom.hasCoeToFun.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (MvPolynomial.C.{0, u1} Nat A Nat.commSemiring) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat A (HasLiftT.mk.{1, succ u1} Nat A (CoeTCₓ.coe.{1, succ u1} Nat A (Nat.castCoe.{u1} A (AddMonoidWithOne.toNatCast.{u1} A (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} A (NonAssocSemiring.toAddCommMonoidWithOne.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)))))))) n)
but is expected to have type
  forall (A : Type.{u1}) [_inst_1 : CommSemiring.{u1} A] (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (fun (a : Nat) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Nat) => MvPolynomial.{u1, 0} A Nat Nat.commSemiring) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonUnitalNonAssocSemiring.toMul.{0} Nat (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (RingHom.instRingHomClassRingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))))) (MvPolynomial.C.{0, u1} Nat A Nat.commSemiring) n)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (fun (_x : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalNonAssocSemiring.toMul.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)))))) (MvPolynomial.counitNat.{u1} A _inst_1) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (fun (_x : Nat) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Nat) => MvPolynomial.{u1, 0} A Nat Nat.commSemiring) _x) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonUnitalNonAssocSemiring.toMul.{0} Nat (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (RingHom.instRingHomClassRingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))))) (MvPolynomial.C.{0, u1} Nat A Nat.commSemiring) n)) (Nat.cast.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (fun (a : Nat) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Nat) => MvPolynomial.{u1, 0} A Nat Nat.commSemiring) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonUnitalNonAssocSemiring.toMul.{0} Nat (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (RingHom.instRingHomClassRingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))))) (MvPolynomial.C.{0, u1} Nat A Nat.commSemiring) n)) (Semiring.toNatCast.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (fun (a : Nat) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Nat) => MvPolynomial.{u1, 0} A Nat Nat.commSemiring) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonUnitalNonAssocSemiring.toMul.{0} Nat (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (RingHom.instRingHomClassRingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))))) (MvPolynomial.C.{0, u1} Nat A Nat.commSemiring) n)) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) (FunLike.coe.{succ u1, 1, succ u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (fun (a : Nat) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Nat) => MvPolynomial.{u1, 0} A Nat Nat.commSemiring) a) (MulHomClass.toFunLike.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonUnitalNonAssocSemiring.toMul.{0} Nat (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)))) (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalRingHomClass.toMulHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Nat (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (RingHomClass.toNonUnitalRingHomClass.{u1, 0, u1} (RingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (RingHom.instRingHomClassRingHom.{0, u1} Nat (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{0} Nat (CommSemiring.toSemiring.{0} Nat Nat.commSemiring)) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))))) (MvPolynomial.C.{0, u1} Nat A Nat.commSemiring) n)) _inst_1)) n)
Case conversion may be inaccurate. Consider using '#align mv_polynomial.counit_nat_C MvPolynomial.counitNat_Cₓ'. -/
theorem counitNat_C (n : ℕ) : counitNat A (C n) = n :=
  ACounit_C _ _
#align mv_polynomial.counit_nat_C MvPolynomial.counitNat_C

variable {R A}

/- warning: mv_polynomial.counit_X -> MvPolynomial.counit_X is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} [_inst_3 : CommRing.{u1} R] (r : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) => (MvPolynomial.{u1, 0} R Int Int.commSemiring) -> R) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.commSemiring) (MvPolynomial.commSemiring.{0, u1} Int R Int.commSemiring))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.counit.{u1} R _inst_3) (MvPolynomial.X.{0, u1} Int R Int.commSemiring r)) r
but is expected to have type
  forall {R : Type.{u1}} [_inst_3 : CommRing.{u1} R] (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt r)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (fun (_x : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) R (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} R Int Int.instCommSemiringInt) (MvPolynomial.commSemiring.{0, u1} Int R Int.instCommSemiringInt))) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))))) (MvPolynomial.counit.{u1} R _inst_3) (MvPolynomial.X.{0, u1} Int R Int.instCommSemiringInt r)) r
Case conversion may be inaccurate. Consider using '#align mv_polynomial.counit_X MvPolynomial.counit_Xₓ'. -/
@[simp]
theorem counit_X (r : R) : counit R (X r) = r :=
  ACounit_X _ _
#align mv_polynomial.counit_X MvPolynomial.counit_X

/- warning: mv_polynomial.counit_nat_X -> MvPolynomial.counitNat_X is a dubious translation:
lean 3 declaration is
  forall {A : Type.{u1}} [_inst_1 : CommSemiring.{u1} A] (a : A), Eq.{succ u1} A (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (fun (_x : RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) => (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) -> A) (RingHom.hasCoeToFun.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.counitNat.{u1} A _inst_1) (MvPolynomial.X.{0, u1} Nat A Nat.commSemiring a)) a
but is expected to have type
  forall {A : Type.{u1}} [_inst_1 : CommSemiring.{u1} A] (a : A), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) (MvPolynomial.X.{0, u1} Nat A Nat.commSemiring a)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (fun (_x : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : MvPolynomial.{u1, 0} A Nat Nat.commSemiring) => A) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (NonUnitalNonAssocSemiring.toMul.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))))) (NonUnitalNonAssocSemiring.toMul.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))) (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) A (Semiring.toNonAssocSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (CommSemiring.toSemiring.{u1} (MvPolynomial.{u1, 0} A Nat Nat.commSemiring) (MvPolynomial.commSemiring.{0, u1} Nat A Nat.commSemiring))) (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)))))) (MvPolynomial.counitNat.{u1} A _inst_1) (MvPolynomial.X.{0, u1} Nat A Nat.commSemiring a)) a
Case conversion may be inaccurate. Consider using '#align mv_polynomial.counit_nat_X MvPolynomial.counitNat_Xₓ'. -/
@[simp]
theorem counitNat_X (a : A) : counitNat A (X a) = a :=
  ACounit_X _ _
#align mv_polynomial.counit_nat_X MvPolynomial.counitNat_X

end MvPolynomial