ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.natDegree_linear
theorem natDegree_linear (ha : a ≠ 0) : natDegree (C a * X + C b) = 1 
Arguments: {R : Type u} {a b : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X + Polynomial.C b).natDegree = 1
-- Polynomial.leadingCoeff_linear
@[simp]
theorem leadingCoeff_linear (ha : a ≠ 0) : leadingCoeff (C a * X + C b) = a 
Arguments: {R : Type u} {a b : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X + Polynomial.C b).leadingCoeff = a
-- Polynomial.degree_quadratic_le
theorem degree_quadratic_le : degree (C a * X ^ 2 + C b * X + C c) ≤ 2 
Arguments: {R : Type u} {a b c : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).degree ≤ 2
-- Polynomial.degree_quadratic_lt
theorem degree_quadratic_lt : degree (C a * X ^ 2 + C b * X + C c) < 3 
Arguments: {R : Type u} {a b c : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).degree < 3
-- Polynomial.degree_linear_lt_degree_C_mul_X_sq
theorem degree_linear_lt_degree_C_mul_X_sq (ha : a ≠ 0) :
    degree (C b * X + C c) < degree (C a * X ^ 2) 
Arguments: {R : Type u} {a b c : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C b * Polynomial.X + Polynomial.C c).degree < (Polynomial.C a * Polynomial.X ^ 2).degree
-- Polynomial.degree_quadratic
@[simp]
theorem degree_quadratic (ha : a ≠ 0) : degree (C a * X ^ 2 + C b * X + C c) = 2 
Arguments: {R : Type u} {a b c : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).degree = 2
-- Polynomial.natDegree_quadratic_le
theorem natDegree_quadratic_le : natDegree (C a * X ^ 2 + C b * X + C c) ≤ 2 
Arguments: {R : Type u} {a b c : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).natDegree ≤ 2
-- Polynomial.natDegree_quadratic
theorem natDegree_quadratic (ha : a ≠ 0) : natDegree (C a * X ^ 2 + C b * X + C c) = 2 
Arguments: {R : Type u} {a b c : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).natDegree = 2
-- Polynomial.leadingCoeff_quadratic
@[simp]
theorem leadingCoeff_quadratic (ha : a ≠ 0) : leadingCoeff (C a * X ^ 2 + C b * X + C c) = a 
Arguments: {R : Type u} {a b c : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).leadingCoeff = a
-- Polynomial.degree_cubic_le
theorem degree_cubic_le : degree (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d) ≤ 3 
Arguments: {R : Type u} {a b c d : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X ^ 3 + Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X +
      Polynomial.C d).degree ≤
  3
-- Polynomial.degree_cubic_lt
theorem degree_cubic_lt : degree (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d) < 4 
Arguments: {R : Type u} {a b c d : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X ^ 3 + Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X +
      Polynomial.C d).degree <
  4
-- Polynomial.degree_quadratic_lt_degree_C_mul_X_cb
theorem degree_quadratic_lt_degree_C_mul_X_cb (ha : a ≠ 0) :
    degree (C b * X ^ 2 + C c * X + C d) < degree (C a * X ^ 3) 
Arguments: {R : Type u} {a b c d : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X + Polynomial.C d).degree <
  (Polynomial.C a * Polynomial.X ^ 3).degree
-- Polynomial.degree_cubic
@[simp]
theorem degree_cubic (ha : a ≠ 0) : degree (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d) = 3 
Arguments: {R : Type u} {a b c d : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ 3 + Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X +
      Polynomial.C d).degree =
  3
-- Polynomial.natDegree_cubic_le
theorem natDegree_cubic_le : natDegree (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d) ≤ 3 
Arguments: {R : Type u} {a b c d : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X ^ 3 + Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X +
      Polynomial.C d).natDegree ≤
  3
-- Polynomial.natDegree_cubic
theorem natDegree_cubic (ha : a ≠ 0) : natDegree (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d) = 3 
Arguments: {R : Type u} {a b c d : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ 3 + Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X +
      Polynomial.C d).natDegree =
  3
-- Polynomial.leadingCoeff_cubic
@[simp]
theorem leadingCoeff_cubic (ha : a ≠ 0) :
    leadingCoeff (C a * X ^ 3 + C b * X ^ 2 + C c * X + C d) = a 
Arguments: {R : Type u} {a b c d : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ 3 + Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X +
      Polynomial.C d).leadingCoeff =
  a
-- Polynomial.degree_X_pow
@[simp]
theorem degree_X_pow : degree ((X : R[X]) ^ n) = n 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] (n : ℕ)
Goal: (Polynomial.X ^ n).degree = ↑n
-- Polynomial.natDegree_X_pow
@[simp]
theorem natDegree_X_pow : natDegree ((X : R[X]) ^ n) = n 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] (n : ℕ)
Goal: (Polynomial.X ^ n).natDegree = n
-- Polynomial.natDegree_mul_X
@[simp] lemma natDegree_mul_X (hp : p ≠ 0) : natDegree (p * X) = natDegree p + 1 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] {p : R[X]} (hp : p ≠ 0)
Goal: (p * Polynomial.X).natDegree = p.natDegree + 1
-- Polynomial.natDegree_X_mul
@[simp] lemma natDegree_X_mul (hp : p ≠ 0) : natDegree (X * p) = natDegree p + 1 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] {p : R[X]} (hp : p ≠ 0)
Goal: (Polynomial.X * p).natDegree = p.natDegree + 1
-- Polynomial.natDegree_mul_X_pow
@[simp] lemma natDegree_mul_X_pow (hp : p ≠ 0) : natDegree (p * X ^ n) = natDegree p + n 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] {p : R[X]} (n : ℕ) (hp : p ≠ 0)
Goal: (p * Polynomial.X ^ n).natDegree = p.natDegree + n
-- Polynomial.natDegree_X_pow_mul
@[simp] lemma natDegree_X_pow_mul (hp : p ≠ 0) : natDegree (X ^ n * p) = natDegree p + n 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] {p : R[X]} (n : ℕ) (hp : p ≠ 0)
Goal: (Polynomial.X ^ n * p).natDegree = p.natDegree + n
-- Polynomial.natDegree_X_pow_le
theorem natDegree_X_pow_le {R : Type*} [Semiring R] (n : ℕ) : (X ^ n : R[X]).natDegree ≤ n 
Arguments: {R : Type u_1} [Semiring R] (n : ℕ)
Goal: (Polynomial.X ^ n).natDegree ≤ n
-- Polynomial.not_isUnit_X
theorem not_isUnit_X : ¬IsUnit (X : R[X]) 
Arguments: {R : Type u} [Semiring R] [Nontrivial R]
Goal: ¬IsUnit Polynomial.X
-- Polynomial.degree_mul_X
@[simp]
theorem degree_mul_X : degree (p * X) = degree p + 1 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] {p : R[X]}
Goal: (p * Polynomial.X).degree = p.degree + 1
-- Polynomial.degree_mul_X_pow
@[simp]
theorem degree_mul_X_pow : degree (p * X ^ n) = degree p + n 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] {p : R[X]} (n : ℕ)
Goal: (p * Polynomial.X ^ n).degree = p.degree + ↑n
-- Polynomial.degree_sub_C
theorem degree_sub_C (hp : 0 < degree p) : degree (p - C a) = degree p 
Arguments: {R : Type u} {a : R} [Ring R] {p : R[X]} (hp : 0 < p.degree)
Goal: (p - Polynomial.C a).degree = p.degree
-- Polynomial.natDegree_sub_C
@[simp]
theorem natDegree_sub_C {a : R} : natDegree (p - C a) = natDegree p 
Arguments: {R : Type u} [Ring R] {p : R[X]} {a : R}
Goal: (p - Polynomial.C a).natDegree = p.natDegree
-- Polynomial.degree_sub_le
theorem degree_sub_le (p q : R[X]) : degree (p - q) ≤ max (degree p) (degree q) 
Arguments: {R : Type u} [Ring R] (p q : R[X])
Goal: (p - q).degree ≤ max p.degree q.degree
-- Polynomial.degree_sub_le_of_le
theorem degree_sub_le_of_le {a b : WithBot ℕ} (hp : degree p ≤ a) (hq : degree q ≤ b) :
    degree (p - q) ≤ max a b 
Arguments: {R : Type u} [Ring R] {p q : R[X]} {a b : WithBot ℕ} (hp : p.degree ≤ a) (hq : q.degree ≤ b)
Goal: (p - q).degree ≤ max a b
-- Polynomial.leadingCoeff_sub_of_degree_lt
theorem leadingCoeff_sub_of_degree_lt (h : Polynomial.degree q < Polynomial.degree p) :
    (p - q).leadingCoeff = p.leadingCoeff 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (h : q.degree < p.degree)
Goal: (p - q).leadingCoeff = p.leadingCoeff
-- Polynomial.leadingCoeff_sub_of_degree_lt'
theorem leadingCoeff_sub_of_degree_lt' (h : Polynomial.degree p < Polynomial.degree q) :
    (p - q).leadingCoeff = -q.leadingCoeff 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (h : p.degree < q.degree)
Goal: (p - q).leadingCoeff = -q.leadingCoeff
-- Polynomial.leadingCoeff_sub_of_degree_eq
theorem leadingCoeff_sub_of_degree_eq (h : degree p = degree q)
    (hlc : leadingCoeff p ≠ leadingCoeff q) :
    leadingCoeff (p - q) = leadingCoeff p - leadingCoeff q 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (h : p.degree = q.degree) (hlc : p.leadingCoeff ≠ q.leadingCoeff)
Goal: (p - q).leadingCoeff = p.leadingCoeff - q.leadingCoeff
-- Polynomial.natDegree_sub_le
theorem natDegree_sub_le (p q : R[X]) : natDegree (p - q) ≤ max (natDegree p) (natDegree q) 
Arguments: {R : Type u} [Ring R] (p q : R[X])
Goal: (p - q).natDegree ≤ max p.natDegree q.natDegree
-- Polynomial.natDegree_sub_le_of_le
theorem natDegree_sub_le_of_le (hp : natDegree p ≤ m) (hq : natDegree q ≤ n) :
    natDegree (p - q) ≤ max m n 
Arguments: {R : Type u} {n m : ℕ} [Ring R] {p q : R[X]} (hp : p.natDegree ≤ m) (hq : q.natDegree ≤ n)
Goal: (p - q).natDegree ≤ max m n
-- Polynomial.degree_sub_lt
theorem degree_sub_lt (hd : degree p = degree q) (hp0 : p ≠ 0)
    (hlc : leadingCoeff p = leadingCoeff q) : degree (p - q) < degree p 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (hd : p.degree = q.degree) (hp0 : p ≠ 0) (hlc : p.leadingCoeff = q.leadingCoeff)
Goal: (p - q).degree < p.degree
-- Polynomial.degree_X_sub_C_le
theorem degree_X_sub_C_le (r : R) : (X - C r).degree ≤ 1 
Arguments: {R : Type u} [Ring R] (r : R)
Goal: (Polynomial.X - Polynomial.C r).degree ≤ 1
-- Polynomial.natDegree_X_sub_C_le
theorem natDegree_X_sub_C_le (r : R) : (X - C r).natDegree ≤ 1 
Arguments: {R : Type u} [Ring R] (r : R)
Goal: (Polynomial.X - Polynomial.C r).natDegree ≤ 1
-- Polynomial.degree_sub_eq_left_of_degree_lt
theorem degree_sub_eq_left_of_degree_lt (h : degree q < degree p) : degree (p - q) = degree p 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (h : q.degree < p.degree)
Goal: (p - q).degree = p.degree
-- Polynomial.degree_sub_eq_right_of_degree_lt
theorem degree_sub_eq_right_of_degree_lt (h : degree p < degree q) : degree (p - q) = degree q 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (h : p.degree < q.degree)
Goal: (p - q).degree = q.degree
-- Polynomial.natDegree_sub_eq_left_of_natDegree_lt
theorem natDegree_sub_eq_left_of_natDegree_lt (h : natDegree q < natDegree p) :
    natDegree (p - q) = natDegree p 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (h : q.natDegree < p.natDegree)
Goal: (p - q).natDegree = p.natDegree
-- Polynomial.natDegree_sub_eq_right_of_natDegree_lt
theorem natDegree_sub_eq_right_of_natDegree_lt (h : natDegree p < natDegree q) :
    natDegree (p - q) = natDegree q 
Arguments: {R : Type u} [Ring R] {p q : R[X]} (h : p.natDegree < q.natDegree)
Goal: (p - q).natDegree = q.natDegree
-- Polynomial.degree_X_add_C
@[simp]
theorem degree_X_add_C (a : R) : degree (X + C a) = 1 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] (a : R)
Goal: (Polynomial.X + Polynomial.C a).degree = 1
-- Polynomial.natDegree_X_add_C
theorem natDegree_X_add_C (x : R) : (X + C x).natDegree = 1 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] (x : R)
Goal: (Polynomial.X + Polynomial.C x).natDegree = 1
-- Polynomial.nextCoeff_X_add_C
@[simp]
theorem nextCoeff_X_add_C [Semiring S] (c : S) : nextCoeff (X + C c) = c 
Arguments: {S : Type v} [Semiring S] (c : S)
Goal: (Polynomial.X + Polynomial.C c).nextCoeff = c
-- Polynomial.degree_X_pow_add_C
theorem degree_X_pow_add_C {n : ℕ} (hn : 0 < n) (a : R) : degree ((X : R[X]) ^ n + C a) = n 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] {n : ℕ} (hn : 0 < n) (a : R)
Goal: (Polynomial.X ^ n + Polynomial.C a).degree = ↑n
-- Polynomial.X_pow_add_C_ne_zero
theorem X_pow_add_C_ne_zero {n : ℕ} (hn : 0 < n) (a : R) : (X : R[X]) ^ n + C a ≠ 0 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] {n : ℕ} (hn : 0 < n) (a : R)
Goal: Polynomial.X ^ n + Polynomial.C a ≠ 0
-- Polynomial.X_add_C_ne_zero
theorem X_add_C_ne_zero (r : R) : X + C r ≠ 0 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] (r : R)
Goal: Polynomial.X + Polynomial.C r ≠ 0
-- Polynomial.zero_nmem_multiset_map_X_add_C
theorem zero_nmem_multiset_map_X_add_C {α : Type*} (m : Multiset α) (f : α → R) :
    (0 : R[X]) ∉ m.map fun a => X + C (f a) 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] {α : Type u_1} (m : Multiset α) (f : α → R)
Goal: 0 ∉ Multiset.map (fun a => Polynomial.X + Polynomial.C (f a)) m
-- Polynomial.natDegree_X_pow_add_C
theorem natDegree_X_pow_add_C {n : ℕ} {r : R} : (X ^ n + C r).natDegree = n 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] {n : ℕ} {r : R}
Goal: (Polynomial.X ^ n + Polynomial.C r).natDegree = n
-- Polynomial.X_pow_add_C_ne_one
theorem X_pow_add_C_ne_one {n : ℕ} (hn : 0 < n) (a : R) : (X : R[X]) ^ n + C a ≠ 1 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] {n : ℕ} (hn : 0 < n) (a : R)
Goal: Polynomial.X ^ n + Polynomial.C a ≠ 1
-- Polynomial.X_add_C_ne_one
theorem X_add_C_ne_one (r : R) : X + C r ≠ 1 
Arguments: {R : Type u} [Nontrivial R] [Semiring R] (r : R)
Goal: Polynomial.X + Polynomial.C r ≠ 1
-- Polynomial.leadingCoeff_X_pow_add_C
@[simp]
theorem leadingCoeff_X_pow_add_C {n : ℕ} (hn : 0 < n) {r : R} :
    (X ^ n + C r).leadingCoeff = 1 
Arguments: {R : Type u} [Semiring R] {n : ℕ} (hn : 0 < n) {r : R}
Goal: (Polynomial.X ^ n + Polynomial.C r).leadingCoeff = 1
-- Polynomial.leadingCoeff_X_add_C
@[simp]
theorem leadingCoeff_X_add_C [Semiring S] (r : S) : (X + C r).leadingCoeff = 1 
Arguments: {S : Type v} [Semiring S] (r : S)
Goal: (Polynomial.X + Polynomial.C r).leadingCoeff = 1
-- Polynomial.leadingCoeff_X_pow_add_one
@[simp]
theorem leadingCoeff_X_pow_add_one {n : ℕ} (hn : 0 < n) : (X ^ n + 1 : R[X]).leadingCoeff = 1 
Arguments: {R : Type u} [Semiring R] {n : ℕ} (hn : 0 < n)
Goal: (Polynomial.X ^ n + 1).leadingCoeff = 1
-- Polynomial.leadingCoeff_pow_X_add_C
@[simp]
theorem leadingCoeff_pow_X_add_C (r : R) (i : ℕ) : leadingCoeff ((X + C r) ^ i) = 1 
Arguments: {R : Type u} [Semiring R] (r : R) (i : ℕ)
Goal: ((Polynomial.X + Polynomial.C r) ^ i).leadingCoeff = 1
-- Polynomial.leadingCoeff_X_pow_sub_C
@[simp]
theorem leadingCoeff_X_pow_sub_C {n : ℕ} (hn : 0 < n) {r : R} :
    (X ^ n - C r).leadingCoeff = 1 
Arguments: {R : Type u} [Ring R] {n : ℕ} (hn : 0 < n) {r : R}
Goal: (Polynomial.X ^ n - Polynomial.C r).leadingCoeff = 1
-- Polynomial.leadingCoeff_X_pow_sub_one
@[simp]
theorem leadingCoeff_X_pow_sub_one {n : ℕ} (hn : 0 < n) : (X ^ n - 1 : R[X]).leadingCoeff = 1 
Arguments: {R : Type u} [Ring R] {n : ℕ} (hn : 0 < n)
Goal: (Polynomial.X ^ n - 1).leadingCoeff = 1
-- Polynomial.degree_X_sub_C
@[simp]
theorem degree_X_sub_C (a : R) : degree (X - C a) = 1 
Arguments: {R : Type u} [Ring R] [Nontrivial R] (a : R)
Goal: (Polynomial.X - Polynomial.C a).degree = 1
-- Polynomial.natDegree_X_sub_C
theorem natDegree_X_sub_C (x : R) : (X - C x).natDegree = 1 
Arguments: {R : Type u} [Ring R] [Nontrivial R] (x : R)
Goal: (Polynomial.X - Polynomial.C x).natDegree = 1
-- Polynomial.nextCoeff_X_sub_C
@[simp]
theorem nextCoeff_X_sub_C [Ring S] (c : S) : nextCoeff (X - C c) = -c 
Arguments: {S : Type v} [Ring S] (c : S)
Goal: (Polynomial.X - Polynomial.C c).nextCoeff = -c
-- Polynomial.degree_X_pow_sub_C
theorem degree_X_pow_sub_C {n : ℕ} (hn : 0 < n) (a : R) : degree ((X : R[X]) ^ n - C a) = n 
Arguments: {R : Type u} [Ring R] [Nontrivial R] {n : ℕ} (hn : 0 < n) (a : R)
Goal: (Polynomial.X ^ n - Polynomial.C a).degree = ↑n
-- Polynomial.X_pow_sub_C_ne_zero
theorem X_pow_sub_C_ne_zero {n : ℕ} (hn : 0 < n) (a : R) : (X : R[X]) ^ n - C a ≠ 0 
Arguments: {R : Type u} [Ring R] [Nontrivial R] {n : ℕ} (hn : 0 < n) (a : R)
Goal: Polynomial.X ^ n - Polynomial.C a ≠ 0
-- Polynomial.X_sub_C_ne_zero
theorem X_sub_C_ne_zero (r : R) : X - C r ≠ 0 
Arguments: {R : Type u} [Ring R] [Nontrivial R] (r : R)
Goal: Polynomial.X - Polynomial.C r ≠ 0
-- Polynomial.zero_nmem_multiset_map_X_sub_C
theorem zero_nmem_multiset_map_X_sub_C {α : Type*} (m : Multiset α) (f : α → R) :
    (0 : R[X]) ∉ m.map fun a => X - C (f a) 
Arguments: {R : Type u} [Ring R] [Nontrivial R] {α : Type u_1} (m : Multiset α) (f : α → R)
Goal: 0 ∉ Multiset.map (fun a => Polynomial.X - Polynomial.C (f a)) m
-- Polynomial.natDegree_X_pow_sub_C
theorem natDegree_X_pow_sub_C {n : ℕ} {r : R} : (X ^ n - C r).natDegree = n 
Arguments: {R : Type u} [Ring R] [Nontrivial R] {n : ℕ} {r : R}
Goal: (Polynomial.X ^ n - Polynomial.C r).natDegree = n
-- Polynomial.leadingCoeff_X_sub_C
@[simp]
theorem leadingCoeff_X_sub_C [Ring S] (r : S) : (X - C r).leadingCoeff = 1 
Arguments: {S : Type v} [Ring S] (r : S)
Goal: (Polynomial.X - Polynomial.C r).leadingCoeff = 1
-- Polynomial.degree_mul
@[simp]
theorem degree_mul : degree (p * q) = degree p + degree q 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p q : R[X]}
Goal: (p * q).degree = p.degree + q.degree
-- Polynomial.degree_pow
@[simp]
theorem degree_pow [Nontrivial R] (p : R[X]) (n : ℕ) : degree (p ^ n) = n • degree p 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] [Nontrivial R] (p : R[X]) (n : ℕ)
Goal: (p ^ n).degree = n • p.degree
-- Polynomial.leadingCoeff_mul
@[simp]
theorem leadingCoeff_mul (p q : R[X]) : leadingCoeff (p * q) = leadingCoeff p * leadingCoeff q 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] (p q : R[X])
Goal: (p * q).leadingCoeff = p.leadingCoeff * q.leadingCoeff
-- Polynomial.leadingCoeffHom_apply
@[simp]
theorem leadingCoeffHom_apply (p : R[X]) : leadingCoeffHom p = leadingCoeff p 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] (p : R[X])
Goal: Polynomial.leadingCoeffHom p = p.leadingCoeff
-- Polynomial.leadingCoeff_pow
@[simp]
theorem leadingCoeff_pow (p : R[X]) (n : ℕ) : leadingCoeff (p ^ n) = leadingCoeff p ^ n 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] (p : R[X]) (n : ℕ)
Goal: (p ^ n).leadingCoeff = p.leadingCoeff ^ n
-- Polynomial.leadingCoeff_dvd_leadingCoeff
theorem leadingCoeff_dvd_leadingCoeff {a p : R[X]} (hap : a ∣ p) :
    a.leadingCoeff ∣ p.leadingCoeff 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {a p : R[X]} (hap : a ∣ p)
Goal: a.leadingCoeff ∣ p.leadingCoeff
-- Polynomial.revAtFun_invol
theorem revAtFun_invol {N i : ℕ} : revAtFun N (revAtFun N i) = i 
Arguments: {N i : ℕ}
Goal: Polynomial.revAtFun N (Polynomial.revAtFun N i) = i
-- Polynomial.revAtFun_inj
theorem revAtFun_inj {N : ℕ} : Function.Injective (revAtFun N) 
Arguments: {N : ℕ}
Goal: Function.Injective (Polynomial.revAtFun N)
-- Polynomial.revAtFun_eq
@[simp]
theorem revAtFun_eq (N i : ℕ) : revAtFun N i = revAt N i 
Arguments: (N i : ℕ)
Goal: Polynomial.revAtFun N i = (Polynomial.revAt N) i
-- Polynomial.revAt_invol
@[simp]
theorem revAt_invol {N i : ℕ} : (revAt N) (revAt N i) = i 
Arguments: {N i : ℕ}
Goal: (Polynomial.revAt N) ((Polynomial.revAt N) i) = i
-- Polynomial.revAt_le
@[simp]
theorem revAt_le {N i : ℕ} (H : i ≤ N) : revAt N i = N - i 
Arguments: {N i : ℕ} (H : i ≤ N)
Goal: (Polynomial.revAt N) i = N - i
-- Polynomial.revAt_eq_self_of_lt
lemma revAt_eq_self_of_lt {N i : ℕ} (h : N < i) : revAt N i = i 
Arguments: {N i : ℕ} (h : N < i)
Goal: (Polynomial.revAt N) i = i
-- Polynomial.revAt_add
theorem revAt_add {N O n o : ℕ} (hn : n ≤ N) (ho : o ≤ O) :
    revAt (N + O) (n + o) = revAt N n + revAt O o 
Arguments: {N O n o : ℕ} (hn : n ≤ N) (ho : o ≤ O)
Goal: (Polynomial.revAt (N + O)) (n + o) = (Polynomial.revAt N) n + (Polynomial.revAt O) o
-- Polynomial.revAt_zero
theorem revAt_zero (N : ℕ) : revAt N 0 = N 
Arguments: (N : ℕ)
Goal: (Polynomial.revAt N) 0 = N
-- Polynomial.reflect_support
theorem reflect_support (N : ℕ) (f : R[X]) :
    (reflect N f).support = Finset.image (revAt N) f.support 
Arguments: {R : Type u_1} [Semiring R] (N : ℕ) (f : Polynomial R)
Goal: (Polynomial.reflect N f).support = Finset.image (⇑(Polynomial.revAt N)) f.support
-- Polynomial.coeff_reflect
@[simp]
theorem coeff_reflect (N : ℕ) (f : R[X]) (i : ℕ) : coeff (reflect N f) i = f.coeff (revAt N i) 
Arguments: {R : Type u_1} [Semiring R] (N : ℕ) (f : Polynomial R) (i : ℕ)
Goal: (Polynomial.reflect N f).coeff i = f.coeff ((Polynomial.revAt N) i)
-- Polynomial.reflect_zero
@[simp]
theorem reflect_zero {N : ℕ} : reflect N (0 : R[X]) = 0 
Arguments: {R : Type u_1} [Semiring R] {N : ℕ}
Goal: Polynomial.reflect N 0 = 0
-- Polynomial.reflect_eq_zero_iff
@[simp]
theorem reflect_eq_zero_iff {N : ℕ} {f : R[X]} : reflect N (f : R[X]) = 0 ↔ f = 0 
Arguments: {R : Type u_1} [Semiring R] {N : ℕ} {f : Polynomial R}
Goal: Polynomial.reflect N f = 0 ↔ f = 0
-- Polynomial.reflect_add
@[simp]
theorem reflect_add (f g : R[X]) (N : ℕ) : reflect N (f + g) = reflect N f + reflect N g 
Arguments: {R : Type u_1} [Semiring R] (f g : Polynomial R) (N : ℕ)
Goal: Polynomial.reflect N (f + g) = Polynomial.reflect N f + Polynomial.reflect N g
-- Polynomial.reflect_C_mul
@[simp]
theorem reflect_C_mul (f : R[X]) (r : R) (N : ℕ) : reflect N (C r * f) = C r * reflect N f 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R) (r : R) (N : ℕ)
Goal: Polynomial.reflect N (Polynomial.C r * f) = Polynomial.C r * Polynomial.reflect N f
-- Polynomial.reflect_C_mul_X_pow
theorem reflect_C_mul_X_pow (N n : ℕ) {c : R} : reflect N (C c * X ^ n) = C c * X ^ revAt N n 
Arguments: {R : Type u_1} [Semiring R] (N n : ℕ) {c : R}
Goal: Polynomial.reflect N (Polynomial.C c * Polynomial.X ^ n) = Polynomial.C c * Polynomial.X ^ (Polynomial.revAt N) n
-- Polynomial.reflect_C
@[simp]
theorem reflect_C (r : R) (N : ℕ) : reflect N (C r) = C r * X ^ N 
Arguments: {R : Type u_1} [Semiring R] (r : R) (N : ℕ)
Goal: Polynomial.reflect N (Polynomial.C r) = Polynomial.C r * Polynomial.X ^ N
-- Polynomial.reflect_monomial
@[simp]
theorem reflect_monomial (N n : ℕ) : reflect N ((X : R[X]) ^ n) = X ^ revAt N n 
Arguments: {R : Type u_1} [Semiring R] (N n : ℕ)
Goal: Polynomial.reflect N (Polynomial.X ^ n) = Polynomial.X ^ (Polynomial.revAt N) n
-- Polynomial.reflect_one_X
@[simp] lemma reflect_one_X : reflect 1 (X : R[X]) = 1 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.reflect 1 Polynomial.X = 1
-- Polynomial.reflect_mul_induction
theorem reflect_mul_induction (cf cg : ℕ) :
    ∀ N O : ℕ,
      ∀ f g : R[X],
        f.support.card ≤ cf.succ →
          g.support.card ≤ cg.succ →
            f.natDegree ≤ N →
              g.natDegree ≤ O → reflect (N + O) (f * g) = reflect N f * reflect O g 
Arguments: {R : Type u_1} [Semiring R] (cf cg N O : ℕ) (f g : Polynomial R)
Goal: f.support.card ≤ cf.succ →
  g.support.card ≤ cg.succ →
    f.natDegree ≤ N →
      g.natDegree ≤ O → Polynomial.reflect (N + O) (f * g) = Polynomial.reflect N f * Polynomial.reflect O g
-- Polynomial.reflect_mul
@[simp]
theorem reflect_mul (f g : R[X]) {F G : ℕ} (Ff : f.natDegree ≤ F) (Gg : g.natDegree ≤ G) :
    reflect (F + G) (f * g) = reflect F f * reflect G g 
Arguments: {R : Type u_1} [Semiring R] (f g : Polynomial R) {F G : ℕ} (Ff : f.natDegree ≤ F) (Gg : g.natDegree ≤ G)
Goal: Polynomial.reflect (F + G) (f * g) = Polynomial.reflect F f * Polynomial.reflect G g
-- Polynomial.eval₂_reflect_mul_pow
theorem eval₂_reflect_mul_pow (i : R →+* S) (x : S) [Invertible x] (N : ℕ) (f : R[X])
    (hf : f.natDegree ≤ N) : eval₂ i (⅟ x) (reflect N f) * x ^ N = eval₂ i x f 
Arguments: {R : Type u_1} [Semiring R] {S : Type u_2} [CommSemiring S] (i : R →+* S) (x : S) [Invertible x] (N : ℕ) (f : Polynomial R) (hf : f.natDegree ≤ N)
Goal: Polynomial.eval₂ i (⅟x) (Polynomial.reflect N f) * x ^ N = Polynomial.eval₂ i x f
-- Polynomial.eval₂_reflect_eq_zero_iff
theorem eval₂_reflect_eq_zero_iff (i : R →+* S) (x : S) [Invertible x] (N : ℕ) (f : R[X])
    (hf : f.natDegree ≤ N) : eval₂ i (⅟ x) (reflect N f) = 0 ↔ eval₂ i x f = 0 
Arguments: {R : Type u_1} [Semiring R] {S : Type u_2} [CommSemiring S] (i : R →+* S) (x : S) [Invertible x] (N : ℕ) (f : Polynomial R) (hf : f.natDegree ≤ N)
Goal: Polynomial.eval₂ i (⅟x) (Polynomial.reflect N f) = 0 ↔ Polynomial.eval₂ i x f = 0