ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.hermite_one
theorem hermite_one : hermite 1 = X 
Goal: Polynomial.hermite 1 = Polynomial.X
-- Polynomial.coeff_hermite_succ_zero
theorem coeff_hermite_succ_zero (n : ℕ) : coeff (hermite (n + 1)) 0 = -coeff (hermite n) 1 
Arguments: (n : ℕ)
Goal: (Polynomial.hermite (n + 1)).coeff 0 = -(Polynomial.hermite n).coeff 1
-- Polynomial.coeff_hermite_succ_succ
theorem coeff_hermite_succ_succ (n k : ℕ) : coeff (hermite (n + 1)) (k + 1) =
    coeff (hermite n) k - (k + 2) * coeff (hermite n) (k + 2) 
Arguments: (n k : ℕ)
Goal: (Polynomial.hermite (n + 1)).coeff (k + 1) =
  (Polynomial.hermite n).coeff k - (↑k + 2) * (Polynomial.hermite n).coeff (k + 2)
-- Polynomial.coeff_hermite_of_lt
theorem coeff_hermite_of_lt {n k : ℕ} (hnk : n < k) : coeff (hermite n) k = 0 
Arguments: {n k : ℕ} (hnk : n < k)
Goal: (Polynomial.hermite n).coeff k = 0
-- Polynomial.coeff_hermite_self
@[simp]
theorem coeff_hermite_self (n : ℕ) : coeff (hermite n) n = 1 
Arguments: (n : ℕ)
Goal: (Polynomial.hermite n).coeff n = 1
-- Polynomial.degree_hermite
@[simp]
theorem degree_hermite (n : ℕ) : (hermite n).degree = n 
Arguments: (n : ℕ)
Goal: (Polynomial.hermite n).degree = ↑n
-- Polynomial.natDegree_hermite
@[simp]
theorem natDegree_hermite {n : ℕ} : (hermite n).natDegree = n 
Arguments: {n : ℕ}
Goal: (Polynomial.hermite n).natDegree = n
-- Polynomial.leadingCoeff_hermite
@[simp]
theorem leadingCoeff_hermite (n : ℕ) : (hermite n).leadingCoeff = 1 
Arguments: (n : ℕ)
Goal: (Polynomial.hermite n).leadingCoeff = 1
-- Polynomial.hermite_monic
theorem hermite_monic (n : ℕ) : (hermite n).Monic 
Arguments: (n : ℕ)
Goal: (Polynomial.hermite n).Monic
-- Polynomial.coeff_hermite_of_odd_add
theorem coeff_hermite_of_odd_add {n k : ℕ} (hnk : Odd (n + k)) : coeff (hermite n) k = 0 
Arguments: {n k : ℕ} (hnk : Odd (n + k))
Goal: (Polynomial.hermite n).coeff k = 0
-- Polynomial.coeff_hermite_explicit
theorem coeff_hermite_explicit :
    ∀ n k : ℕ, coeff (hermite (2 * n + k)) k = (-1) ^ n * (2 * n - 1)‼ * Nat.choose (2 * n + k) k
  
Arguments: (n k : ℕ)
Goal: (Polynomial.hermite (2 * n + k)).coeff k = (-1) ^ n * ↑(2 * n - 1).doubleFactorial * ↑((2 * n + k).choose k)
-- Polynomial.coeff_hermite_of_even_add
theorem coeff_hermite_of_even_add {n k : ℕ} (hnk : Even (n + k)) :
    coeff (hermite n) k = (-1) ^ ((n - k) / 2) * (n - k - 1)‼ * Nat.choose n k 
Arguments: {n k : ℕ} (hnk : Even (n + k))
Goal: (Polynomial.hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1).doubleFactorial * ↑(n.choose k)
-- Polynomial.coeff_hermite
theorem coeff_hermite (n k : ℕ) :
    coeff (hermite n) k =
      if Even (n + k) then (-1 : ℤ) ^ ((n - k) / 2) * (n - k - 1)‼ * Nat.choose n k else 0 
Arguments: (n k : ℕ)
Goal: (Polynomial.hermite n).coeff k =
  if Even (n + k) then (-1) ^ ((n - k) / 2) * ↑(n - k - 1).doubleFactorial * ↑(n.choose k) else 0
-- Polynomial.quotientSpanXSubCAlgEquiv_mk
@[simp]
theorem quotientSpanXSubCAlgEquiv_mk (x : R) (p : R[X]) :
    quotientSpanXSubCAlgEquiv x (Ideal.Quotient.mk _ p) = p.eval x 
Arguments: {R : Type u_1} [CommRing R] (x : R) (p : R[X])
Goal: (Polynomial.quotientSpanXSubCAlgEquiv x) ((Ideal.Quotient.mk (Ideal.span {Polynomial.X - Polynomial.C x})) p) =
  Polynomial.eval x p
-- Polynomial.quotientSpanXSubCAlgEquiv_symm_apply
@[simp]
theorem quotientSpanXSubCAlgEquiv_symm_apply (x : R) (y : R) :
    (quotientSpanXSubCAlgEquiv x).symm y = algebraMap R _ y 
Arguments: {R : Type u_1} [CommRing R] (x y : R)
Goal: (Polynomial.quotientSpanXSubCAlgEquiv x).symm y = (algebraMap R (R[X] ⧸ Ideal.span {Polynomial.X - Polynomial.C x})) y
-- Polynomial.modByMonic_eq_zero_iff_quotient_eq_zero
lemma modByMonic_eq_zero_iff_quotient_eq_zero (p q : R[X]) (hq : q.Monic) :
    p %ₘ q = 0 ↔ (p : R[X] ⧸ Ideal.span {q}) = 0 
Arguments: {R : Type u_1} [CommRing R] (p q : R[X]) (hq : q.Monic)
Goal: p %ₘ q = 0 ↔ (Ideal.Quotient.mk (Ideal.span {q})) p = 0
-- Ideal.quotient_map_C_eq_zero
theorem quotient_map_C_eq_zero {I : Ideal R} :
    ∀ a ∈ I, ((Quotient.mk (map (C : R →+* R[X]) I : Ideal R[X])).comp C) a = 0 
Arguments: {R : Type u_1} [CommRing R] {I : Ideal R} (a : R)
Goal: a ∈ I → ((Ideal.Quotient.mk (Ideal.map Polynomial.C I)).comp Polynomial.C) a = 0
-- Ideal.eval₂_C_mk_eq_zero
theorem eval₂_C_mk_eq_zero {I : Ideal R} :
    ∀ f ∈ (map (C : R →+* R[X]) I : Ideal R[X]), eval₂RingHom (C.comp (Quotient.mk I)) X f = 0 
Arguments: {R : Type u_1} [CommRing R] {I : Ideal R} (f : R[X])
Goal: f ∈ Ideal.map Polynomial.C I → (Polynomial.eval₂RingHom (Polynomial.C.comp (Ideal.Quotient.mk I)) Polynomial.X) f = 0
-- Ideal.polynomialQuotientEquivQuotientPolynomial_symm_mk
@[simp]
theorem polynomialQuotientEquivQuotientPolynomial_symm_mk (I : Ideal R) (f : R[X]) :
    I.polynomialQuotientEquivQuotientPolynomial.symm (Quotient.mk _ f) = f.map (Quotient.mk I) 
Arguments: {R : Type u_1} [CommRing R] (I : Ideal R) (f : R[X])
Goal: I.polynomialQuotientEquivQuotientPolynomial.symm ((Ideal.Quotient.mk (Ideal.map Polynomial.C I)) f) =
  Polynomial.map (Ideal.Quotient.mk I) f
-- Ideal.polynomialQuotientEquivQuotientPolynomial_map_mk
@[simp]
theorem polynomialQuotientEquivQuotientPolynomial_map_mk (I : Ideal R) (f : R[X]) :
    I.polynomialQuotientEquivQuotientPolynomial (f.map <| Quotient.mk I) =
    Quotient.mk (map C I : Ideal R[X]) f 
Arguments: {R : Type u_1} [CommRing R] (I : Ideal R) (f : R[X])
Goal: I.polynomialQuotientEquivQuotientPolynomial (Polynomial.map (Ideal.Quotient.mk I) f) =
  (Ideal.Quotient.mk (Ideal.map Polynomial.C I)) f
-- Ideal.isDomain_map_C_quotient
theorem isDomain_map_C_quotient {P : Ideal R} (_ : IsPrime P) :
    IsDomain (R[X] ⧸ (map (C : R →+* R[X]) P : Ideal R[X])) 
Arguments: {R : Type u_1} [CommRing R] {P : Ideal R}
Goal: P.IsPrime → IsDomain (R[X] ⧸ Ideal.map Polynomial.C P)
-- Ideal.eq_zero_of_polynomial_mem_map_range
theorem eq_zero_of_polynomial_mem_map_range (I : Ideal R[X]) (x : ((Quotient.mk I).comp C).range)
    (hx : C x ∈ I.map (Polynomial.mapRingHom ((Quotient.mk I).comp C).rangeRestrict)) : x = 0 
Arguments: {R : Type u_1} [CommRing R] (I : Ideal R[X]) (x : ↥((Ideal.Quotient.mk I).comp Polynomial.C).range) (hx : Polynomial.C x ∈ Ideal.map (Polynomial.mapRingHom ((Ideal.Quotient.mk I).comp Polynomial.C).rangeRestrict) I)
Goal: x = 0
-- MvPolynomial.quotient_map_C_eq_zero
theorem quotient_map_C_eq_zero {I : Ideal R} {i : R} (hi : i ∈ I) :
    (Ideal.Quotient.mk (Ideal.map (C : R →+* MvPolynomial σ R) I :
      Ideal (MvPolynomial σ R))).comp C i = 0 
Arguments: {R : Type u_1} {σ : Type u_2} [CommRing R] {I : Ideal R} {i : R} (hi : i ∈ I)
Goal: ((Ideal.Quotient.mk (Ideal.map MvPolynomial.C I)).comp MvPolynomial.C) i = 0
-- MvPolynomial.eval₂_C_mk_eq_zero
theorem eval₂_C_mk_eq_zero {I : Ideal R} {a : MvPolynomial σ R}
    (ha : a ∈ (Ideal.map (C : R →+* MvPolynomial σ R) I : Ideal (MvPolynomial σ R))) :
    eval₂Hom (C.comp (Ideal.Quotient.mk I)) X a = 0 
Arguments: {R : Type u_1} {σ : Type u_2} [CommRing R] {I : Ideal R} {a : MvPolynomial σ R} (ha : a ∈ Ideal.map MvPolynomial.C I)
Goal: (MvPolynomial.eval₂Hom (MvPolynomial.C.comp (Ideal.Quotient.mk I)) MvPolynomial.X) a = 0
-- MvPolynomial.quotientEquivQuotientMvPolynomial_rightInverse
lemma quotientEquivQuotientMvPolynomial_rightInverse (I : Ideal R) :
    Function.RightInverse
      (eval₂ (Ideal.Quotient.lift I
        ((Ideal.Quotient.mk (Ideal.map C I : Ideal (MvPolynomial σ R))).comp C)
          fun i hi => quotient_map_C_eq_zero hi)
          fun i => Ideal.Quotient.mk (Ideal.map C I : Ideal (MvPolynomial σ R)) (X i))
      (Ideal.Quotient.lift (Ideal.map C I : Ideal (MvPolynomial σ R))
        (eval₂Hom (C.comp (Ideal.Quotient.mk I)) X) fun a ha => eval₂_C_mk_eq_zero ha) 
Arguments: {R : Type u_1} {σ : Type u_2} [CommRing R] (I : Ideal R)
Goal: Function.RightInverse
  (MvPolynomial.eval₂ (Ideal.Quotient.lift I ((Ideal.Quotient.mk (Ideal.map MvPolynomial.C I)).comp MvPolynomial.C) ⋯)
    fun i => (Ideal.Quotient.mk (Ideal.map MvPolynomial.C I)) (MvPolynomial.X i))
  ⇑(Ideal.Quotient.lift (Ideal.map MvPolynomial.C I)
      (MvPolynomial.eval₂Hom (MvPolynomial.C.comp (Ideal.Quotient.mk I)) MvPolynomial.X) ⋯)
-- MvPolynomial.quotientEquivQuotientMvPolynomial_leftInverse
lemma quotientEquivQuotientMvPolynomial_leftInverse (I : Ideal R) :
    Function.LeftInverse
      (eval₂ (Ideal.Quotient.lift I
        ((Ideal.Quotient.mk (Ideal.map C I : Ideal (MvPolynomial σ R))).comp C)
          fun i hi => quotient_map_C_eq_zero hi)
          fun i => Ideal.Quotient.mk (Ideal.map C I : Ideal (MvPolynomial σ R)) (X i))
      (Ideal.Quotient.lift (Ideal.map C I : Ideal (MvPolynomial σ R))
        (eval₂Hom (C.comp (Ideal.Quotient.mk I)) X) fun a ha => eval₂_C_mk_eq_zero ha) 
Arguments: {R : Type u_1} {σ : Type u_2} [CommRing R] (I : Ideal R)
Goal: Function.LeftInverse
  (MvPolynomial.eval₂ (Ideal.Quotient.lift I ((Ideal.Quotient.mk (Ideal.map MvPolynomial.C I)).comp MvPolynomial.C) ⋯)
    fun i => (Ideal.Quotient.mk (Ideal.map MvPolynomial.C I)) (MvPolynomial.X i))
  ⇑(Ideal.Quotient.lift (Ideal.map MvPolynomial.C I)
      (MvPolynomial.eval₂Hom (MvPolynomial.C.comp (Ideal.Quotient.mk I)) MvPolynomial.X) ⋯)
-- integralClosure.mem_lifts_of_monic_of_dvd_map
theorem integralClosure.mem_lifts_of_monic_of_dvd_map {f : R[X]} (hf : f.Monic) {g : K[X]}
    (hg : g.Monic) (hd : g ∣ f.map (algebraMap R K)) :
    g ∈ lifts (algebraMap (integralClosure R K) K) 
Arguments: {R : Type u_1} [CommRing R] (K : Type u_2) [Field K] [Algebra R K] {f : R[X]} (hf : f.Monic) {g : K[X]} (hg : g.Monic) (hd : g ∣ Polynomial.map (algebraMap R K) f)
Goal: g ∈ Polynomial.lifts (algebraMap (↥(integralClosure R K)) K)
-- IsIntegrallyClosed.eq_map_mul_C_of_dvd
theorem IsIntegrallyClosed.eq_map_mul_C_of_dvd [IsIntegrallyClosed R] {f : R[X]} (hf : f.Monic)
    {g : K[X]} (hg : g ∣ f.map (algebraMap R K)) :
    ∃ g' : R[X], g'.map (algebraMap R K) * (C <| leadingCoeff g) = g 
Arguments: {R : Type u_1} [CommRing R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] [IsIntegrallyClosed R] {f : R[X]} (hf : f.Monic) {g : K[X]} (hg : g ∣ Polynomial.map (algebraMap R K) f)
Goal: ∃ g', Polynomial.map (algebraMap R K) g' * Polynomial.C g.leadingCoeff = g
-- Polynomial.IsPrimitive.isUnit_iff_isUnit_map_of_injective
theorem IsPrimitive.isUnit_iff_isUnit_map_of_injective : IsUnit f ↔ IsUnit (map φ f) 
Arguments: {R : Type u_1} [CommRing R] {S : Type u_2} [CommRing S] [IsDomain S] {φ : R →+* S} (hinj : Function.Injective ⇑φ) {f : R[X]} (hf : f.IsPrimitive)
Goal: IsUnit f ↔ IsUnit (Polynomial.map φ f)
-- Polynomial.IsPrimitive.irreducible_of_irreducible_map_of_injective
theorem IsPrimitive.irreducible_of_irreducible_map_of_injective (h_irr : Irreducible (map φ f)) :
    Irreducible f 
Arguments: {R : Type u_1} [CommRing R] {S : Type u_2} [CommRing S] [IsDomain S] {φ : R →+* S} (hinj : Function.Injective ⇑φ) {f : R[X]} (hf : f.IsPrimitive) (h_irr : Irreducible (Polynomial.map φ f))
Goal: Irreducible f
-- Polynomial.IsPrimitive.isUnit_iff_isUnit_map
theorem IsPrimitive.isUnit_iff_isUnit_map {p : R[X]} (hp : p.IsPrimitive) :
    IsUnit p ↔ IsUnit (p.map (algebraMap R K)) 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] {p : R[X]} (hp : p.IsPrimitive)
Goal: IsUnit p ↔ IsUnit (Polynomial.map (algebraMap R K) p)
-- Polynomial.Monic.irreducible_iff_irreducible_map_fraction_map
theorem Monic.irreducible_iff_irreducible_map_fraction_map [IsIntegrallyClosed R] {p : R[X]}
    (h : p.Monic) : Irreducible p ↔ Irreducible (p.map <| algebraMap R K) 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] [IsIntegrallyClosed R] {p : R[X]} (h : p.Monic)
Goal: Irreducible p ↔ Irreducible (Polynomial.map (algebraMap R K) p)
-- Polynomial.isIntegrallyClosed_iff'
theorem isIntegrallyClosed_iff' :
    IsIntegrallyClosed R ↔
      ∀ p : R[X], p.Monic → (Irreducible p ↔ Irreducible (p.map <| algebraMap R K)) 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] [IsDomain R]
Goal: IsIntegrallyClosed R ↔ ∀ (p : R[X]), p.Monic → (Irreducible p ↔ Irreducible (Polynomial.map (algebraMap R K) p))
-- Polynomial.Monic.dvd_of_fraction_map_dvd_fraction_map
theorem Monic.dvd_of_fraction_map_dvd_fraction_map [IsIntegrallyClosed R] {p q : R[X]}
    (hp : p.Monic) (hq : q.Monic)
    (h : q.map (algebraMap R K) ∣ p.map (algebraMap R K)) : q ∣ p 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] [IsIntegrallyClosed R] {p q : R[X]} (hp : p.Monic) (hq : q.Monic) (h : Polynomial.map (algebraMap R K) q ∣ Polynomial.map (algebraMap R K) p)
Goal: q ∣ p
-- Polynomial.Monic.dvd_iff_fraction_map_dvd_fraction_map
theorem Monic.dvd_iff_fraction_map_dvd_fraction_map [IsIntegrallyClosed R] {p q : R[X]}
    (hp : p.Monic) (hq : q.Monic) : q.map (algebraMap R K) ∣ p.map (algebraMap R K) ↔ q ∣ p 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] [IsIntegrallyClosed R] {p q : R[X]} (hp : p.Monic) (hq : q.Monic)
Goal: Polynomial.map (algebraMap R K) q ∣ Polynomial.map (algebraMap R K) p ↔ q ∣ p
-- Polynomial.isUnit_or_eq_zero_of_isUnit_integerNormalization_primPart
theorem isUnit_or_eq_zero_of_isUnit_integerNormalization_primPart {p : K[X]} (h0 : p ≠ 0)
    (h : IsUnit (integerNormalization R⁰ p).primPart) : IsUnit p 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] [IsDomain R] [NormalizedGCDMonoid R] {p : K[X]} (h0 : p ≠ 0) (h : IsUnit (IsLocalization.integerNormalization R⁰ p).primPart)
Goal: IsUnit p
-- Polynomial.IsPrimitive.irreducible_iff_irreducible_map_fraction_map
theorem IsPrimitive.irreducible_iff_irreducible_map_fraction_map {p : R[X]} (hp : p.IsPrimitive) :
    Irreducible p ↔ Irreducible (p.map (algebraMap R K)) 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] [IsDomain R] [NormalizedGCDMonoid R] {p : R[X]} (hp : p.IsPrimitive)
Goal: Irreducible p ↔ Irreducible (Polynomial.map (algebraMap R K) p)
-- Polynomial.IsPrimitive.dvd_of_fraction_map_dvd_fraction_map
theorem IsPrimitive.dvd_of_fraction_map_dvd_fraction_map {p q : R[X]} (hp : p.IsPrimitive)
    (hq : q.IsPrimitive) (h_dvd : p.map (algebraMap R K) ∣ q.map (algebraMap R K)) : p ∣ q 
Arguments: {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] [IsDomain R] [NormalizedGCDMonoid R] {p q : R[X]} (hp : p.IsPrimitive) (hq : q.IsPrimitive) (h_dvd : Polynomial.map (algebraMap R K) p ∣ Polynomial.map (algebraMap R K) q)
Goal: p ∣ q
-- Polynomial.IsPrimitive.dvd_iff_fraction_map_dvd_fraction_map
theorem IsPrimitive.dvd_iff_fraction_map_dvd_fraction_map {p q : R[X]} (hp : p.IsPrimitive)
    (hq : q.IsPrimitive) : p ∣ q ↔ p.map (algebraMap R K) ∣ q.map (algebraMap R K) 
Arguments: {R : Type u_1} [CommRing R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] [IsDomain R] [NormalizedGCDMonoid R] {p q : R[X]} (hp : p.IsPrimitive) (hq : q.IsPrimitive)
Goal: p ∣ q ↔ Polynomial.map (algebraMap R K) p ∣ Polynomial.map (algebraMap R K) q
-- Polynomial.IsPrimitive.Int.irreducible_iff_irreducible_map_cast
theorem IsPrimitive.Int.irreducible_iff_irreducible_map_cast {p : ℤ[X]} (hp : p.IsPrimitive) :
    Irreducible p ↔ Irreducible (p.map (Int.castRingHom ℚ)) 
Arguments: {p : ℤ[X]} (hp : p.IsPrimitive)
Goal: Irreducible p ↔ Irreducible (Polynomial.map (Int.castRingHom ℚ) p)
-- Polynomial.IsPrimitive.Int.dvd_iff_map_cast_dvd_map_cast
theorem IsPrimitive.Int.dvd_iff_map_cast_dvd_map_cast (p q : ℤ[X]) (hp : p.IsPrimitive)
    (hq : q.IsPrimitive) : p ∣ q ↔ p.map (Int.castRingHom ℚ) ∣ q.map (Int.castRingHom ℚ) 
Arguments: (p q : ℤ[X]) (hp : p.IsPrimitive) (hq : q.IsPrimitive)
Goal: p ∣ q ↔ Polynomial.map (Int.castRingHom ℚ) p ∣ Polynomial.map (Int.castRingHom ℚ) q
-- RingInvo.involution'
structure RingInvo [Semiring R] extends R ≃+* Rᵐᵒᵖ where
    involution' : ∀ x, (toFun (toFun x).unop).unop = x
Arguments: {R : Type u_2} [Semiring R] (self : RingInvo R) (x : R)
Goal: MulOpposite.unop (self.toFun (MulOpposite.unop (self.toFun x))) = x
-- RingInvoClass.involution
class RingInvoClass (F R : Type*) [Semiring R] [EquivLike F R Rᵐᵒᵖ]
  extends RingEquivClass F R Rᵐᵒᵖ : Prop where
    involution : ∀ (f : F) (x), (f (f x).unop).unop = x
Arguments: {F : Type u_3} {R : Type u_4} [Semiring R] [EquivLike F R Rᵐᵒᵖ] [self : RingInvoClass F R] (f : F) (x : R)
Goal: MulOpposite.unop (f (MulOpposite.unop (f x))) = x
-- RingInvo.involution
@[simp]
theorem involution (f : RingInvo R) (x : R) : (f (f x).unop).unop = x 
Arguments: {R : Type u_2} [Semiring R] (f : RingInvo R) (x : R)
Goal: MulOpposite.unop (f (MulOpposite.unop (f x))) = x
-- RingInvo.coe_ringEquiv
@[norm_cast]
theorem coe_ringEquiv (f : RingInvo R) (a : R) : (f : R ≃+* Rᵐᵒᵖ) a = f a 
Arguments: {R : Type u_2} [Semiring R] (f : RingInvo R) (a : R)
Goal: ↑f a = f a
-- RingInvo.map_eq_zero_iff
theorem map_eq_zero_iff (f : RingInvo R) {x : R} : f x = 0 ↔ x = 0 
Arguments: {R : Type u_2} [Semiring R] (f : RingInvo R) {x : R}
Goal: f x = 0 ↔ x = 0
-- Polynomial.isNilpotent_C_mul_pow_X_of_isNilpotent
lemma isNilpotent_C_mul_pow_X_of_isNilpotent (n : ℕ) (hnil : IsNilpotent r) :
    IsNilpotent ((C r) * X ^ n) 
Arguments: {R : Type u_1} {r : R} [Semiring R] (n : ℕ) (hnil : IsNilpotent r)
Goal: IsNilpotent (Polynomial.C r * Polynomial.X ^ n)
-- Polynomial.isNilpotent_pow_X_mul_C_of_isNilpotent
lemma isNilpotent_pow_X_mul_C_of_isNilpotent (n : ℕ) (hnil : IsNilpotent r) :
    IsNilpotent (X ^ n * (C r)) 
Arguments: {R : Type u_1} {r : R} [Semiring R] (n : ℕ) (hnil : IsNilpotent r)
Goal: IsNilpotent (Polynomial.X ^ n * Polynomial.C r)
-- Polynomial.isNilpotent_monomial_iff
@[simp] lemma isNilpotent_monomial_iff {n : ℕ} :
    IsNilpotent (monomial (R := R) n r) ↔ IsNilpotent r 
Arguments: {R : Type u_1} {r : R} [Semiring R] {n : ℕ}
Goal: IsNilpotent ((Polynomial.monomial n) r) ↔ IsNilpotent r
-- Polynomial.isNilpotent_C_iff
@[simp] lemma isNilpotent_C_iff :
    IsNilpotent (C r) ↔ IsNilpotent r 
Arguments: {R : Type u_1} {r : R} [Semiring R]
Goal: IsNilpotent (Polynomial.C r) ↔ IsNilpotent r
-- Polynomial.isNilpotent_X_mul_iff
@[simp] lemma isNilpotent_X_mul_iff :
    IsNilpotent (X * P) ↔ IsNilpotent P 
Arguments: {R : Type u_1} [Semiring R] {P : Polynomial R}
Goal: IsNilpotent (Polynomial.X * P) ↔ IsNilpotent P
-- Polynomial.isNilpotent_mul_X_iff
@[simp] lemma isNilpotent_mul_X_iff :
    IsNilpotent (P * X) ↔ IsNilpotent P 
Arguments: {R : Type u_1} [Semiring R] {P : Polynomial R}
Goal: IsNilpotent (P * Polynomial.X) ↔ IsNilpotent P
-- Polynomial.isNilpotent_iff
protected lemma isNilpotent_iff :
    IsNilpotent P ↔ ∀ i, IsNilpotent (coeff P i) 
Arguments: {R : Type u_1} [CommRing R] {P : Polynomial R}
Goal: IsNilpotent P ↔ ∀ (i : ℕ), IsNilpotent (P.coeff i)
-- Polynomial.isNilpotent_reflect_iff
@[simp] lemma isNilpotent_reflect_iff {P : R[X]} {N : ℕ} (hN : P.natDegree ≤ N) :
    IsNilpotent (reflect N P) ↔ IsNilpotent P 
Arguments: {R : Type u_1} [CommRing R] {P : Polynomial R} {N : ℕ} (hN : P.natDegree ≤ N)
Goal: IsNilpotent (Polynomial.reflect N P) ↔ IsNilpotent P
-- Polynomial.isNilpotent_reverse_iff
@[simp] lemma isNilpotent_reverse_iff :
    IsNilpotent P.reverse ↔ IsNilpotent P 
Arguments: {R : Type u_1} [CommRing R] {P : Polynomial R}
Goal: IsNilpotent P.reverse ↔ IsNilpotent P
-- Polynomial.isUnit_of_coeff_isUnit_isNilpotent
theorem isUnit_of_coeff_isUnit_isNilpotent (hunit : IsUnit (P.coeff 0))
    (hnil : ∀ i, i ≠ 0 → IsNilpotent (P.coeff i)) : IsUnit P 
Arguments: {R : Type u_1} [CommRing R] {P : Polynomial R} (hunit : IsUnit (P.coeff 0)) (hnil : ∀ (i : ℕ), i ≠ 0 → IsNilpotent (P.coeff i))
Goal: IsUnit P
-- Polynomial.coeff_isUnit_isNilpotent_of_isUnit
theorem coeff_isUnit_isNilpotent_of_isUnit (hunit : IsUnit P) :
    IsUnit (P.coeff 0) ∧ (∀ i, i ≠ 0 → IsNilpotent (P.coeff i)) 
Arguments: {R : Type u_1} [CommRing R] {P : Polynomial R} (hunit : IsUnit P)
Goal: IsUnit (P.coeff 0) ∧ ∀ (i : ℕ), i ≠ 0 → IsNilpotent (P.coeff i)
-- Polynomial.isUnit_iff_coeff_isUnit_isNilpotent
theorem isUnit_iff_coeff_isUnit_isNilpotent :
    IsUnit P ↔ IsUnit (P.coeff 0) ∧ (∀ i, i ≠ 0 → IsNilpotent (P.coeff i)) 
Arguments: {R : Type u_1} [CommRing R] {P : Polynomial R}
Goal: IsUnit P ↔ IsUnit (P.coeff 0) ∧ ∀ (i : ℕ), i ≠ 0 → IsNilpotent (P.coeff i)
-- Polynomial.isUnit_C_add_X_mul_iff
@[simp] lemma isUnit_C_add_X_mul_iff :
    IsUnit (C r + X * P) ↔ IsUnit r ∧ IsNilpotent P 
Arguments: {R : Type u_1} {r : R} [CommRing R] {P : Polynomial R}
Goal: IsUnit (Polynomial.C r + Polynomial.X * P) ↔ IsUnit r ∧ IsNilpotent P
-- Polynomial.isUnit_iff'
lemma isUnit_iff' :
    IsUnit P ↔ IsUnit (eval 0 P) ∧ IsNilpotent (P /ₘ X)  
Arguments: {R : Type u_1} [CommRing R] {P : Polynomial R}
Goal: IsUnit P ↔ IsUnit (Polynomial.eval 0 P) ∧ IsNilpotent (P /ₘ Polynomial.X)
-- Polynomial.not_isUnit_of_natDegree_pos_of_isReduced
theorem not_isUnit_of_natDegree_pos_of_isReduced [IsReduced R] (p : R[X])
    (hpl : 0 < p.natDegree) : ¬ IsUnit p 
Arguments: {R : Type u_1} [CommRing R] [IsReduced R] (p : Polynomial R) (hpl : 0 < p.natDegree)
Goal: ¬IsUnit p
-- Polynomial.not_isUnit_of_degree_pos_of_isReduced
theorem not_isUnit_of_degree_pos_of_isReduced [IsReduced R] (p : R[X])
    (hpl : 0 < p.degree) : ¬ IsUnit p 
Arguments: {R : Type u_1} [CommRing R] [IsReduced R] (p : Polynomial R) (hpl : 0 < p.degree)
Goal: ¬IsUnit p
-- Polynomial.isNilpotent_aeval_sub_of_isNilpotent_sub
lemma isNilpotent_aeval_sub_of_isNilpotent_sub (h : IsNilpotent (a - b)) :
    IsNilpotent (aeval a P - aeval b P) 
Arguments: {R : Type u_2} {S : Type u_3} [CommRing R] [CommRing S] [Algebra R S] (P : Polynomial R) {a b : S} (h : IsNilpotent (a - b))
Goal: IsNilpotent ((Polynomial.aeval a) P - (Polynomial.aeval b) P)
-- Polynomial.isUnit_aeval_of_isUnit_aeval_of_isNilpotent_sub
lemma isUnit_aeval_of_isUnit_aeval_of_isNilpotent_sub
    (hb : IsUnit (aeval b P)) (hab : IsNilpotent (a - b)) :
    IsUnit (aeval a P) 
Arguments: {R : Type u_2} {S : Type u_3} [CommRing R] [CommRing S] [Algebra R S] {P : Polynomial R} {a b : S} (hb : IsUnit ((Polynomial.aeval b) P)) (hab : IsNilpotent (a - b))
Goal: IsUnit ((Polynomial.aeval a) P)
-- Polynomial.isRoot_of_unity_of_root_cyclotomic
theorem isRoot_of_unity_of_root_cyclotomic {ζ : R} {i : ℕ} (hi : i ∈ n.divisors)
    (h : (cyclotomic i R).IsRoot ζ) : ζ ^ n = 1 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} {ζ : R} {i : ℕ} (hi : i ∈ n.divisors) (h : (Polynomial.cyclotomic i R).IsRoot ζ)
Goal: ζ ^ n = 1
-- isRoot_of_unity_iff
theorem _root_.isRoot_of_unity_iff (h : 0 < n) (R : Type*) [CommRing R] [IsDomain R] {ζ : R} :
    ζ ^ n = 1 ↔ ∃ i ∈ n.divisors, (cyclotomic i R).IsRoot ζ 
Arguments: {n : ℕ} (h : 0 < n) (R : Type u_2) [CommRing R] [IsDomain R] {ζ : R}
Goal: ζ ^ n = 1 ↔ ∃ i ∈ n.divisors, (Polynomial.cyclotomic i R).IsRoot ζ
-- IsPrimitiveRoot.isRoot_cyclotomic
theorem _root_.IsPrimitiveRoot.isRoot_cyclotomic (hpos : 0 < n) {μ : R} (h : IsPrimitiveRoot μ n) :
    IsRoot (cyclotomic n R) μ 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} [IsDomain R] (hpos : 0 < n) {μ : R} (h : IsPrimitiveRoot μ n)
Goal: (Polynomial.cyclotomic n R).IsRoot μ
-- _private.Mathlib.RingTheory.Polynomial.Cyclotomic.Roots.0.Polynomial.isRoot_cyclotomic_iff'
private theorem isRoot_cyclotomic_iff' {n : ℕ} {K : Type*} [Field K] {μ : K} [NeZero (n : K)] :
    IsRoot (cyclotomic n K) μ ↔ IsPrimitiveRoot μ n 
Arguments: {n : ℕ} {K : Type u_2} [Field K] {μ : K} [NeZero ↑n]
Goal: (Polynomial.cyclotomic n K).IsRoot μ ↔ IsPrimitiveRoot μ n
-- Polynomial.isRoot_cyclotomic_iff
theorem isRoot_cyclotomic_iff [NeZero (n : R)] {μ : R} :
    IsRoot (cyclotomic n R) μ ↔ IsPrimitiveRoot μ n 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} [IsDomain R] [NeZero ↑n] {μ : R}
Goal: (Polynomial.cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n
-- Polynomial.roots_cyclotomic_nodup
theorem roots_cyclotomic_nodup [NeZero (n : R)] : (cyclotomic n R).roots.Nodup 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} [IsDomain R] [NeZero ↑n]
Goal: (Polynomial.cyclotomic n R).roots.Nodup
-- Polynomial.cyclotomic.roots_to_finset_eq_primitiveRoots
theorem cyclotomic.roots_to_finset_eq_primitiveRoots [NeZero (n : R)] :
    (⟨(cyclotomic n R).roots, roots_cyclotomic_nodup⟩ : Finset _) = primitiveRoots n R 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} [IsDomain R] [NeZero ↑n]
Goal: { val := (Polynomial.cyclotomic n R).roots, nodup := ⋯ } = primitiveRoots n R