ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Associates.dvd_of_mem_factors'
theorem dvd_of_mem_factors' {a : α} {p : Associates α} {hp : Irreducible p} {hz : a ≠ 0}
    (h_mem : Subtype.mk p hp ∈ factors' a) : p ∣ Associates.mk a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a : α} {p : Associates α} {hp : Irreducible p} {hz : a ≠ 0} (h_mem : ⟨p, hp⟩ ∈ Associates.factors' a)
Goal: p ∣ Associates.mk a
-- Associates.mem_factors'_of_dvd
theorem mem_factors'_of_dvd {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p) (hd : p ∣ a) :
    Subtype.mk (Associates.mk p) (irreducible_mk.2 hp) ∈ factors' a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p) (hd : p ∣ a)
Goal: ⟨Associates.mk p, ⋯⟩ ∈ Associates.factors' a
-- Associates.mem_factors'_iff_dvd
theorem mem_factors'_iff_dvd {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p) :
    Subtype.mk (Associates.mk p) (irreducible_mk.2 hp) ∈ factors' a ↔ p ∣ a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p)
Goal: ⟨Associates.mk p, ⋯⟩ ∈ Associates.factors' a ↔ p ∣ a
-- Associates.mem_factors_of_dvd
theorem mem_factors_of_dvd {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p) (hd : p ∣ a) :
    Associates.mk p ∈ factors (Associates.mk a) 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p) (hd : p ∣ a)
Goal: Associates.mk p ∈ (Associates.mk a).factors
-- Associates.mem_factors_iff_dvd
theorem mem_factors_iff_dvd {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p) :
    Associates.mk p ∈ factors (Associates.mk a) ↔ p ∣ a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p)
Goal: Associates.mk p ∈ (Associates.mk a).factors ↔ p ∣ a
-- Associates.exists_prime_dvd_of_not_inf_one
theorem exists_prime_dvd_of_not_inf_one {a b : α} (ha : a ≠ 0) (hb : b ≠ 0)
    (h : Associates.mk a ⊓ Associates.mk b ≠ 1) : ∃ p : α, Prime p ∧ p ∣ a ∧ p ∣ b 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a b : α} (ha : a ≠ 0) (hb : b ≠ 0) (h : Associates.mk a ⊓ Associates.mk b ≠ 1)
Goal: ∃ p, Prime p ∧ p ∣ a ∧ p ∣ b
-- Associates.coprime_iff_inf_one
theorem coprime_iff_inf_one {a b : α} (ha0 : a ≠ 0) (hb0 : b ≠ 0) :
    Associates.mk a ⊓ Associates.mk b = 1 ↔ ∀ {d : α}, d ∣ a → d ∣ b → ¬Prime d 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a b : α} (ha0 : a ≠ 0) (hb0 : b ≠ 0)
Goal: Associates.mk a ⊓ Associates.mk b = 1 ↔ ∀ {d : α}, d ∣ a → d ∣ b → ¬Prime d
-- Associates.factors_self
theorem factors_self [Nontrivial α] {p : Associates α} (hp : Irreducible p) :
    p.factors = WithTop.some {⟨p, hp⟩} 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [Nontrivial α] {p : Associates α} (hp : Irreducible p)
Goal: p.factors = ↑{⟨p, hp⟩}
-- Associates.factors_prime_pow
theorem factors_prime_pow [Nontrivial α] {p : Associates α} (hp : Irreducible p) (k : ℕ) :
    factors (p ^ k) = WithTop.some (Multiset.replicate k ⟨p, hp⟩) 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [Nontrivial α] {p : Associates α} (hp : Irreducible p) (k : ℕ)
Goal: (p ^ k).factors = ↑(Multiset.replicate k ⟨p, hp⟩)
-- Associates.prime_pow_le_iff_le_bcount
theorem prime_pow_le_iff_le_bcount [DecidableEq (Associates α)] {m p : Associates α}
    (h₁ : m ≠ 0) (h₂ : Irreducible p) {k : ℕ} : p ^ k ≤ m ↔ k ≤ bcount ⟨p, h₂⟩ m.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [DecidableEq (Associates α)] {m p : Associates α} (h₁ : m ≠ 0) (h₂ : Irreducible p) {k : ℕ}
Goal: p ^ k ≤ m ↔ k ≤ Associates.bcount ⟨p, h₂⟩ m.factors
-- Associates.prime_pow_dvd_iff_le
theorem prime_pow_dvd_iff_le {m p : Associates α} (h₁ : m ≠ 0) (h₂ : Irreducible p) {k : ℕ} :
    p ^ k ≤ m ↔ k ≤ count p m.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [DecidableEq (Associates α)] [(p : Associates α) → Decidable (Irreducible p)] {m p : Associates α} (h₁ : m ≠ 0) (h₂ : Irreducible p) {k : ℕ}
Goal: p ^ k ≤ m ↔ k ≤ p.count m.factors
-- Associates.le_of_count_ne_zero
theorem le_of_count_ne_zero {m p : Associates α} (h0 : m ≠ 0) (hp : Irreducible p) :
    count p m.factors ≠ 0 → p ≤ m 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [DecidableEq (Associates α)] [(p : Associates α) → Decidable (Irreducible p)] {m p : Associates α} (h0 : m ≠ 0) (hp : Irreducible p)
Goal: p.count m.factors ≠ 0 → p ≤ m
-- Associates.count_ne_zero_iff_dvd
theorem count_ne_zero_iff_dvd {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p) :
    (Associates.mk p).count (Associates.mk a).factors ≠ 0 ↔ p ∣ a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [DecidableEq (Associates α)] [(p : Associates α) → Decidable (Irreducible p)] {a p : α} (ha0 : a ≠ 0) (hp : Irreducible p)
Goal: (Associates.mk p).count (Associates.mk a).factors ≠ 0 ↔ p ∣ a
-- Associates.count_self
theorem count_self [Nontrivial α] [DecidableEq (Associates α)] {p : Associates α}
    (hp : Irreducible p) : p.count p.factors = 1 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [Nontrivial α] [DecidableEq (Associates α)] {p : Associates α} (hp : Irreducible p)
Goal: p.count p.factors = 1
-- Associates.count_eq_zero_of_ne
theorem count_eq_zero_of_ne [DecidableEq (Associates α)] {p q : Associates α} (hp : Irreducible p)
    (hq : Irreducible q) (h : p ≠ q) : p.count q.factors = 0 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {p q : Associates α} (hp : Irreducible p) (hq : Irreducible q) (h : p ≠ q)
Goal: p.count q.factors = 0
-- Associates.count_mul
theorem count_mul [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0) {b : Associates α}
    (hb : b ≠ 0) {p : Associates α} (hp : Irreducible p) :
    count p (factors (a * b)) = count p a.factors + count p b.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0) {b : Associates α} (hb : b ≠ 0) {p : Associates α} (hp : Irreducible p)
Goal: p.count (a * b).factors = p.count a.factors + p.count b.factors
-- Associates.count_of_coprime
theorem count_of_coprime [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0)
    {b : Associates α} (hb : b ≠ 0) (hab : ∀ d, d ∣ a → d ∣ b → ¬Prime d) {p : Associates α}
    (hp : Irreducible p) : count p a.factors = 0 ∨ count p b.factors = 0 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0) {b : Associates α} (hb : b ≠ 0) (hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d) {p : Associates α} (hp : Irreducible p)
Goal: p.count a.factors = 0 ∨ p.count b.factors = 0
-- Associates.count_mul_of_coprime
theorem count_mul_of_coprime [DecidableEq (Associates α)] {a : Associates α} {b : Associates α}
    (hb : b ≠ 0) {p : Associates α} (hp : Irreducible p) (hab : ∀ d, d ∣ a → d ∣ b → ¬Prime d) :
    count p a.factors = 0 ∨ count p a.factors = count p (a * b).factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {a b : Associates α} (hb : b ≠ 0) {p : Associates α} (hp : Irreducible p) (hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d)
Goal: p.count a.factors = 0 ∨ p.count a.factors = p.count (a * b).factors
-- Associates.count_mul_of_coprime'
theorem count_mul_of_coprime' [DecidableEq (Associates α)] {a b : Associates α} {p : Associates α}
    (hp : Irreducible p) (hab : ∀ d, d ∣ a → d ∣ b → ¬Prime d) :
    count p (a * b).factors = count p a.factors ∨ count p (a * b).factors = count p b.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {a b p : Associates α} (hp : Irreducible p) (hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d)
Goal: p.count (a * b).factors = p.count a.factors ∨ p.count (a * b).factors = p.count b.factors
-- Associates.dvd_count_of_dvd_count_mul
theorem dvd_count_of_dvd_count_mul [DecidableEq (Associates α)] {a b : Associates α} (hb : b ≠ 0)
    {p : Associates α} (hp : Irreducible p) (hab : ∀ d, d ∣ a → d ∣ b → ¬Prime d) {k : ℕ}
    (habk : k ∣ count p (a * b).factors) : k ∣ count p a.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {a b : Associates α} (hb : b ≠ 0) {p : Associates α} (hp : Irreducible p) (hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d) {k : ℕ} (habk : k ∣ p.count (a * b).factors)
Goal: k ∣ p.count a.factors
-- Associates.factors_one
@[simp]
theorem factors_one [Nontrivial α] : factors (1 : Associates α) = 0 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [Nontrivial α]
Goal: Associates.factors 1 = 0
-- Associates.pow_factors
@[simp]
theorem pow_factors [Nontrivial α] {a : Associates α} {k : ℕ} :
    (a ^ k).factors = k • a.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [Nontrivial α] {a : Associates α} {k : ℕ}
Goal: (a ^ k).factors = k • a.factors
-- Associates.count_pow
theorem count_pow [Nontrivial α] [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0)
    {p : Associates α} (hp : Irreducible p) (k : ℕ) :
    count p (a ^ k).factors = k * count p a.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [Nontrivial α] [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0) {p : Associates α} (hp : Irreducible p) (k : ℕ)
Goal: p.count (a ^ k).factors = k * p.count a.factors
-- Associates.dvd_count_pow
theorem dvd_count_pow [Nontrivial α] [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0)
    {p : Associates α} (hp : Irreducible p) (k : ℕ) : k ∣ count p (a ^ k).factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [Nontrivial α] [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0) {p : Associates α} (hp : Irreducible p) (k : ℕ)
Goal: k ∣ p.count (a ^ k).factors
-- Associates.is_pow_of_dvd_count
theorem is_pow_of_dvd_count [DecidableEq (Associates α)] {a : Associates α}
    (ha : a ≠ 0) {k : ℕ} (hk : ∀ p : Associates α, Irreducible p → k ∣ count p a.factors) :
    ∃ b : Associates α, a = b ^ k 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {a : Associates α} (ha : a ≠ 0) {k : ℕ} (hk : ∀ (p : Associates α), Irreducible p → k ∣ p.count a.factors)
Goal: ∃ b, a = b ^ k
-- Associates.eq_pow_count_factors_of_dvd_pow
theorem eq_pow_count_factors_of_dvd_pow [DecidableEq (Associates α)] {p a : Associates α}
    (hp : Irreducible p) {n : ℕ} (h : a ∣ p ^ n) : a = p ^ p.count a.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {p a : Associates α} (hp : Irreducible p) {n : ℕ} (h : a ∣ p ^ n)
Goal: a = p ^ p.count a.factors
-- Associates.count_factors_eq_find_of_dvd_pow
theorem count_factors_eq_find_of_dvd_pow [DecidableEq (Associates α)] {a p : Associates α}
    (hp : Irreducible p) [∀ n : ℕ, Decidable (a ∣ p ^ n)] {n : ℕ} (h : a ∣ p ^ n) :
    @Nat.find (fun n => a ∣ p ^ n) _ ⟨n, h⟩ = p.count a.factors 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [(p : Associates α) → Decidable (Irreducible p)] [DecidableEq (Associates α)] {a p : Associates α} (hp : Irreducible p) [(n : ℕ) → Decidable (a ∣ p ^ n)] {n : ℕ} (h : a ∣ p ^ n)
Goal: Nat.find ⋯ = p.count a.factors
-- Associates.eq_pow_of_mul_eq_pow
theorem eq_pow_of_mul_eq_pow {a b c : Associates α} (ha : a ≠ 0) (hb : b ≠ 0)
    (hab : ∀ d, d ∣ a → d ∣ b → ¬Prime d) {k : ℕ} (h : a * b = c ^ k) :
    ∃ d : Associates α, a = d ^ k 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a b c : Associates α} (ha : a ≠ 0) (hb : b ≠ 0) (hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d) {k : ℕ} (h : a * b = c ^ k)
Goal: ∃ d, a = d ^ k
-- Associates.eq_pow_find_of_dvd_irreducible_pow
theorem eq_pow_find_of_dvd_irreducible_pow {a p : Associates α} (hp : Irreducible p)
    [∀ n : ℕ, Decidable (a ∣ p ^ n)] {n : ℕ} (h : a ∣ p ^ n) :
    a = p ^ @Nat.find (fun n => a ∣ p ^ n) _ ⟨n, h⟩ 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] {a p : Associates α} (hp : Irreducible p) [(n : ℕ) → Decidable (a ∣ p ^ n)] {n : ℕ} (h : a ∣ p ^ n)
Goal: a = p ^ Nat.find ⋯
-- factorization_eq_count
theorem factorization_eq_count {n p : α} :
    factorization n p = Multiset.count p (normalizedFactors n) 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [NormalizationMonoid α] [DecidableEq α] {n p : α}
Goal: (factorization n) p = Multiset.count p (UniqueFactorizationMonoid.normalizedFactors n)
-- factorization_zero
@[simp]
theorem factorization_zero : factorization (0 : α) = 0 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [NormalizationMonoid α] [DecidableEq α]
Goal: factorization 0 = 0
-- factorization_one
@[simp]
theorem factorization_one : factorization (1 : α) = 0 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [NormalizationMonoid α] [DecidableEq α]
Goal: factorization 1 = 0
-- support_factorization
@[simp]
theorem support_factorization {n : α} :
    (factorization n).support = (normalizedFactors n).toFinset 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [NormalizationMonoid α] [DecidableEq α] {n : α}
Goal: (factorization n).support = (UniqueFactorizationMonoid.normalizedFactors n).toFinset
-- factorization_mul
@[simp]
theorem factorization_mul {a b : α} (ha : a ≠ 0) (hb : b ≠ 0) :
    factorization (a * b) = factorization a + factorization b 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [NormalizationMonoid α] [DecidableEq α] {a b : α} (ha : a ≠ 0) (hb : b ≠ 0)
Goal: factorization (a * b) = factorization a + factorization b
-- factorization_pow
theorem factorization_pow {x : α} {n : ℕ} : factorization (x ^ n) = n • factorization x 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [NormalizationMonoid α] [DecidableEq α] {x : α} {n : ℕ}
Goal: factorization (x ^ n) = n • factorization x
-- associated_of_factorization_eq
theorem associated_of_factorization_eq (a b : α) (ha : a ≠ 0) (hb : b ≠ 0)
    (h : factorization a = factorization b) : Associated a b 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [UniqueFactorizationMonoid α] [NormalizationMonoid α] [DecidableEq α] (a b : α) (ha : a ≠ 0) (hb : b ≠ 0) (h : factorization a = factorization b)
Goal: a ~ᵤ b
-- Ideal.IsPrime.exists_mem_prime_of_ne_bot
theorem Ideal.IsPrime.exists_mem_prime_of_ne_bot {R : Type*} [CommSemiring R] [IsDomain R]
    [UniqueFactorizationMonoid R] {I : Ideal R} (hI₂ : I.IsPrime) (hI : I ≠ ⊥) :
    ∃ x ∈ I, Prime x 
Arguments: {R : Type u_2} [CommSemiring R] [IsDomain R] [UniqueFactorizationMonoid R] {I : Ideal R} (hI₂ : I.IsPrime) (hI : I ≠ ⊥)
Goal: ∃ x ∈ I, Prime x
-- Nat.factors_eq
lemma factors_eq : ∀ n : ℕ, normalizedFactors n = n.primeFactorsList
  
Arguments: (n : ℕ)
Goal: UniqueFactorizationMonoid.normalizedFactors n = ↑n.primeFactorsList
-- Nat.factors_multiset_prod_of_irreducible
lemma factors_multiset_prod_of_irreducible {s : Multiset ℕ} (h : ∀ x : ℕ, x ∈ s → Irreducible x) :
    normalizedFactors s.prod = s 
Arguments: {s : Multiset ℕ} (h : ∀ x ∈ s, Irreducible x)
Goal: UniqueFactorizationMonoid.normalizedFactors s.prod = s
-- wittStructureRat_prop
theorem wittStructureRat_prop (Φ : MvPolynomial idx ℚ) (n : ℕ) :
    bind₁ (wittStructureRat p Φ) (W_ ℚ n) = bind₁ (fun i => rename (Prod.mk i) (W_ ℚ n)) Φ 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℚ) (n : ℕ)
Goal: (MvPolynomial.bind₁ (wittStructureRat p Φ)) (W_ ℚ n) =
  (MvPolynomial.bind₁ fun i => (MvPolynomial.rename (Prod.mk i)) (W_ ℚ n)) Φ
-- wittStructureRat_existsUnique
theorem wittStructureRat_existsUnique (Φ : MvPolynomial idx ℚ) :
    ∃! φ : ℕ → MvPolynomial (idx × ℕ) ℚ,
      ∀ n : ℕ, bind₁ φ (W_ ℚ n) = bind₁ (fun i => rename (Prod.mk i) (W_ ℚ n)) Φ 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℚ)
Goal: ∃! φ,
  ∀ (n : ℕ),
    (MvPolynomial.bind₁ φ) (W_ ℚ n) = (MvPolynomial.bind₁ fun i => (MvPolynomial.rename (Prod.mk i)) (W_ ℚ n)) Φ
-- wittStructureRat_rec_aux
theorem wittStructureRat_rec_aux (Φ : MvPolynomial idx ℚ) (n : ℕ) :
    wittStructureRat p Φ n * C ((p : ℚ) ^ n) =
      bind₁ (fun b => rename (fun i => (b, i)) (W_ ℚ n)) Φ -
        ∑ i ∈ range n, C ((p : ℚ) ^ i) * wittStructureRat p Φ i ^ p ^ (n - i) 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℚ) (n : ℕ)
Goal: wittStructureRat p Φ n * MvPolynomial.C (↑p ^ n) =
  (MvPolynomial.bind₁ fun b => (MvPolynomial.rename fun i => (b, i)) (W_ ℚ n)) Φ -
    ∑ i ∈ Finset.range n, MvPolynomial.C (↑p ^ i) * wittStructureRat p Φ i ^ p ^ (n - i)
-- wittStructureRat_rec
theorem wittStructureRat_rec (Φ : MvPolynomial idx ℚ) (n : ℕ) :
    wittStructureRat p Φ n =
      C (1 / (p : ℚ) ^ n) *
        (bind₁ (fun b => rename (fun i => (b, i)) (W_ ℚ n)) Φ -
          ∑ i ∈ range n, C ((p : ℚ) ^ i) * wittStructureRat p Φ i ^ p ^ (n - i)) 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℚ) (n : ℕ)
Goal: wittStructureRat p Φ n =
  MvPolynomial.C (1 / ↑p ^ n) *
    ((MvPolynomial.bind₁ fun b => (MvPolynomial.rename fun i => (b, i)) (W_ ℚ n)) Φ -
      ∑ i ∈ Finset.range n, MvPolynomial.C (↑p ^ i) * wittStructureRat p Φ i ^ p ^ (n - i))
-- bind₁_rename_expand_wittPolynomial
theorem bind₁_rename_expand_wittPolynomial (Φ : MvPolynomial idx ℤ) (n : ℕ)
    (IH :
      ∀ m : ℕ,
        m < n + 1 →
          map (Int.castRingHom ℚ) (wittStructureInt p Φ m) =
            wittStructureRat p (map (Int.castRingHom ℚ) Φ) m) :
    bind₁ (fun b => rename (fun i => (b, i)) (expand p (W_ ℤ n))) Φ =
      bind₁ (fun i => expand p (wittStructureInt p Φ i)) (W_ ℤ n) 
Arguments: {p : ℕ} {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ) (n : ℕ) (IH :
  ∀ m < n + 1,
    (MvPolynomial.map (Int.castRingHom ℚ)) (wittStructureInt p Φ m) =
      wittStructureRat p ((MvPolynomial.map (Int.castRingHom ℚ)) Φ) m)
Goal: (MvPolynomial.bind₁ fun b => (MvPolynomial.rename fun i => (b, i)) ((MvPolynomial.expand p) (W_ ℤ n))) Φ =
  (MvPolynomial.bind₁ fun i => (MvPolynomial.expand p) (wittStructureInt p Φ i)) (W_ ℤ n)
-- C_p_pow_dvd_bind₁_rename_wittPolynomial_sub_sum
theorem C_p_pow_dvd_bind₁_rename_wittPolynomial_sub_sum (Φ : MvPolynomial idx ℤ) (n : ℕ)
    (IH :
      ∀ m : ℕ,
        m < n →
          map (Int.castRingHom ℚ) (wittStructureInt p Φ m) =
            wittStructureRat p (map (Int.castRingHom ℚ) Φ) m) :
    (C ((p ^ n :) : ℤ) : MvPolynomial (idx × ℕ) ℤ) ∣
      bind₁ (fun b : idx => rename (fun i => (b, i)) (wittPolynomial p ℤ n)) Φ -
        ∑ i ∈ range n, C ((p : ℤ) ^ i) * wittStructureInt p Φ i ^ p ^ (n - i) 
Arguments: {p : ℕ} {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ) (n : ℕ) (IH :
  ∀ m < n,
    (MvPolynomial.map (Int.castRingHom ℚ)) (wittStructureInt p Φ m) =
      wittStructureRat p ((MvPolynomial.map (Int.castRingHom ℚ)) Φ) m)
Goal: MvPolynomial.C ↑(p ^ n) ∣
  (MvPolynomial.bind₁ fun b => (MvPolynomial.rename fun i => (b, i)) (W_ ℤ n)) Φ -
    ∑ i ∈ Finset.range n, MvPolynomial.C (↑p ^ i) * wittStructureInt p Φ i ^ p ^ (n - i)
-- map_wittStructureInt
@[simp]
theorem map_wittStructureInt (Φ : MvPolynomial idx ℤ) (n : ℕ) :
    map (Int.castRingHom ℚ) (wittStructureInt p Φ n) =
      wittStructureRat p (map (Int.castRingHom ℚ) Φ) n 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ) (n : ℕ)
Goal: (MvPolynomial.map (Int.castRingHom ℚ)) (wittStructureInt p Φ n) =
  wittStructureRat p ((MvPolynomial.map (Int.castRingHom ℚ)) Φ) n
-- wittStructureInt_prop
theorem wittStructureInt_prop (Φ : MvPolynomial idx ℤ) (n) :
    bind₁ (wittStructureInt p Φ) (wittPolynomial p ℤ n) =
      bind₁ (fun i => rename (Prod.mk i) (W_ ℤ n)) Φ 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ) (n : ℕ)
Goal: (MvPolynomial.bind₁ (wittStructureInt p Φ)) (W_ ℤ n) =
  (MvPolynomial.bind₁ fun i => (MvPolynomial.rename (Prod.mk i)) (W_ ℤ n)) Φ
-- eq_wittStructureInt
theorem eq_wittStructureInt (Φ : MvPolynomial idx ℤ) (φ : ℕ → MvPolynomial (idx × ℕ) ℤ)
    (h : ∀ n, bind₁ φ (wittPolynomial p ℤ n) = bind₁ (fun i => rename (Prod.mk i) (W_ ℤ n)) Φ) :
    φ = wittStructureInt p Φ 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ) (φ : ℕ → MvPolynomial (idx × ℕ) ℤ) (h :
  ∀ (n : ℕ),
    (MvPolynomial.bind₁ φ) (W_ ℤ n) = (MvPolynomial.bind₁ fun i => (MvPolynomial.rename (Prod.mk i)) (W_ ℤ n)) Φ)
Goal: φ = wittStructureInt p Φ
-- wittStructureInt_existsUnique
theorem wittStructureInt_existsUnique (Φ : MvPolynomial idx ℤ) :
    ∃! φ : ℕ → MvPolynomial (idx × ℕ) ℤ,
      ∀ n : ℕ,
        bind₁ φ (wittPolynomial p ℤ n) = bind₁ (fun i : idx => rename (Prod.mk i) (W_ ℤ n)) Φ 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ)
Goal: ∃! φ,
  ∀ (n : ℕ),
    (MvPolynomial.bind₁ φ) (W_ ℤ n) = (MvPolynomial.bind₁ fun i => (MvPolynomial.rename (Prod.mk i)) (W_ ℤ n)) Φ
-- witt_structure_prop
theorem witt_structure_prop (Φ : MvPolynomial idx ℤ) (n) :
    aeval (fun i => map (Int.castRingHom R) (wittStructureInt p Φ i)) (wittPolynomial p ℤ n) =
      aeval (fun i => rename (Prod.mk i) (W n)) Φ 
Arguments: (p : ℕ) {R : Type u_1} {idx : Type u_2} [CommRing R] [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ) (n : ℕ)
Goal: (MvPolynomial.aeval fun i => (MvPolynomial.map (Int.castRingHom R)) (wittStructureInt p Φ i)) (W_ ℤ n) =
  (MvPolynomial.aeval fun i => (MvPolynomial.rename (Prod.mk i)) (W_ R n)) Φ
-- wittStructureInt_rename
theorem wittStructureInt_rename {σ : Type*} (Φ : MvPolynomial idx ℤ) (f : idx → σ) (n : ℕ) :
    wittStructureInt p (rename f Φ) n = rename (Prod.map f id) (wittStructureInt p Φ n) 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] {σ : Type u_3} (Φ : MvPolynomial idx ℤ) (f : idx → σ) (n : ℕ)
Goal: wittStructureInt p ((MvPolynomial.rename f) Φ) n = (MvPolynomial.rename (Prod.map f id)) (wittStructureInt p Φ n)
-- constantCoeff_wittStructureRat_zero
@[simp]
theorem constantCoeff_wittStructureRat_zero (Φ : MvPolynomial idx ℚ) :
    constantCoeff (wittStructureRat p Φ 0) = constantCoeff Φ 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℚ)
Goal: MvPolynomial.constantCoeff (wittStructureRat p Φ 0) = MvPolynomial.constantCoeff Φ
-- constantCoeff_wittStructureRat
theorem constantCoeff_wittStructureRat (Φ : MvPolynomial idx ℚ) (h : constantCoeff Φ = 0) (n : ℕ) :
    constantCoeff (wittStructureRat p Φ n) = 0 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℚ) (h : MvPolynomial.constantCoeff Φ = 0) (n : ℕ)
Goal: MvPolynomial.constantCoeff (wittStructureRat p Φ n) = 0
-- constantCoeff_wittStructureInt_zero
@[simp]
theorem constantCoeff_wittStructureInt_zero (Φ : MvPolynomial idx ℤ) :
    constantCoeff (wittStructureInt p Φ 0) = constantCoeff Φ 
Arguments: (p : ℕ) {idx : Type u_2} [hp : Fact (Nat.Prime p)] (Φ : MvPolynomial idx ℤ)
Goal: MvPolynomial.constantCoeff (wittStructureInt p Φ 0) = MvPolynomial.constantCoeff Φ