ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.orderOf_root_cyclotomic_dvd
theorem orderOf_root_cyclotomic_dvd {n : ℕ} (hpos : 0 < n) {p : ℕ} [Fact p.Prime] {a : ℕ}
    (hroot : IsRoot (cyclotomic n (ZMod p)) (Nat.castRingHom (ZMod p) a)) :
    orderOf (ZMod.unitOfCoprime a (coprime_of_root_cyclotomic hpos hroot)) ∣ n 
Arguments: {n : ℕ} (hpos : 0 < n) {p : ℕ} [Fact (Nat.Prime p)] {a : ℕ} (hroot : (Polynomial.cyclotomic n (ZMod p)).IsRoot ((Nat.castRingHom (ZMod p)) a))
Goal: orderOf (ZMod.unitOfCoprime a ⋯) ∣ n
-- Polynomial.Chebyshev.induct
@[elab_as_elim]
protected theorem induct (motive : ℤ → Prop)
    (zero : motive 0)
    (one : motive 1)
    (add_two : ∀ (n : ℕ), motive (↑n + 1) → motive ↑n → motive (↑n + 2))
    (neg_add_one : ∀ (n : ℕ), motive (-↑n) → motive (-↑n + 1) → motive (-↑n - 1)) :
    ∀ (a : ℤ), motive a 
Arguments: (motive : ℤ → Prop) (zero : motive 0) (one : motive 1) (add_two : ∀ (n : ℕ), motive (↑n + 1) → motive ↑n → motive (↑n + 2)) (neg_add_one : ∀ (n : ℕ), motive (-↑n) → motive (-↑n + 1) → motive (-↑n - 1)) (a : ℤ)
Goal: motive a
-- Polynomial.Chebyshev.T_add_two
@[simp]
theorem T_add_two : ∀ n, T R (n + 2) = 2 * X * T R (n + 1) - T R n
  
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R (n + 2) = 2 * Polynomial.X * Polynomial.Chebyshev.T R (n + 1) - Polynomial.Chebyshev.T R n
-- Polynomial.Chebyshev.T_add_one
theorem T_add_one (n : ℤ) : T R (n + 1) = 2 * X * T R n - T R (n - 1) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R (n + 1) = 2 * Polynomial.X * Polynomial.Chebyshev.T R n - Polynomial.Chebyshev.T R (n - 1)
-- Polynomial.Chebyshev.T_sub_two
theorem T_sub_two (n : ℤ) : T R (n - 2) = 2 * X * T R (n - 1) - T R n 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R (n - 2) = 2 * Polynomial.X * Polynomial.Chebyshev.T R (n - 1) - Polynomial.Chebyshev.T R n
-- Polynomial.Chebyshev.T_sub_one
theorem T_sub_one (n : ℤ) : T R (n - 1) = 2 * X * T R n - T R (n + 1) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R (n - 1) = 2 * Polynomial.X * Polynomial.Chebyshev.T R n - Polynomial.Chebyshev.T R (n + 1)
-- Polynomial.Chebyshev.T_eq
theorem T_eq (n : ℤ) : T R n = 2 * X * T R (n - 1) - T R (n - 2) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R n = 2 * Polynomial.X * Polynomial.Chebyshev.T R (n - 1) - Polynomial.Chebyshev.T R (n - 2)
-- Polynomial.Chebyshev.T_zero
@[simp]
theorem T_zero : T R 0 = 1 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.T R 0 = 1
-- Polynomial.Chebyshev.T_one
@[simp]
theorem T_one : T R 1 = X 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.T R 1 = Polynomial.X
-- Polynomial.Chebyshev.T_neg_one
theorem T_neg_one : T R (-1) = X 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.T R (-1) = Polynomial.X
-- Polynomial.Chebyshev.T_two
theorem T_two : T R 2 = 2 * X ^ 2 - 1 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.T R 2 = 2 * Polynomial.X ^ 2 - 1
-- Polynomial.Chebyshev.T_neg
@[simp]
theorem T_neg (n : ℤ) : T R (-n) = T R n 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R (-n) = Polynomial.Chebyshev.T R n
-- Polynomial.Chebyshev.T_natAbs
theorem T_natAbs (n : ℤ) : T R n.natAbs = T R n 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R ↑n.natAbs = Polynomial.Chebyshev.T R n
-- Polynomial.Chebyshev.T_neg_two
theorem T_neg_two : T R (-2) = 2 * X ^ 2 - 1 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.T R (-2) = 2 * Polynomial.X ^ 2 - 1
-- Polynomial.Chebyshev.U_add_two
@[simp]
theorem U_add_two : ∀ n, U R (n + 2) = 2 * X * U R (n + 1) - U R n
  
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (n + 2) = 2 * Polynomial.X * Polynomial.Chebyshev.U R (n + 1) - Polynomial.Chebyshev.U R n
-- Polynomial.Chebyshev.U_add_one
theorem U_add_one (n : ℤ) : U R (n + 1) = 2 * X * U R n - U R (n - 1) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (n + 1) = 2 * Polynomial.X * Polynomial.Chebyshev.U R n - Polynomial.Chebyshev.U R (n - 1)
-- Polynomial.Chebyshev.U_sub_two
theorem U_sub_two (n : ℤ) : U R (n - 2) = 2 * X * U R (n - 1) - U R n 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (n - 2) = 2 * Polynomial.X * Polynomial.Chebyshev.U R (n - 1) - Polynomial.Chebyshev.U R n
-- Polynomial.Chebyshev.U_sub_one
theorem U_sub_one (n : ℤ) : U R (n - 1) = 2 * X * U R n - U R (n + 1) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (n - 1) = 2 * Polynomial.X * Polynomial.Chebyshev.U R n - Polynomial.Chebyshev.U R (n + 1)
-- Polynomial.Chebyshev.U_eq
theorem U_eq (n : ℤ) : U R n = 2 * X * U R (n - 1) - U R (n - 2) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R n = 2 * Polynomial.X * Polynomial.Chebyshev.U R (n - 1) - Polynomial.Chebyshev.U R (n - 2)
-- Polynomial.Chebyshev.U_zero
@[simp]
theorem U_zero : U R 0 = 1 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.U R 0 = 1
-- Polynomial.Chebyshev.U_one
@[simp]
theorem U_one : U R 1 = 2 * X 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.U R 1 = 2 * Polynomial.X
-- Polynomial.Chebyshev.U_neg_one
@[simp]
theorem U_neg_one : U R (-1) = 0 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.U R (-1) = 0
-- Polynomial.Chebyshev.U_two
theorem U_two : U R 2 = 4 * X ^ 2 - 1 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.U R 2 = 4 * Polynomial.X ^ 2 - 1
-- Polynomial.Chebyshev.U_neg_two
@[simp]
theorem U_neg_two : U R (-2) = -1 
Arguments: (R : Type u_1) [CommRing R]
Goal: Polynomial.Chebyshev.U R (-2) = -1
-- Polynomial.Chebyshev.U_neg_sub_one
theorem U_neg_sub_one (n : ℤ) : U R (-n - 1) = -U R (n - 1) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (-n - 1) = -Polynomial.Chebyshev.U R (n - 1)
-- Polynomial.Chebyshev.U_neg
theorem U_neg (n : ℤ) : U R (-n) = -U R (n - 2) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (-n) = -Polynomial.Chebyshev.U R (n - 2)
-- Polynomial.Chebyshev.U_neg_sub_two
@[simp]
theorem U_neg_sub_two (n : ℤ) : U R (-n - 2) = -U R n 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (-n - 2) = -Polynomial.Chebyshev.U R n
-- Polynomial.Chebyshev.U_eq_X_mul_U_add_T
theorem U_eq_X_mul_U_add_T (n : ℤ) : U R (n + 1) = X * U R n + T R (n + 1) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.U R (n + 1) = Polynomial.X * Polynomial.Chebyshev.U R n + Polynomial.Chebyshev.T R (n + 1)
-- Polynomial.Chebyshev.T_eq_U_sub_X_mul_U
theorem T_eq_U_sub_X_mul_U (n : ℤ) : T R n = U R n - X * U R (n - 1) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R n = Polynomial.Chebyshev.U R n - Polynomial.X * Polynomial.Chebyshev.U R (n - 1)
-- Polynomial.Chebyshev.T_eq_X_mul_T_sub_pol_U
theorem T_eq_X_mul_T_sub_pol_U (n : ℤ) : T R (n + 2) = X * T R (n + 1) - (1 - X ^ 2) * U R n 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: Polynomial.Chebyshev.T R (n + 2) =
  Polynomial.X * Polynomial.Chebyshev.T R (n + 1) - (1 - Polynomial.X ^ 2) * Polynomial.Chebyshev.U R n
-- Polynomial.Chebyshev.one_sub_X_sq_mul_U_eq_pol_in_T
theorem one_sub_X_sq_mul_U_eq_pol_in_T (n : ℤ) :
    (1 - X ^ 2) * U R n = X * T R (n + 1) - T R (n + 2) 
Arguments: (R : Type u_1) [CommRing R] (n : ℤ)
Goal: (1 - Polynomial.X ^ 2) * Polynomial.Chebyshev.U R n =
  Polynomial.X * Polynomial.Chebyshev.T R (n + 1) - Polynomial.Chebyshev.T R (n + 2)
-- Polynomial.Chebyshev.map_T
@[simp]
theorem map_T (f : R →+* S) (n : ℤ) : map f (T R n) = T S n 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] (f : R →+* S) (n : ℤ)
Goal: Polynomial.map f (Polynomial.Chebyshev.T R n) = Polynomial.Chebyshev.T S n
-- Polynomial.Chebyshev.map_U
@[simp]
theorem map_U (f : R →+* S) (n : ℤ) : map f (U R n) = U S n 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] (f : R →+* S) (n : ℤ)
Goal: Polynomial.map f (Polynomial.Chebyshev.U R n) = Polynomial.Chebyshev.U S n
-- Polynomial.Chebyshev.T_derivative_eq_U
theorem T_derivative_eq_U (n : ℤ) : derivative (T R n) = n * U R (n - 1) 
Arguments: {R : Type u_1} [CommRing R] (n : ℤ)
Goal: Polynomial.derivative (Polynomial.Chebyshev.T R n) = ↑n * Polynomial.Chebyshev.U R (n - 1)
-- Polynomial.Chebyshev.one_sub_X_sq_mul_derivative_T_eq_poly_in_T
theorem one_sub_X_sq_mul_derivative_T_eq_poly_in_T (n : ℤ) :
    (1 - X ^ 2) * derivative (T R (n + 1)) = (n + 1 : R[X]) * (T R n - X * T R (n + 1)) 
Arguments: {R : Type u_1} [CommRing R] (n : ℤ)
Goal: (1 - Polynomial.X ^ 2) * Polynomial.derivative (Polynomial.Chebyshev.T R (n + 1)) =
  (↑n + 1) * (Polynomial.Chebyshev.T R n - Polynomial.X * Polynomial.Chebyshev.T R (n + 1))
-- Polynomial.Chebyshev.add_one_mul_T_eq_poly_in_U
theorem add_one_mul_T_eq_poly_in_U (n : ℤ) :
    ((n : R[X]) + 1) * T R (n + 1) = X * U R n - (1 - X ^ 2) * derivative (U R n) 
Arguments: {R : Type u_1} [CommRing R] (n : ℤ)
Goal: (↑n + 1) * Polynomial.Chebyshev.T R (n + 1) =
  Polynomial.X * Polynomial.Chebyshev.U R n -
    (1 - Polynomial.X ^ 2) * Polynomial.derivative (Polynomial.Chebyshev.U R n)
-- Polynomial.Chebyshev.mul_T
theorem mul_T (m k : ℤ) : 2 * T R m * T R k = T R (m + k) + T R (m - k) 
Arguments: (R : Type u_1) [CommRing R] (m k : ℤ)
Goal: 2 * Polynomial.Chebyshev.T R m * Polynomial.Chebyshev.T R k =
  Polynomial.Chebyshev.T R (m + k) + Polynomial.Chebyshev.T R (m - k)
-- Polynomial.Chebyshev.T_mul
theorem T_mul (m n : ℤ) : T R (m * n) = (T R m).comp (T R n) 
Arguments: (R : Type u_1) [CommRing R] (m n : ℤ)
Goal: Polynomial.Chebyshev.T R (m * n) = (Polynomial.Chebyshev.T R m).comp (Polynomial.Chebyshev.T R n)
-- Polynomial.eval_one_cyclotomic_prime
@[simp]
theorem eval_one_cyclotomic_prime {R : Type*} [CommRing R] {p : ℕ} [hn : Fact p.Prime] :
    eval 1 (cyclotomic p R) = p 
Arguments: {R : Type u_1} [CommRing R] {p : ℕ} [hn : Fact (Nat.Prime p)]
Goal: Polynomial.eval 1 (Polynomial.cyclotomic p R) = ↑p
-- Polynomial.eval₂_one_cyclotomic_prime
theorem eval₂_one_cyclotomic_prime {R S : Type*} [CommRing R] [Semiring S] (f : R →+* S) {p : ℕ}
    [Fact p.Prime] : eval₂ f 1 (cyclotomic p R) = p 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [Semiring S] (f : R →+* S) {p : ℕ} [Fact (Nat.Prime p)]
Goal: Polynomial.eval₂ f 1 (Polynomial.cyclotomic p R) = ↑p
-- Polynomial.eval_one_cyclotomic_prime_pow
@[simp]
theorem eval_one_cyclotomic_prime_pow {R : Type*} [CommRing R] {p : ℕ} (k : ℕ)
    [hn : Fact p.Prime] : eval 1 (cyclotomic (p ^ (k + 1)) R) = p 
Arguments: {R : Type u_1} [CommRing R] {p : ℕ} (k : ℕ) [hn : Fact (Nat.Prime p)]
Goal: Polynomial.eval 1 (Polynomial.cyclotomic (p ^ (k + 1)) R) = ↑p
-- Polynomial.eval₂_one_cyclotomic_prime_pow
theorem eval₂_one_cyclotomic_prime_pow {R S : Type*} [CommRing R] [Semiring S] (f : R →+* S)
    {p : ℕ} (k : ℕ) [Fact p.Prime] : eval₂ f 1 (cyclotomic (p ^ (k + 1)) R) = p 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [Semiring S] (f : R →+* S) {p : ℕ} (k : ℕ) [Fact (Nat.Prime p)]
Goal: Polynomial.eval₂ f 1 (Polynomial.cyclotomic (p ^ (k + 1)) R) = ↑p
-- _private.Mathlib.RingTheory.Polynomial.Cyclotomic.Eval.0.Polynomial.cyclotomic_neg_one_pos
private theorem cyclotomic_neg_one_pos {n : ℕ} (hn : 2 < n) {R} [LinearOrderedCommRing R] :
    0 < eval (-1 : R) (cyclotomic n R) 
Arguments: {n : ℕ} (hn : 2 < n) {R : Type u_1} [LinearOrderedCommRing R]
Goal: 0 < Polynomial.eval (-1) (Polynomial.cyclotomic n R)
-- Polynomial.cyclotomic_pos
theorem cyclotomic_pos {n : ℕ} (hn : 2 < n) {R} [LinearOrderedCommRing R] (x : R) :
    0 < eval x (cyclotomic n R) 
Arguments: {n : ℕ} (hn : 2 < n) {R : Type u_1} [LinearOrderedCommRing R] (x : R)
Goal: 0 < Polynomial.eval x (Polynomial.cyclotomic n R)
-- Polynomial.cyclotomic_pos_and_nonneg
theorem cyclotomic_pos_and_nonneg (n : ℕ) {R} [LinearOrderedCommRing R] (x : R) :
    (1 < x → 0 < eval x (cyclotomic n R)) ∧ (1 ≤ x → 0 ≤ eval x (cyclotomic n R)) 
Arguments: (n : ℕ) {R : Type u_1} [LinearOrderedCommRing R] (x : R)
Goal: (1 < x → 0 < Polynomial.eval x (Polynomial.cyclotomic n R)) ∧
  (1 ≤ x → 0 ≤ Polynomial.eval x (Polynomial.cyclotomic n R))
-- Polynomial.cyclotomic_pos'
theorem cyclotomic_pos' (n : ℕ) {R} [LinearOrderedCommRing R] {x : R} (hx : 1 < x) :
    0 < eval x (cyclotomic n R) 
Arguments: (n : ℕ) {R : Type u_1} [LinearOrderedCommRing R] {x : R} (hx : 1 < x)
Goal: 0 < Polynomial.eval x (Polynomial.cyclotomic n R)
-- Polynomial.cyclotomic_nonneg
theorem cyclotomic_nonneg (n : ℕ) {R} [LinearOrderedCommRing R] {x : R} (hx : 1 ≤ x) :
    0 ≤ eval x (cyclotomic n R) 
Arguments: (n : ℕ) {R : Type u_1} [LinearOrderedCommRing R] {x : R} (hx : 1 ≤ x)
Goal: 0 ≤ Polynomial.eval x (Polynomial.cyclotomic n R)
-- Polynomial.eval_one_cyclotomic_not_prime_pow
theorem eval_one_cyclotomic_not_prime_pow {R : Type*} [Ring R] {n : ℕ}
    (h : ∀ {p : ℕ}, p.Prime → ∀ k : ℕ, p ^ k ≠ n) : eval 1 (cyclotomic n R) = 1 
Arguments: {R : Type u_1} [Ring R] {n : ℕ} (h : ∀ {p : ℕ}, Nat.Prime p → ∀ (k : ℕ), p ^ k ≠ n)
Goal: Polynomial.eval 1 (Polynomial.cyclotomic n R) = 1
-- Polynomial.sub_one_pow_totient_lt_cyclotomic_eval
theorem sub_one_pow_totient_lt_cyclotomic_eval {n : ℕ} {q : ℝ} (hn' : 2 ≤ n) (hq' : 1 < q) :
    (q - 1) ^ totient n < (cyclotomic n ℝ).eval q 
Arguments: {n : ℕ} {q : ℝ} (hn' : 2 ≤ n) (hq' : 1 < q)
Goal: (q - 1) ^ n.totient < Polynomial.eval q (Polynomial.cyclotomic n ℝ)
-- Polynomial.sub_one_pow_totient_le_cyclotomic_eval
theorem sub_one_pow_totient_le_cyclotomic_eval {q : ℝ} (hq' : 1 < q) :
    ∀ n, (q - 1) ^ totient n ≤ (cyclotomic n ℝ).eval q
  
Arguments: {q : ℝ} (hq' : 1 < q) (n : ℕ)
Goal: (q - 1) ^ n.totient ≤ Polynomial.eval q (Polynomial.cyclotomic n ℝ)
-- Polynomial.cyclotomic_eval_lt_add_one_pow_totient
theorem cyclotomic_eval_lt_add_one_pow_totient {n : ℕ} {q : ℝ} (hn' : 3 ≤ n) (hq' : 1 < q) :
    (cyclotomic n ℝ).eval q < (q + 1) ^ totient n 
Arguments: {n : ℕ} {q : ℝ} (hn' : 3 ≤ n) (hq' : 1 < q)
Goal: Polynomial.eval q (Polynomial.cyclotomic n ℝ) < (q + 1) ^ n.totient
-- Polynomial.cyclotomic_eval_le_add_one_pow_totient
theorem cyclotomic_eval_le_add_one_pow_totient {q : ℝ} (hq' : 1 < q) :
    ∀ n, (cyclotomic n ℝ).eval q ≤ (q + 1) ^ totient n
  
Arguments: {q : ℝ} (hq' : 1 < q) (n : ℕ)
Goal: Polynomial.eval q (Polynomial.cyclotomic n ℝ) ≤ (q + 1) ^ n.totient
-- Polynomial.sub_one_pow_totient_lt_natAbs_cyclotomic_eval
theorem sub_one_pow_totient_lt_natAbs_cyclotomic_eval {n : ℕ} {q : ℕ} (hn' : 1 < n) (hq : q ≠ 1) :
    (q - 1) ^ totient n < ((cyclotomic n ℤ).eval ↑q).natAbs 
Arguments: {n q : ℕ} (hn' : 1 < n) (hq : q ≠ 1)
Goal: (q - 1) ^ n.totient < (Polynomial.eval (↑q) (Polynomial.cyclotomic n ℤ)).natAbs
-- Polynomial.sub_one_lt_natAbs_cyclotomic_eval
theorem sub_one_lt_natAbs_cyclotomic_eval {n : ℕ} {q : ℕ} (hn' : 1 < n) (hq : q ≠ 1) :
    q - 1 < ((cyclotomic n ℤ).eval ↑q).natAbs 
Arguments: {n q : ℕ} (hn' : 1 < n) (hq : q ≠ 1)
Goal: q - 1 < (Polynomial.eval (↑q) (Polynomial.cyclotomic n ℤ)).natAbs
-- _private.Mathlib.RingTheory.WittVector.Teichmuller.0.WittVector.ghostComponent_teichmullerFun
private theorem ghostComponent_teichmullerFun (r : R) (n : ℕ) :
    ghostComponent n (teichmullerFun p r) = r ^ p ^ n 
Arguments: (p : ℕ) {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (r : R) (n : ℕ)
Goal: (WittVector.ghostComponent n) (WittVector.teichmullerFun p r) = r ^ p ^ n
-- _private.Mathlib.RingTheory.WittVector.Teichmuller.0.WittVector.map_teichmullerFun
private theorem map_teichmullerFun (f : R →+* S) (r : R) :
    map f (teichmullerFun p r) = teichmullerFun p (f r) 
Arguments: (p : ℕ) {R : Type u_1} {S : Type u_2} [hp : Fact (Nat.Prime p)] [CommRing R] [CommRing S] (f : R →+* S) (r : R)
Goal: (WittVector.map f) (WittVector.teichmullerFun p r) = WittVector.teichmullerFun p (f r)
-- _private.Mathlib.RingTheory.WittVector.Teichmuller.0.WittVector.teichmuller_mul_aux₁
private theorem teichmuller_mul_aux₁ (x y : MvPolynomial R ℚ) :
    teichmullerFun p (x * y) = teichmullerFun p x * teichmullerFun p y 
Arguments: (p : ℕ) {R : Type u_1} [hp : Fact (Nat.Prime p)] (x y : MvPolynomial R ℚ)
Goal: WittVector.teichmullerFun p (x * y) = WittVector.teichmullerFun p x * WittVector.teichmullerFun p y
-- _private.Mathlib.RingTheory.WittVector.Teichmuller.0.WittVector.teichmuller_mul_aux₂
private theorem teichmuller_mul_aux₂ (x y : MvPolynomial R ℤ) :
    teichmullerFun p (x * y) = teichmullerFun p x * teichmullerFun p y 
Arguments: (p : ℕ) {R : Type u_1} [hp : Fact (Nat.Prime p)] (x y : MvPolynomial R ℤ)
Goal: WittVector.teichmullerFun p (x * y) = WittVector.teichmullerFun p x * WittVector.teichmullerFun p y
-- WittVector.teichmuller_coeff_zero
@[simp]
theorem teichmuller_coeff_zero (r : R) : (teichmuller p r).coeff 0 = r 
Arguments: (p : ℕ) {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (r : R)
Goal: ((WittVector.teichmuller p) r).coeff 0 = r
-- WittVector.teichmuller_coeff_pos
@[simp]
theorem teichmuller_coeff_pos (r : R) : ∀ (n : ℕ) (_ : 0 < n), (teichmuller p r).coeff n = 0
  
Arguments: (p : ℕ) {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (r : R) (n : ℕ)
Goal: 0 < n → ((WittVector.teichmuller p) r).coeff n = 0
-- WittVector.teichmuller_zero
@[simp]
theorem teichmuller_zero : teichmuller p (0 : R) = 0 
Arguments: (p : ℕ) {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R]
Goal: (WittVector.teichmuller p) 0 = 0
-- WittVector.map_teichmuller
@[simp]
theorem map_teichmuller (f : R →+* S) (r : R) : map f (teichmuller p r) = teichmuller p (f r) 
Arguments: (p : ℕ) {R : Type u_1} {S : Type u_2} [hp : Fact (Nat.Prime p)] [CommRing R] [CommRing S] (f : R →+* S) (r : R)
Goal: (WittVector.map f) ((WittVector.teichmuller p) r) = (WittVector.teichmuller p) (f r)
-- WittVector.ghostComponent_teichmuller
@[simp]
theorem ghostComponent_teichmuller (r : R) (n : ℕ) :
    ghostComponent n (teichmuller p r) = r ^ p ^ n 
Arguments: (p : ℕ) {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (r : R) (n : ℕ)
Goal: (WittVector.ghostComponent n) ((WittVector.teichmuller p) r) = r ^ p ^ n
-- MvPowerSeries.coeff_inv_aux
theorem coeff_inv_aux [DecidableEq σ] (n : σ →₀ ℕ) (a : R) (φ : MvPowerSeries σ R) :
    coeff R n (inv.aux a φ) =
      if n = 0 then a
      else
        -a *
          ∑ x ∈ antidiagonal n, if x.2 < n then coeff R x.1 φ * coeff R x.2 (inv.aux a φ) else 0 
Arguments: {σ : Type u_1} {R : Type u_2} [Ring R] [DecidableEq σ] (n : σ →₀ ℕ) (a : R) (φ : MvPowerSeries σ R)
Goal: (MvPowerSeries.coeff R n) (MvPowerSeries.inv.aux a φ) =
  if n = 0 then a
  else
    -a *
      ∑ x ∈ Finset.antidiagonal n,
        if x.2 < n then (MvPowerSeries.coeff R x.1) φ * (MvPowerSeries.coeff R x.2) (MvPowerSeries.inv.aux a φ) else 0
-- MvPowerSeries.coeff_invOfUnit
theorem coeff_invOfUnit [DecidableEq σ] (n : σ →₀ ℕ) (φ : MvPowerSeries σ R) (u : Rˣ) :
    coeff R n (invOfUnit φ u) =
      if n = 0 then ↑u⁻¹
      else
        -↑u⁻¹ *
          ∑ x ∈ antidiagonal n,
            if x.2 < n then coeff R x.1 φ * coeff R x.2 (invOfUnit φ u) else 0 
Arguments: {σ : Type u_1} {R : Type u_2} [Ring R] [DecidableEq σ] (n : σ →₀ ℕ) (φ : MvPowerSeries σ R) (u : Rˣ)
Goal: (MvPowerSeries.coeff R n) (φ.invOfUnit u) =
  if n = 0 then ↑u⁻¹
  else
    -↑u⁻¹ *
      ∑ x ∈ Finset.antidiagonal n,
        if x.2 < n then (MvPowerSeries.coeff R x.1) φ * (MvPowerSeries.coeff R x.2) (φ.invOfUnit u) else 0
-- MvPowerSeries.constantCoeff_invOfUnit
@[simp]
theorem constantCoeff_invOfUnit (φ : MvPowerSeries σ R) (u : Rˣ) :
    constantCoeff σ R (invOfUnit φ u) = ↑u⁻¹ 
Arguments: {σ : Type u_1} {R : Type u_2} [Ring R] (φ : MvPowerSeries σ R) (u : Rˣ)
Goal: (MvPowerSeries.constantCoeff σ R) (φ.invOfUnit u) = ↑u⁻¹
-- MvPowerSeries.mul_invOfUnit
@[simp]
theorem mul_invOfUnit (φ : MvPowerSeries σ R) (u : Rˣ) (h : constantCoeff σ R φ = u) :
    φ * invOfUnit φ u = 1 
Arguments: {σ : Type u_1} {R : Type u_2} [Ring R] (φ : MvPowerSeries σ R) (u : Rˣ) (h : (MvPowerSeries.constantCoeff σ R) φ = ↑u)
Goal: φ * φ.invOfUnit u = 1
-- MvPowerSeries.invOfUnit_mul
@[simp]
theorem invOfUnit_mul (φ : MvPowerSeries σ R) (u : Rˣ) (h : constantCoeff σ R φ = u) :
    invOfUnit φ u * φ = 1 
Arguments: {σ : Type u_1} {R : Type u_2} [Ring R] (φ : MvPowerSeries σ R) (u : Rˣ) (h : (MvPowerSeries.constantCoeff σ R) φ = ↑u)
Goal: φ.invOfUnit u * φ = 1
-- MvPowerSeries.isUnit_iff_constantCoeff
theorem isUnit_iff_constantCoeff {φ : MvPowerSeries σ R} :
    IsUnit φ ↔ IsUnit (constantCoeff σ R φ) 
Arguments: {σ : Type u_1} {R : Type u_2} [Ring R] {φ : MvPowerSeries σ R}
Goal: IsUnit φ ↔ IsUnit ((MvPowerSeries.constantCoeff σ R) φ)
-- MvPowerSeries.coeff_inv
theorem coeff_inv [DecidableEq σ] (n : σ →₀ ℕ) (φ : MvPowerSeries σ k) :
    coeff k n φ⁻¹ =
      if n = 0 then (constantCoeff σ k φ)⁻¹
      else
        -(constantCoeff σ k φ)⁻¹ *
          ∑ x ∈ antidiagonal n, if x.2 < n then coeff k x.1 φ * coeff k x.2 φ⁻¹ else 0 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] [DecidableEq σ] (n : σ →₀ ℕ) (φ : MvPowerSeries σ k)
Goal: (MvPowerSeries.coeff k n) φ⁻¹ =
  if n = 0 then ((MvPowerSeries.constantCoeff σ k) φ)⁻¹
  else
    -((MvPowerSeries.constantCoeff σ k) φ)⁻¹ *
      ∑ x ∈ Finset.antidiagonal n,
        if x.2 < n then (MvPowerSeries.coeff k x.1) φ * (MvPowerSeries.coeff k x.2) φ⁻¹ else 0
-- MvPowerSeries.constantCoeff_inv
@[simp]
theorem constantCoeff_inv (φ : MvPowerSeries σ k) :
    constantCoeff σ k φ⁻¹ = (constantCoeff σ k φ)⁻¹ 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] (φ : MvPowerSeries σ k)
Goal: (MvPowerSeries.constantCoeff σ k) φ⁻¹ = ((MvPowerSeries.constantCoeff σ k) φ)⁻¹
-- MvPowerSeries.inv_eq_zero
theorem inv_eq_zero {φ : MvPowerSeries σ k} : φ⁻¹ = 0 ↔ constantCoeff σ k φ = 0 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] {φ : MvPowerSeries σ k}
Goal: φ⁻¹ = 0 ↔ (MvPowerSeries.constantCoeff σ k) φ = 0
-- MvPowerSeries.zero_inv
@[simp]
theorem zero_inv : (0 : MvPowerSeries σ k)⁻¹ = 0 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k]
Goal: 0⁻¹ = 0
-- MvPowerSeries.invOfUnit_eq
theorem invOfUnit_eq (φ : MvPowerSeries σ k) (h : constantCoeff σ k φ ≠ 0) :
    invOfUnit φ (Units.mk0 _ h) = φ⁻¹ 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] (φ : MvPowerSeries σ k) (h : (MvPowerSeries.constantCoeff σ k) φ ≠ 0)
Goal: φ.invOfUnit (Units.mk0 ((MvPowerSeries.constantCoeff σ k) φ) h) = φ⁻¹
-- MvPowerSeries.invOfUnit_eq'
@[simp]
theorem invOfUnit_eq' (φ : MvPowerSeries σ k) (u : Units k) (h : constantCoeff σ k φ = u) :
    invOfUnit φ u = φ⁻¹ 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] (φ : MvPowerSeries σ k) (u : kˣ) (h : (MvPowerSeries.constantCoeff σ k) φ = ↑u)
Goal: φ.invOfUnit u = φ⁻¹
-- MvPowerSeries.mul_inv_cancel
@[simp]
protected theorem mul_inv_cancel (φ : MvPowerSeries σ k) (h : constantCoeff σ k φ ≠ 0) :
    φ * φ⁻¹ = 1 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] (φ : MvPowerSeries σ k) (h : (MvPowerSeries.constantCoeff σ k) φ ≠ 0)
Goal: φ * φ⁻¹ = 1
-- MvPowerSeries.inv_mul_cancel
@[simp]
protected theorem inv_mul_cancel (φ : MvPowerSeries σ k) (h : constantCoeff σ k φ ≠ 0) :
    φ⁻¹ * φ = 1 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] (φ : MvPowerSeries σ k) (h : (MvPowerSeries.constantCoeff σ k) φ ≠ 0)
Goal: φ⁻¹ * φ = 1
-- MvPowerSeries.eq_mul_inv_iff_mul_eq
protected theorem eq_mul_inv_iff_mul_eq {φ₁ φ₂ φ₃ : MvPowerSeries σ k}
    (h : constantCoeff σ k φ₃ ≠ 0) : φ₁ = φ₂ * φ₃⁻¹ ↔ φ₁ * φ₃ = φ₂ 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] {φ₁ φ₂ φ₃ : MvPowerSeries σ k} (h : (MvPowerSeries.constantCoeff σ k) φ₃ ≠ 0)
Goal: φ₁ = φ₂ * φ₃⁻¹ ↔ φ₁ * φ₃ = φ₂
-- MvPowerSeries.eq_inv_iff_mul_eq_one
protected theorem eq_inv_iff_mul_eq_one {φ ψ : MvPowerSeries σ k} (h : constantCoeff σ k ψ ≠ 0) :
    φ = ψ⁻¹ ↔ φ * ψ = 1 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] {φ ψ : MvPowerSeries σ k} (h : (MvPowerSeries.constantCoeff σ k) ψ ≠ 0)
Goal: φ = ψ⁻¹ ↔ φ * ψ = 1
-- MvPowerSeries.inv_eq_iff_mul_eq_one
protected theorem inv_eq_iff_mul_eq_one {φ ψ : MvPowerSeries σ k} (h : constantCoeff σ k ψ ≠ 0) :
    ψ⁻¹ = φ ↔ φ * ψ = 1 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] {φ ψ : MvPowerSeries σ k} (h : (MvPowerSeries.constantCoeff σ k) ψ ≠ 0)
Goal: ψ⁻¹ = φ ↔ φ * ψ = 1
-- MvPowerSeries.mul_inv_rev
@[simp]
protected theorem mul_inv_rev (φ ψ : MvPowerSeries σ k) :
    (φ * ψ)⁻¹ = ψ⁻¹ * φ⁻¹ 
Arguments: {σ : Type u_1} {k : Type u_3} [Field k] (φ ψ : MvPowerSeries σ k)
Goal: (φ * ψ)⁻¹ = ψ⁻¹ * φ⁻¹