ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Finset.gcd_image
theorem gcd_image [DecidableEq β] {g : γ → β} (s : Finset γ) :
    (s.image g).gcd f = s.gcd (f ∘ g) 
Arguments: {α : Type u_2} {β : Type u_3} {γ : Type u_4} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {f : β → α} [DecidableEq β] {g : γ → β} (s : Finset γ)
Goal: (Finset.image g s).gcd f = s.gcd (f ∘ g)
-- Finset.gcd_eq_gcd_image
theorem gcd_eq_gcd_image [DecidableEq α] : s.gcd f = (s.image f).gcd id 
Arguments: {α : Type u_2} {β : Type u_3} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Finset β} {f : β → α} [DecidableEq α]
Goal: s.gcd f = (Finset.image f s).gcd id
-- Finset.gcd_eq_zero_iff
theorem gcd_eq_zero_iff : s.gcd f = 0 ↔ ∀ x : β, x ∈ s → f x = 0 
Arguments: {α : Type u_2} {β : Type u_3} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Finset β} {f : β → α}
Goal: s.gcd f = 0 ↔ ∀ x ∈ s, f x = 0
-- Finset.gcd_eq_gcd_filter_ne_zero
theorem gcd_eq_gcd_filter_ne_zero [DecidablePred fun x : β ↦ f x = 0] :
    s.gcd f = (s.filter fun x ↦ f x ≠ 0).gcd f 
Arguments: {α : Type u_2} {β : Type u_3} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Finset β} {f : β → α} [DecidablePred fun x => f x = 0]
Goal: s.gcd f = (Finset.filter (fun x => f x ≠ 0) s).gcd f
-- Finset.gcd_mul_left
nonrec theorem gcd_mul_left {a : α} : (s.gcd fun x ↦ a * f x) = normalize a * s.gcd f 
Arguments: {α : Type u_2} {β : Type u_3} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Finset β} {f : β → α} {a : α}
Goal: (s.gcd fun x => a * f x) = normalize a * s.gcd f
-- Finset.gcd_mul_right
nonrec theorem gcd_mul_right {a : α} : (s.gcd fun x ↦ f x * a) = s.gcd f * normalize a 
Arguments: {α : Type u_2} {β : Type u_3} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Finset β} {f : β → α} {a : α}
Goal: (s.gcd fun x => f x * a) = s.gcd f * normalize a
-- Finset.extract_gcd'
theorem extract_gcd' (f g : β → α) (hs : ∃ x, x ∈ s ∧ f x ≠ 0)
    (hg : ∀ b ∈ s, f b = s.gcd f * g b) : s.gcd g = 1 
Arguments: {α : Type u_2} {β : Type u_3} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Finset β} (f g : β → α) (hs : ∃ x ∈ s, f x ≠ 0) (hg : ∀ b ∈ s, f b = s.gcd f * g b)
Goal: s.gcd g = 1
-- Finset.extract_gcd
theorem extract_gcd (f : β → α) (hs : s.Nonempty) :
    ∃ g : β → α, (∀ b ∈ s, f b = s.gcd f * g b) ∧ s.gcd g = 1 
Arguments: {α : Type u_2} {β : Type u_3} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Finset β} (f : β → α) (hs : s.Nonempty)
Goal: ∃ g, (∀ b ∈ s, f b = s.gcd f * g b) ∧ s.gcd g = 1
-- Finset.gcd_div_eq_one
lemma gcd_div_eq_one (his : i ∈ s) (hfi : f i ≠ 0) : s.gcd (fun j ↦ f j / s.gcd f) = 1 
Arguments: {ι : Type u_1} {α : Type u_2} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] [Div α] [MulDivCancelClass α] {f : ι → α} {s : Finset ι} {i : ι} (his : i ∈ s) (hfi : f i ≠ 0)
Goal: (s.gcd fun j => f j / s.gcd f) = 1
-- Finset.gcd_div_id_eq_one
lemma gcd_div_id_eq_one {s : Finset α} {a : α} (has : a ∈ s) (ha : a ≠ 0) :
    s.gcd (fun b ↦ b / s.gcd id) = 1 
Arguments: {α : Type u_2} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] [Div α] [MulDivCancelClass α] {s : Finset α} {a : α} (has : a ∈ s) (ha : a ≠ 0)
Goal: (s.gcd fun b => b / s.gcd id) = 1
-- Finset.gcd_eq_of_dvd_sub
theorem gcd_eq_of_dvd_sub {s : Finset β} {f g : β → α} {a : α}
    (h : ∀ x : β, x ∈ s → a ∣ f x - g x) :
    GCDMonoid.gcd a (s.gcd f) = GCDMonoid.gcd a (s.gcd g) 
Arguments: {α : Type u_2} {β : Type u_3} [CommRing α] [IsDomain α] [NormalizedGCDMonoid α] {s : Finset β} {f g : β → α} {a : α} (h : ∀ x ∈ s, a ∣ f x - g x)
Goal: gcd a (s.gcd f) = gcd a (s.gcd g)
-- Finset.natCast_card_filter
lemma natCast_card_filter (p) [DecidablePred p] (s : Finset ι) :
    ((filter p s).card : α) = ∑ a ∈ s, if p a then (1 : α) else 0 
Arguments: {ι : Type u_1} {α : Type u_2} [AddCommMonoidWithOne α] (p : ι → Prop) [DecidablePred p] (s : Finset ι)
Goal: ↑(Finset.filter p s).card = ∑ a ∈ s, if p a then 1 else 0
-- Finset.sum_boole
@[simp] lemma sum_boole (p) [DecidablePred p] (s : Finset ι) :
    (∑ x ∈ s, if p x then 1 else 0 : α) = (s.filter p).card 
Arguments: {ι : Type u_1} {α : Type u_2} [AddCommMonoidWithOne α] (p : ι → Prop) [DecidablePred p] (s : Finset ι)
Goal: (∑ x ∈ s, if p x then 1 else 0) = ↑(Finset.filter p s).card
-- Finset.sum_mul
lemma sum_mul (s : Finset ι) (f : ι → α) (a : α) :
    (∑ i ∈ s, f i) * a = ∑ i ∈ s, f i * a 
Arguments: {ι : Type u_1} {α : Type u_2} [NonUnitalNonAssocSemiring α] (s : Finset ι) (f : ι → α) (a : α)
Goal: (∑ i ∈ s, f i) * a = ∑ i ∈ s, f i * a
-- Finset.mul_sum
lemma mul_sum (s : Finset ι) (f : ι → α) (a : α) :
    a * ∑ i ∈ s, f i = ∑ i ∈ s, a * f i 
Arguments: {ι : Type u_1} {α : Type u_2} [NonUnitalNonAssocSemiring α] (s : Finset ι) (f : ι → α) (a : α)
Goal: a * ∑ i ∈ s, f i = ∑ i ∈ s, a * f i
-- Finset.sum_mul_sum
lemma sum_mul_sum {κ : Type*} (s : Finset ι) (t : Finset κ) (f : ι → α) (g : κ → α) :
    (∑ i ∈ s, f i) * ∑ j ∈ t, g j = ∑ i ∈ s, ∑ j ∈ t, f i * g j 
Arguments: {ι : Type u_1} {α : Type u_2} [NonUnitalNonAssocSemiring α] {κ : Type u_6} (s : Finset ι) (t : Finset κ) (f : ι → α) (g : κ → α)
Goal: (∑ i ∈ s, f i) * ∑ j ∈ t, g j = ∑ i ∈ s, ∑ j ∈ t, f i * g j
-- Fintype.sum_mul_sum
lemma _root_.Fintype.sum_mul_sum {κ : Type*} [Fintype ι] [Fintype κ] (f : ι → α) (g : κ → α) :
    (∑ i, f i) * ∑ j, g j = ∑ i, ∑ j, f i * g j 
Arguments: {ι : Type u_1} {α : Type u_2} [NonUnitalNonAssocSemiring α] {κ : Type u_6} [Fintype ι] [Fintype κ] (f : ι → α) (g : κ → α)
Goal: (∑ i : ι, f i) * ∑ j : κ, g j = ∑ i : ι, ∑ j : κ, f i * g j
-- Commute.sum_right
lemma _root_.Commute.sum_right [NonUnitalNonAssocSemiring α] (s : Finset ι) (f : ι → α) (b : α)
    (h : ∀ i ∈ s, Commute b (f i)) : Commute b (∑ i ∈ s, f i) 
Arguments: {ι : Type u_1} {α : Type u_2} [NonUnitalNonAssocSemiring α] (s : Finset ι) (f : ι → α) (b : α) (h : ∀ i ∈ s, Commute b (f i))
Goal: Commute b (∑ i ∈ s, f i)
-- Commute.sum_left
lemma _root_.Commute.sum_left [NonUnitalNonAssocSemiring α] (s : Finset ι) (f : ι → α) (b : α)
    (h : ∀ i ∈ s, Commute (f i) b) : Commute (∑ i ∈ s, f i) b 
Arguments: {ι : Type u_1} {α : Type u_2} [NonUnitalNonAssocSemiring α] (s : Finset ι) (f : ι → α) (b : α) (h : ∀ i ∈ s, Commute (f i) b)
Goal: Commute (∑ i ∈ s, f i) b
-- Finset.sum_range_succ_mul_sum_range_succ
lemma sum_range_succ_mul_sum_range_succ (m n : ℕ) (f g : ℕ → α) :
    (∑ i ∈ range (m + 1), f i) * ∑ i ∈ range (n + 1), g i =
      (∑ i ∈ range m, f i) * ∑ i ∈ range n, g i +
        f m * ∑ i ∈ range n, g i + (∑ i ∈ range m, f i) * g n + f m * g n 
Arguments: {α : Type u_2} [NonUnitalNonAssocSemiring α] (m n : ℕ) (f g : ℕ → α)
Goal: (∑ i ∈ Finset.range (m + 1), f i) * ∑ i ∈ Finset.range (n + 1), g i =
  (∑ i ∈ Finset.range m, f i) * ∑ i ∈ Finset.range n, g i + f m * ∑ i ∈ Finset.range n, g i +
      (∑ i ∈ Finset.range m, f i) * g n +
    f m * g n
-- Finset.dvd_sum
lemma dvd_sum (h : ∀ i ∈ s, a ∣ f i) : a ∣ ∑ i ∈ s, f i 
Arguments: {ι : Type u_1} {α : Type u_2} {s : Finset ι} {a : α} {f : ι → α} [NonUnitalSemiring α] (h : ∀ i ∈ s, a ∣ f i)
Goal: a ∣ ∑ i ∈ s, f i
-- Finset.sum_mul_boole
lemma sum_mul_boole (s : Finset ι) (f : ι → α) (i : ι) :
    ∑ j ∈ s, f j * ite (i = j) 1 0 = ite (i ∈ s) (f i) 0 
Arguments: {ι : Type u_1} {α : Type u_2} [NonAssocSemiring α] [DecidableEq ι] (s : Finset ι) (f : ι → α) (i : ι)
Goal: (∑ j ∈ s, f j * if i = j then 1 else 0) = if i ∈ s then f i else 0
-- Finset.sum_boole_mul
lemma sum_boole_mul (s : Finset ι) (f : ι → α) (i : ι) :
    ∑ j ∈ s, ite (i = j) 1 0 * f j = ite (i ∈ s) (f i) 0 
Arguments: {ι : Type u_1} {α : Type u_2} [NonAssocSemiring α] [DecidableEq ι] (s : Finset ι) (f : ι → α) (i : ι)
Goal: ∑ j ∈ s, (if i = j then 1 else 0) * f j = if i ∈ s then f i else 0
-- Finset.prod_add_prod_eq
theorem prod_add_prod_eq {s : Finset ι} {i : ι} {f g h : ι → α} (hi : i ∈ s)
    (h1 : g i + h i = f i) (h2 : ∀ j ∈ s, j ≠ i → g j = f j) (h3 : ∀ j ∈ s, j ≠ i → h j = f j) :
    (∏ i ∈ s, g i) + ∏ i ∈ s, h i = ∏ i ∈ s, f i 
Arguments: {ι : Type u_1} {α : Type u_2} [CommSemiring α] {s : Finset ι} {i : ι} {f g h : ι → α} (hi : i ∈ s) (h1 : g i + h i = f i) (h2 : ∀ j ∈ s, j ≠ i → g j = f j) (h3 : ∀ j ∈ s, j ≠ i → h j = f j)
Goal: ∏ i ∈ s, g i + ∏ i ∈ s, h i = ∏ i ∈ s, f i
-- Finset.prod_sum
lemma prod_sum (s : Finset ι) (t : ∀ i, Finset (κ i)) (f : ∀ i, κ i → α) :
    ∏ a ∈ s, ∑ b ∈ t a, f a b = ∑ p ∈ s.pi t, ∏ x ∈ s.attach, f x.1 (p x.1 x.2) 
Arguments: {ι : Type u_1} {α : Type u_2} {κ : ι → Type u_5} [CommSemiring α] [DecidableEq ι] (s : Finset ι) (t : (i : ι) → Finset (κ i)) (f : (i : ι) → κ i → α)
Goal: ∏ a ∈ s, ∑ b ∈ t a, f a b = ∑ p ∈ s.pi t, ∏ x ∈ s.attach, f (↑x) (p ↑x ⋯)
-- Finset.prod_univ_sum
lemma prod_univ_sum [Fintype ι] (t : ∀ i, Finset (κ i)) (f : ∀ i, κ i → α) :
    ∏ i, ∑ j ∈ t i, f i j = ∑ x ∈ piFinset t, ∏ i, f i (x i) 
Arguments: {ι : Type u_1} {α : Type u_2} {κ : ι → Type u_5} [CommSemiring α] [DecidableEq ι] [Fintype ι] (t : (i : ι) → Finset (κ i)) (f : (i : ι) → κ i → α)
Goal: ∏ i : ι, ∑ j ∈ t i, f i j = ∑ x ∈ Fintype.piFinset t, ∏ i : ι, f i (x i)
-- Finset.sum_prod_piFinset
lemma sum_prod_piFinset {κ : Type*} [Fintype ι] (s : Finset κ) (g : ι → κ → α) :
    ∑ f ∈ piFinset fun _ : ι ↦ s, ∏ i, g i (f i) = ∏ i, ∑ j ∈ s, g i j 
Arguments: {ι : Type u_1} {α : Type u_2} [CommSemiring α] [DecidableEq ι] {κ : Type u_6} [Fintype ι] (s : Finset κ) (g : ι → κ → α)
Goal: ∑ f ∈ Fintype.piFinset fun x => s, ∏ i : ι, g i (f i) = ∏ i : ι, ∑ j ∈ s, g i j
-- Finset.sum_pow'
lemma sum_pow' (s : Finset ι) (f : ι → α) (n : ℕ) :
    (∑ a ∈ s, f a) ^ n = ∑ p ∈ piFinset fun _i : Fin n ↦ s, ∏ i, f (p i) 
Arguments: {ι : Type u_1} {α : Type u_2} [CommSemiring α] (s : Finset ι) (f : ι → α) (n : ℕ)
Goal: (∑ a ∈ s, f a) ^ n = ∑ p ∈ Fintype.piFinset fun _i => s, ∏ i : Fin n, f (p i)
-- Finset.prod_add
theorem prod_add (f g : ι → α) (s : Finset ι) :
    ∏ i ∈ s, (f i + g i) = ∑ t ∈ s.powerset, (∏ i ∈ t, f i) * ∏ i ∈ s \ t, g i 
Arguments: {ι : Type u_1} {α : Type u_2} [CommSemiring α] [DecidableEq ι] (f g : ι → α) (s : Finset ι)
Goal: ∏ i ∈ s, (f i + g i) = ∑ t ∈ s.powerset, (∏ i ∈ t, f i) * ∏ i ∈ s \ t, g i
-- Finset.prod_add_ordered
theorem prod_add_ordered [LinearOrder ι] [CommSemiring α] (s : Finset ι) (f g : ι → α) :
    ∏ i ∈ s, (f i + g i) =
      (∏ i ∈ s, f i) +
        ∑ i ∈ s,
          g i * (∏ j ∈ s.filter (· < i), (f j + g j)) * ∏ j ∈ s.filter fun j => i < j, f j 
Arguments: {ι : Type u_1} {α : Type u_2} [LinearOrder ι] [CommSemiring α] (s : Finset ι) (f g : ι → α)
Goal: ∏ i ∈ s, (f i + g i) =
  ∏ i ∈ s, f i +
    ∑ i ∈ s, (g i * ∏ j ∈ Finset.filter (fun x => x < i) s, (f j + g j)) * ∏ j ∈ Finset.filter (fun j => i < j) s, f j
-- Finset.sum_pow_mul_eq_add_pow
theorem sum_pow_mul_eq_add_pow (a b : α) (s : Finset ι) :
    (∑ t ∈ s.powerset, a ^ t.card * b ^ (s.card - t.card)) = (a + b) ^ s.card 
Arguments: {ι : Type u_1} {α : Type u_2} [CommSemiring α] (a b : α) (s : Finset ι)
Goal: ∑ t ∈ s.powerset, a ^ t.card * b ^ (s.card - t.card) = (a + b) ^ s.card
-- Fintype.sum_pow_mul_eq_add_pow
lemma _root_.Fintype.sum_pow_mul_eq_add_pow (ι : Type*) [Fintype ι] (a b : α) :
    ∑ s : Finset ι, a ^ s.card * b ^ (Fintype.card ι - s.card) = (a + b) ^ Fintype.card ι 
Arguments: {α : Type u_2} [CommSemiring α] (ι : Type u_6) [Fintype ι] (a b : α)
Goal: ∑ s : Finset ι, a ^ s.card * b ^ (Fintype.card ι - s.card) = (a + b) ^ Fintype.card ι
-- Finset.prod_natCast
@[norm_cast]
theorem prod_natCast (s : Finset ι) (f : ι → ℕ) : ↑(∏ i ∈ s, f i : ℕ) = ∏ i ∈ s, (f i : α) 
Arguments: {ι : Type u_1} {α : Type u_2} [CommSemiring α] (s : Finset ι) (f : ι → ℕ)
Goal: ↑(∏ i ∈ s, f i) = ∏ i ∈ s, ↑(f i)
-- Finset.prod_sub_ordered
lemma prod_sub_ordered [LinearOrder ι] (s : Finset ι) (f g : ι → α) :
    ∏ i ∈ s, (f i - g i) =
      (∏ i ∈ s, f i) -
        ∑ i ∈ s,
          g i * (∏ j ∈ s.filter (· < i), (f j - g j)) * ∏ j ∈ s.filter fun j => i < j, f j 
Arguments: {ι : Type u_1} {α : Type u_2} [CommRing α] [LinearOrder ι] (s : Finset ι) (f g : ι → α)
Goal: ∏ i ∈ s, (f i - g i) =
  ∏ i ∈ s, f i -
    ∑ i ∈ s, (g i * ∏ j ∈ Finset.filter (fun x => x < i) s, (f j - g j)) * ∏ j ∈ Finset.filter (fun j => i < j) s, f j
-- Finset.prod_one_sub_ordered
theorem prod_one_sub_ordered [LinearOrder ι] (s : Finset ι) (f : ι → α) :
    ∏ i ∈ s, (1 - f i) = 1 - ∑ i ∈ s, f i * ∏ j ∈ s.filter (· < i), (1 - f j) 
Arguments: {ι : Type u_1} {α : Type u_2} [CommRing α] [LinearOrder ι] (s : Finset ι) (f : ι → α)
Goal: ∏ i ∈ s, (1 - f i) = 1 - ∑ i ∈ s, f i * ∏ j ∈ Finset.filter (fun x => x < i) s, (1 - f j)
-- Finset.prod_range_natCast_sub
theorem prod_range_natCast_sub (n k : ℕ) :
    ∏ i ∈ range k, (n - i : α) = (∏ i ∈ range k, (n - i) : ℕ) 
Arguments: {α : Type u_2} [CommRing α] (n k : ℕ)
Goal: ∏ i ∈ Finset.range k, (↑n - ↑i) = ↑(∏ i ∈ Finset.range k, (n - i))
-- Finset.sum_div
lemma sum_div (s : Finset ι) (f : ι → α) (a : α) :
    (∑ i ∈ s, f i) / a = ∑ i ∈ s, f i / a 
Arguments: {ι : Type u_1} {α : Type u_2} [DivisionSemiring α] (s : Finset ι) (f : ι → α) (a : α)
Goal: (∑ i ∈ s, f i) / a = ∑ i ∈ s, f i / a
-- Fintype.sum_pow
lemma sum_pow (f : ι → α) (n : ℕ) : (∑ a, f a) ^ n = ∑ p : Fin n → ι, ∏ i, f (p i) 
Arguments: {ι : Type u_6} {α : Type u_8} [Fintype ι] [CommSemiring α] (f : ι → α) (n : ℕ)
Goal: (∑ a : ι, f a) ^ n = ∑ p : Fin n → ι, ∏ i : Fin n, f (p i)
-- Fintype.prod_sum
lemma prod_sum {κ : ι → Type*} [Fintype ι] [∀ i, Fintype (κ i)] (f : ∀ i, κ i → α) :
    ∏ i, ∑ j, f i j = ∑ x : ∀ i, κ i, ∏ i, f i (x i) 
Arguments: {ι : Type u_6} {α : Type u_8} [DecidableEq ι] [CommSemiring α] {κ : ι → Type u_9} [Fintype ι] [(i : ι) → Fintype (κ i)] (f : (i : ι) → κ i → α)
Goal: ∏ i : ι, ∑ j : κ i, f i j = ∑ x : (i : ι) → κ i, ∏ i : ι, f i (x i)
-- Fintype.prod_add
lemma prod_add (f g : ι → α) : ∏ a, (f a + g a) = ∑ t, (∏ a ∈ t, f a) * ∏ a ∈ tᶜ, g a 
Arguments: {ι : Type u_6} {α : Type u_8} [DecidableEq ι] [Fintype ι] [CommSemiring α] (f g : ι → α)
Goal: ∏ a : ι, (f a + g a) = ∑ t : Finset ι, (∏ a ∈ t, f a) * ∏ a ∈ tᶜ, g a
-- Nat.sum_div
protected lemma sum_div (hf : ∀ i ∈ s, n ∣ f i) : (∑ i ∈ s, f i) / n = ∑ i ∈ s, f i / n 
Arguments: {ι : Type u_6} {s : Finset ι} {f : ι → ℕ} {n : ℕ} (hf : ∀ i ∈ s, n ∣ f i)
Goal: (∑ i ∈ s, f i) / n = ∑ i ∈ s, f i / n
-- Nat.cast_list_sum
@[simp, norm_cast]
lemma cast_list_sum [AddMonoidWithOne β] (s : List ℕ) : (↑s.sum : β) = (s.map (↑)).sum 
Arguments: {β : Type u_3} [AddMonoidWithOne β] (s : List ℕ)
Goal: ↑s.sum = (List.map Nat.cast s).sum
-- Nat.cast_list_prod
@[simp, norm_cast]
lemma cast_list_prod [Semiring β] (s : List ℕ) : (↑s.prod : β) = (s.map (↑)).prod 
Arguments: {β : Type u_3} [Semiring β] (s : List ℕ)
Goal: ↑s.prod = (List.map Nat.cast s).prod
-- Nat.cast_multiset_sum
@[simp, norm_cast]
lemma cast_multiset_sum [AddCommMonoidWithOne β] (s : Multiset ℕ) :
    (↑s.sum : β) = (s.map (↑)).sum 
Arguments: {β : Type u_3} [AddCommMonoidWithOne β] (s : Multiset ℕ)
Goal: ↑s.sum = (Multiset.map Nat.cast s).sum
-- Nat.cast_multiset_prod
@[simp, norm_cast]
lemma cast_multiset_prod [CommSemiring β] (s : Multiset ℕ) : (↑s.prod : β) = (s.map (↑)).prod 
Arguments: {β : Type u_3} [CommSemiring β] (s : Multiset ℕ)
Goal: ↑s.prod = (Multiset.map Nat.cast s).prod
-- Nat.cast_sum
@[simp, norm_cast]
lemma cast_sum [AddCommMonoidWithOne β] (s : Finset α) (f : α → ℕ) :
    ↑(∑ x ∈ s, f x : ℕ) = ∑ x ∈ s, (f x : β) 
Arguments: {α : Type u_2} {β : Type u_3} [AddCommMonoidWithOne β] (s : Finset α) (f : α → ℕ)
Goal: ↑(∑ x ∈ s, f x) = ∑ x ∈ s, ↑(f x)
-- Nat.cast_prod
@[simp, norm_cast]
lemma cast_prod [CommSemiring β] (f : α → ℕ) (s : Finset α) :
    (↑(∏ i ∈ s, f i) : β) = ∏ i ∈ s, (f i : β) 
Arguments: {α : Type u_2} {β : Type u_3} [CommSemiring β] (f : α → ℕ) (s : Finset α)
Goal: ↑(∏ i ∈ s, f i) = ∏ i ∈ s, ↑(f i)
-- Int.sum_div
protected lemma sum_div (hf : ∀ i ∈ s, n ∣ f i) : (∑ i ∈ s, f i) / n = ∑ i ∈ s, f i / n 
Arguments: {ι : Type u_6} {s : Finset ι} {f : ι → ℤ} {n : ℤ} (hf : ∀ i ∈ s, n ∣ f i)
Goal: (∑ i ∈ s, f i) / n = ∑ i ∈ s, f i / n
-- Int.cast_list_sum
@[simp, norm_cast]
lemma cast_list_sum [AddGroupWithOne β] (s : List ℤ) : (↑s.sum : β) = (s.map (↑)).sum 
Arguments: {β : Type u_3} [AddGroupWithOne β] (s : List ℤ)
Goal: ↑s.sum = (List.map Int.cast s).sum
-- Int.cast_list_prod
@[simp, norm_cast]
lemma cast_list_prod [Ring β] (s : List ℤ) : (↑s.prod : β) = (s.map (↑)).prod 
Arguments: {β : Type u_3} [Ring β] (s : List ℤ)
Goal: ↑s.prod = (List.map Int.cast s).prod
-- Int.cast_multiset_sum
@[simp, norm_cast]
lemma cast_multiset_sum [AddCommGroupWithOne β] (s : Multiset ℤ) :
    (↑s.sum : β) = (s.map (↑)).sum 
Arguments: {β : Type u_3} [AddCommGroupWithOne β] (s : Multiset ℤ)
Goal: ↑s.sum = (Multiset.map Int.cast s).sum
-- Int.cast_multiset_prod
@[simp, norm_cast]
lemma cast_multiset_prod {R : Type*} [CommRing R] (s : Multiset ℤ) :
    (↑s.prod : R) = (s.map (↑)).prod 
Arguments: {R : Type u_7} [CommRing R] (s : Multiset ℤ)
Goal: ↑s.prod = (Multiset.map Int.cast s).prod
-- Int.cast_sum
@[simp, norm_cast]
lemma cast_sum [AddCommGroupWithOne β] (s : Finset α) (f : α → ℤ) :
    ↑(∑ x ∈ s, f x : ℤ) = ∑ x ∈ s, (f x : β) 
Arguments: {α : Type u_2} {β : Type u_3} [AddCommGroupWithOne β] (s : Finset α) (f : α → ℤ)
Goal: ↑(∑ x ∈ s, f x) = ∑ x ∈ s, ↑(f x)
-- Int.cast_prod
@[simp, norm_cast]
lemma cast_prod {R : Type*} [CommRing R] (f : α → ℤ) (s : Finset α) :
    (↑(∏ i ∈ s, f i) : R) = ∏ i ∈ s, (f i : R) 
Arguments: {α : Type u_2} {R : Type u_7} [CommRing R] (f : α → ℤ) (s : Finset α)
Goal: ↑(∏ i ∈ s, f i) = ∏ i ∈ s, ↑(f i)
-- MixedCharZero.charP_quotient
class MixedCharZero (p : ℕ) : Prop where
  [toCharZero : CharZero R]
  charP_quotient : ∃ I : Ideal R, I ≠ ⊤ ∧ CharP (R ⧸ I) p
Arguments: {R : Type u_1} [CommRing R] {p : ℕ} [self : MixedCharZero R p]
Goal: ∃ I, I ≠ ⊤ ∧ CharP (R ⧸ I) p
-- MixedCharZero.toCharZero
class MixedCharZero (p : ℕ) : Prop where
  [toCharZero : CharZero R]
  charP_quotient : ∃ I : Ideal R, I ≠ ⊤ ∧ CharP (R ⧸ I) p
Arguments: {R : Type u_1} [CommRing R] (p : ℕ) [self : MixedCharZero R p]
Goal: CharZero R
-- MixedCharZero.reduce_to_p_prime
theorem reduce_to_p_prime {P : Prop} :
    (∀ p > 0, MixedCharZero R p → P) ↔ ∀ p : ℕ, p.Prime → MixedCharZero R p → P 
Arguments: (R : Type u_1) [CommRing R] {P : Prop}
Goal: (∀ p > 0, MixedCharZero R p → P) ↔ ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P
-- MixedCharZero.reduce_to_maximal_ideal
theorem reduce_to_maximal_ideal {p : ℕ} (hp : Nat.Prime p) :
    (∃ I : Ideal R, I ≠ ⊤ ∧ CharP (R ⧸ I) p) ↔ ∃ I : Ideal R, I.IsMaximal ∧ CharP (R ⧸ I) p 
Arguments: (R : Type u_1) [CommRing R] {p : ℕ} (hp : Nat.Prime p)
Goal: (∃ I, I ≠ ⊤ ∧ CharP (R ⧸ I) p) ↔ ∃ I, I.IsMaximal ∧ CharP (R ⧸ I) p
-- EqualCharZero.of_algebraRat
theorem of_algebraRat [Algebra ℚ R] : ∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I) 
Arguments: (R : Type u_1) [CommRing R] [Algebra ℚ R] (I : Ideal R)
Goal: I ≠ ⊤ → CharZero (R ⧸ I)
-- EqualCharZero.PNat.isUnit_natCast
theorem PNat.isUnit_natCast [h : Fact (∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I))]
    (n : ℕ+) : IsUnit (n : R) 
Arguments: {R : Type u_1} [CommRing R] [h : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))] (n : ℕ+)
Goal: IsUnit ↑↑n
-- EqualCharZero.pnatCast_one
@[simp]
theorem pnatCast_one [Fact (∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I))] : ((1 : ℕ+) : Rˣ) = 1 
Arguments: {R : Type u_1} [CommRing R] [Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))]
Goal: ↑1 = 1
-- EqualCharZero.pnatCast_eq_natCast
@[simp]
theorem pnatCast_eq_natCast [Fact (∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I))] (n : ℕ+) :
    ((n : Rˣ) : R) = ↑n 
Arguments: {R : Type u_1} [CommRing R] [Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))] (n : ℕ+)
Goal: ↑↑n = ↑↑n
-- EqualCharZero.of_not_mixedCharZero
theorem of_not_mixedCharZero [CharZero R] (h : ∀ p > 0, ¬MixedCharZero R p) :
    ∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I) 
Arguments: (R : Type u_1) [CommRing R] [CharZero R] (h : ∀ p > 0, ¬MixedCharZero R p) (I : Ideal R)
Goal: I ≠ ⊤ → CharZero (R ⧸ I)
-- EqualCharZero.to_not_mixedCharZero
theorem to_not_mixedCharZero (h : ∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I)) :
    ∀ p > 0, ¬MixedCharZero R p 
Arguments: (R : Type u_1) [CommRing R] (h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)) (p : ℕ)
Goal: p > 0 → ¬MixedCharZero R p
-- EqualCharZero.iff_not_mixedCharZero
theorem iff_not_mixedCharZero [CharZero R] :
    (∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I)) ↔ ∀ p > 0, ¬MixedCharZero R p 
Arguments: (R : Type u_1) [CommRing R] [CharZero R]
Goal: (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)) ↔ ∀ p > 0, ¬MixedCharZero R p
-- EqualCharZero.nonempty_algebraRat_iff
theorem nonempty_algebraRat_iff :
    Nonempty (Algebra ℚ R) ↔ ∀ I : Ideal R, I ≠ ⊤ → CharZero (R ⧸ I) 
Arguments: (R : Type u_1) [CommRing R]
Goal: Nonempty (Algebra ℚ R) ↔ ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
-- isEmpty_algebraRat_iff_mixedCharZero
theorem isEmpty_algebraRat_iff_mixedCharZero [CharZero R] :
    IsEmpty (Algebra ℚ R) ↔ ∃ p > 0, MixedCharZero R p 
Arguments: (R : Type u_1) [CommRing R] [CharZero R]
Goal: IsEmpty (Algebra ℚ R) ↔ ∃ p > 0, MixedCharZero R p
-- split_equalCharZero_mixedCharZero
theorem split_equalCharZero_mixedCharZero [CharZero R] (h_equal : Algebra ℚ R → P)
    (h_mixed : ∀ p : ℕ, Nat.Prime p → MixedCharZero R p → P) : P 
Arguments: (R : Type u_1) [CommRing R] {P : Prop} [CharZero R] (h_equal : Algebra ℚ R → P) (h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P)
Goal: P
-- split_by_characteristic
theorem split_by_characteristic (h_pos : ∀ p : ℕ, p ≠ 0 → CharP R p → P) (h_equal : Algebra ℚ R → P)
    (h_mixed : ∀ p : ℕ, Nat.Prime p → MixedCharZero R p → P) : P 
Arguments: (R : Type u_1) [CommRing R] {P : Prop} (h_pos : ∀ (p : ℕ), p ≠ 0 → CharP R p → P) (h_equal : Algebra ℚ R → P) (h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P)
Goal: P
-- split_by_characteristic_domain
theorem split_by_characteristic_domain [IsDomain R] (h_pos : ∀ p : ℕ, Nat.Prime p → CharP R p → P)
    (h_equal : Algebra ℚ R → P) (h_mixed : ∀ p : ℕ, Nat.Prime p → MixedCharZero R p → P) : P 
Arguments: (R : Type u_1) [CommRing R] {P : Prop} [IsDomain R] (h_pos : ∀ (p : ℕ), Nat.Prime p → CharP R p → P) (h_equal : Algebra ℚ R → P) (h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P)
Goal: P
-- split_by_characteristic_localRing
theorem split_by_characteristic_localRing [LocalRing R]
    (h_pos : ∀ p : ℕ, IsPrimePow p → CharP R p → P) (h_equal : Algebra ℚ R → P)
    (h_mixed : ∀ p : ℕ, Nat.Prime p → MixedCharZero R p → P) : P 
Arguments: (R : Type u_1) [CommRing R] {P : Prop} [LocalRing R] (h_pos : ∀ (p : ℕ), IsPrimePow p → CharP R p → P) (h_equal : Algebra ℚ R → P) (h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P)
Goal: P
-- Qq.QuotedDefEq.rfl
theorem QuotedDefEq.rfl {u : Level} {α : Q(Sort u)} {a : Q($α)} : @QuotedDefEq u α a a 
Arguments: {u : Lean.Level} {α : Q(Sort u)} {a : Q(«$α»)}
Goal: «$a» =Q «$a»
-- Multiset.lcm_zero
@[simp]
theorem lcm_zero : (0 : Multiset α).lcm = 1 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α]
Goal: Multiset.lcm 0 = 1
-- Multiset.lcm_cons
@[simp]
theorem lcm_cons (a : α) (s : Multiset α) : (a ::ₘ s).lcm = GCDMonoid.lcm a s.lcm 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] (a : α) (s : Multiset α)
Goal: (a ::ₘ s).lcm = lcm a s.lcm
-- Multiset.lcm_singleton
@[simp]
theorem lcm_singleton {a : α} : ({a} : Multiset α).lcm = normalize a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {a : α}
Goal: {a}.lcm = normalize a
-- Multiset.lcm_add
@[simp]
theorem lcm_add (s₁ s₂ : Multiset α) : (s₁ + s₂).lcm = GCDMonoid.lcm s₁.lcm s₂.lcm 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] (s₁ s₂ : Multiset α)
Goal: (s₁ + s₂).lcm = lcm s₁.lcm s₂.lcm
-- Multiset.lcm_dvd
theorem lcm_dvd {s : Multiset α} {a : α} : s.lcm ∣ a ↔ ∀ b ∈ s, b ∣ a 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Multiset α} {a : α}
Goal: s.lcm ∣ a ↔ ∀ b ∈ s, b ∣ a
-- Multiset.dvd_lcm
theorem dvd_lcm {s : Multiset α} {a : α} (h : a ∈ s) : a ∣ s.lcm 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s : Multiset α} {a : α} (h : a ∈ s)
Goal: a ∣ s.lcm
-- Multiset.lcm_mono
theorem lcm_mono {s₁ s₂ : Multiset α} (h : s₁ ⊆ s₂) : s₁.lcm ∣ s₂.lcm 
Arguments: {α : Type u_1} [CancelCommMonoidWithZero α] [NormalizedGCDMonoid α] {s₁ s₂ : Multiset α} (h : s₁ ⊆ s₂)
Goal: s₁.lcm ∣ s₂.lcm