ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CharP.cast_eq_zero_iff
lemma cast_eq_zero_iff (a : ℕ) : (a : R) = 0 ↔ p ∣ a 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p] (a : ℕ)
Goal: ↑a = 0 ↔ p ∣ a
-- CharP.congr
lemma congr {q : ℕ} (h : p = q) : CharP R q 
Arguments: {R : Type u_1} [AddMonoidWithOne R] (p : ℕ) [CharP R p] {q : ℕ} (h : p = q)
Goal: CharP R q
-- CharP.natCast_eq_natCast'
lemma natCast_eq_natCast' (h : a ≡ b [MOD p]) : (a : R) = b 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p] {a b : ℕ} (h : a ≡ b [MOD p])
Goal: ↑a = ↑b
-- CharP.cast_eq_zero
@[simp] lemma cast_eq_zero : (p : R) = 0 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p]
Goal: ↑p = 0
-- CharP.ofNat_eq_zero
lemma ofNat_eq_zero [p.AtLeastTwo] : no_index (OfNat.ofNat p : R) = 0 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p] [p.AtLeastTwo]
Goal: OfNat.ofNat p = 0
-- CharP.natCast_eq_natCast_mod
lemma natCast_eq_natCast_mod (a : ℕ) : (a : R) = a % p 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p] (a : ℕ)
Goal: ↑a = ↑(a % p)
-- CharP.eq
lemma eq {p q : ℕ} (_hp : CharP R p) (_hq : CharP R q) : p = q 
Arguments: (R : Type u_1) [AddMonoidWithOne R] {p q : ℕ} (_hp : CharP R p) (_hq : CharP R q)
Goal: p = q
-- CharP.natCast_eq_natCast
lemma natCast_eq_natCast : (a : R) = b ↔ a ≡ b [MOD p] 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p] {a b : ℕ} [IsRightCancelAdd R]
Goal: ↑a = ↑b ↔ a ≡ b [MOD p]
-- CharP.natCast_injOn_Iio
lemma natCast_injOn_Iio : (Set.Iio p).InjOn ((↑) : ℕ → R) 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p] [IsRightCancelAdd R]
Goal: Set.InjOn Nat.cast (Set.Iio p)
-- CharP.intCast_eq_zero_iff
lemma intCast_eq_zero_iff (a : ℤ) : (a : R) = 0 ↔ (p : ℤ) ∣ a 
Arguments: (R : Type u_1) [AddGroupWithOne R] (p : ℕ) [CharP R p] (a : ℤ)
Goal: ↑a = 0 ↔ ↑p ∣ a
-- CharP.intCast_eq_intCast
lemma intCast_eq_intCast : (a : R) = b ↔ a ≡ b [ZMOD p] 
Arguments: (R : Type u_1) [AddGroupWithOne R] (p : ℕ) [CharP R p] {a b : ℤ}
Goal: ↑a = ↑b ↔ a ≡ b [ZMOD ↑p]
-- CharP.intCast_eq_intCast_mod
lemma intCast_eq_intCast_mod : (a : R) = a % (p : ℤ) 
Arguments: (R : Type u_1) [AddGroupWithOne R] (p : ℕ) [CharP R p] {a : ℤ}
Goal: ↑a = ↑(a % ↑p)
-- CharP.charP_to_charZero
lemma charP_to_charZero [CharP R 0] : CharZero R 
Arguments: (R : Type u_1) [AddGroupWithOne R] [CharP R 0]
Goal: CharZero R
-- CharP.charP_zero_iff_charZero
lemma charP_zero_iff_charZero : CharP R 0 ↔ CharZero R 
Arguments: (R : Type u_1) [AddGroupWithOne R]
Goal: CharP R 0 ↔ CharZero R
-- CharP.exists
lemma «exists» : ∃ p, CharP R p 
Arguments: (R : Type u_1) [NonAssocSemiring R]
Goal: ∃ p, CharP R p
-- CharP.exists_unique
lemma exists_unique : ∃! p, CharP R p 
Arguments: (R : Type u_1) [NonAssocSemiring R]
Goal: ∃! p, CharP R p
-- ringChar.spec
lemma spec : ∀ x : ℕ, (x : R) = 0 ↔ ringChar R ∣ x 
Arguments: (R : Type u_1) [NonAssocSemiring R] (x : ℕ)
Goal: ↑x = 0 ↔ ringChar R ∣ x
-- ringChar.eq
lemma eq (p : ℕ) [C : CharP R p] : ringChar R = p 
Arguments: (R : Type u_1) [NonAssocSemiring R] (p : ℕ) [C : CharP R p]
Goal: ringChar R = p
-- ringChar.of_eq
lemma of_eq {p : ℕ} (h : ringChar R = p) : CharP R p 
Arguments: {R : Type u_1} [NonAssocSemiring R] {p : ℕ} (h : ringChar R = p)
Goal: CharP R p
-- ringChar.eq_iff
lemma eq_iff {p : ℕ} : ringChar R = p ↔ CharP R p 
Arguments: {R : Type u_1} [NonAssocSemiring R] {p : ℕ}
Goal: ringChar R = p ↔ CharP R p
-- ringChar.dvd
lemma dvd {x : ℕ} (hx : (x : R) = 0) : ringChar R ∣ x 
Arguments: {R : Type u_1} [NonAssocSemiring R] {x : ℕ} (hx : ↑x = 0)
Goal: ringChar R ∣ x
-- ringChar.eq_zero
@[simp]
lemma eq_zero [CharZero R] : ringChar R = 0 
Arguments: {R : Type u_1} [NonAssocSemiring R] [CharZero R]
Goal: ringChar R = 0
-- ringChar.Nat.cast_ringChar
lemma Nat.cast_ringChar : (ringChar R : R) = 0 
Arguments: {R : Type u_1} [NonAssocSemiring R]
Goal: ↑(ringChar R) = 0
-- CharP.neg_one_ne_one
lemma CharP.neg_one_ne_one [Ring R] (p : ℕ) [CharP R p] [Fact (2 < p)] : (-1 : R) ≠ (1 : R) 
Arguments: (R : Type u_1) [Ring R] (p : ℕ) [CharP R p] [Fact (2 < p)]
Goal: -1 ≠ 1
-- RingHom.charP_iff_charP
lemma RingHom.charP_iff_charP {K L : Type*} [DivisionRing K] [Semiring L] [Nontrivial L]
    (f : K →+* L) (p : ℕ) : CharP K p ↔ CharP L p 
Arguments: {K : Type u_2} {L : Type u_3} [DivisionRing K] [Semiring L] [Nontrivial L] (f : K →+* L) (p : ℕ)
Goal: CharP K p ↔ CharP L p
-- CharP.cast_eq_mod
lemma cast_eq_mod (p : ℕ) [CharP R p] (k : ℕ) : (k : R) = (k % p : ℕ) 
Arguments: (R : Type u_1) [NonAssocRing R] (p : ℕ) [CharP R p] (k : ℕ)
Goal: ↑k = ↑(k % p)
-- CharP.ringChar_zero_iff_CharZero
lemma ringChar_zero_iff_CharZero : ringChar R = 0 ↔ CharZero R 
Arguments: (R : Type u_1) [NonAssocRing R]
Goal: ringChar R = 0 ↔ CharZero R
-- CharP.char_ne_one
lemma char_ne_one [Nontrivial R] (p : ℕ) [hc : CharP R p] : p ≠ 1 
Arguments: (R : Type u_1) [NonAssocSemiring R] [Nontrivial R] (p : ℕ) [hc : CharP R p]
Goal: p ≠ 1
-- CharP.char_is_prime_of_two_le
lemma char_is_prime_of_two_le (p : ℕ) [hc : CharP R p] (hp : 2 ≤ p) : Nat.Prime p 
Arguments: (R : Type u_1) [NonAssocSemiring R] [NoZeroDivisors R] (p : ℕ) [hc : CharP R p] (hp : 2 ≤ p)
Goal: Nat.Prime p
-- CharP.char_is_prime_or_zero
lemma char_is_prime_or_zero (p : ℕ) [hc : CharP R p] : Nat.Prime p ∨ p = 0 
Arguments: (R : Type u_1) [NonAssocSemiring R] [NoZeroDivisors R] [Nontrivial R] (p : ℕ) [hc : CharP R p]
Goal: Nat.Prime p ∨ p = 0
-- CharP.exists'
lemma exists' (R : Type*) [NonAssocRing R] [NoZeroDivisors R] [Nontrivial R] :
    CharZero R ∨ ∃ p : ℕ, Fact p.Prime ∧ CharP R p 
Arguments: (R : Type u_2) [NonAssocRing R] [NoZeroDivisors R] [Nontrivial R]
Goal: CharZero R ∨ ∃ p, Fact (Nat.Prime p) ∧ CharP R p
-- CharP.char_is_prime_of_pos
lemma char_is_prime_of_pos (p : ℕ) [NeZero p] [CharP R p] : Fact p.Prime 
Arguments: (R : Type u_1) [NonAssocSemiring R] [NoZeroDivisors R] [Nontrivial R] (p : ℕ) [NeZero p] [CharP R p]
Goal: Fact (Nat.Prime p)
-- CharP.CharOne.subsingleton
lemma CharOne.subsingleton [CharP R 1] : Subsingleton R 
Arguments: {R : Type u_1} [NonAssocSemiring R] [CharP R 1]
Goal: Subsingleton R
-- CharP.false_of_nontrivial_of_char_one
lemma false_of_nontrivial_of_char_one [Nontrivial R] [CharP R 1] : False 
Arguments: {R : Type u_1} [NonAssocSemiring R] [Nontrivial R] [CharP R 1]
Goal: False
-- CharP.ringChar_ne_one
lemma ringChar_ne_one [Nontrivial R] : ringChar R ≠ 1 
Arguments: {R : Type u_1} [NonAssocSemiring R] [Nontrivial R]
Goal: ringChar R ≠ 1
-- CharP.nontrivial_of_char_ne_one
lemma nontrivial_of_char_ne_one {v : ℕ} (hv : v ≠ 1) [hr : CharP R v] : Nontrivial R 
Arguments: {R : Type u_1} [NonAssocSemiring R] {v : ℕ} (hv : v ≠ 1) [hr : CharP R v]
Goal: Nontrivial R
-- CharP.ringChar_of_prime_eq_zero
lemma ringChar_of_prime_eq_zero [Nontrivial R] {p : ℕ} (hprime : Nat.Prime p)
    (hp0 : (p : R) = 0) : ringChar R = p 
Arguments: {R : Type u_1} [NonAssocSemiring R] [Nontrivial R] {p : ℕ} (hprime : Nat.Prime p) (hp0 : ↑p = 0)
Goal: ringChar R = p
-- CharP.charP_iff_prime_eq_zero
lemma charP_iff_prime_eq_zero [Nontrivial R] {p : ℕ} (hp : p.Prime) :
    CharP R p ↔ (p : R) = 0 
Arguments: {R : Type u_1} [NonAssocSemiring R] [Nontrivial R] {p : ℕ} (hp : Nat.Prime p)
Goal: CharP R p ↔ ↑p = 0
-- Ring.two_ne_zero
protected lemma Ring.two_ne_zero {R : Type*} [NonAssocSemiring R] [Nontrivial R]
    (hR : ringChar R ≠ 2) : (2 : R) ≠ 0 
Arguments: {R : Type u_2} [NonAssocSemiring R] [Nontrivial R] (hR : ringChar R ≠ 2)
Goal: 2 ≠ 0
-- Ring.neg_one_ne_one_of_char_ne_two
lemma Ring.neg_one_ne_one_of_char_ne_two {R : Type*} [NonAssocRing R] [Nontrivial R]
    (hR : ringChar R ≠ 2) : (-1 : R) ≠ 1 
Arguments: {R : Type u_2} [NonAssocRing R] [Nontrivial R] (hR : ringChar R ≠ 2)
Goal: -1 ≠ 1
-- Ring.eq_self_iff_eq_zero_of_char_ne_two
lemma Ring.eq_self_iff_eq_zero_of_char_ne_two {R : Type*} [NonAssocRing R] [Nontrivial R]
    [NoZeroDivisors R] (hR : ringChar R ≠ 2) {a : R} : -a = a ↔ a = 0 
Arguments: {R : Type u_2} [NonAssocRing R] [Nontrivial R] [NoZeroDivisors R] (hR : ringChar R ≠ 2) {a : R}
Goal: -a = a ↔ a = 0
-- Int.cast_injOn_of_ringChar_ne_two
lemma Int.cast_injOn_of_ringChar_ne_two {R : Type*} [NonAssocRing R] [Nontrivial R]
    (hR : ringChar R ≠ 2) : ({0, 1, -1} : Set ℤ).InjOn ((↑) : ℤ → R) 
Arguments: {R : Type u_2} [NonAssocRing R] [Nontrivial R] (hR : ringChar R ≠ 2)
Goal: Set.InjOn Int.cast {0, 1, -1}
-- NeZero.of_not_dvd
lemma of_not_dvd [CharP R p] (h : ¬p ∣ n) : NeZero (n : R) 
Arguments: (R : Type u_1) [AddMonoidWithOne R] {n p : ℕ} [CharP R p] (h : ¬p ∣ n)
Goal: NeZero ↑n
-- NeZero.not_char_dvd
lemma not_char_dvd (p : ℕ) [CharP R p] (k : ℕ) [h : NeZero (k : R)] : ¬p ∣ k 
Arguments: (R : Type u_1) [AddMonoidWithOne R] (p : ℕ) [CharP R p] (k : ℕ) [h : NeZero ↑k]
Goal: ¬p ∣ k
-- CharZero.charZero_iff_forall_prime_ne_zero
lemma charZero_iff_forall_prime_ne_zero [NonAssocRing R] [NoZeroDivisors R] [Nontrivial R] :
    CharZero R ↔ ∀ p : ℕ, p.Prime → (p : R) ≠ 0 
Arguments: (R : Type u_1) [NonAssocRing R] [NoZeroDivisors R] [Nontrivial R]
Goal: CharZero R ↔ ∀ (p : ℕ), Nat.Prime p → ↑p ≠ 0
-- isUnit_iff_not_dvd_char_of_ringChar_ne_zero
theorem isUnit_iff_not_dvd_char_of_ringChar_ne_zero (R : Type*) [CommRing R] (p : ℕ) [Fact p.Prime]
    (hR : ringChar R ≠ 0) : IsUnit (p : R) ↔ ¬p ∣ ringChar R 
Arguments: (R : Type u_1) [CommRing R] (p : ℕ) [Fact (Nat.Prime p)] (hR : ringChar R ≠ 0)
Goal: IsUnit ↑p ↔ ¬p ∣ ringChar R
-- isUnit_iff_not_dvd_char
theorem isUnit_iff_not_dvd_char (R : Type*) [CommRing R] (p : ℕ) [Fact p.Prime] [Finite R] :
    IsUnit (p : R) ↔ ¬p ∣ ringChar R 
Arguments: (R : Type u_1) [CommRing R] (p : ℕ) [Fact (Nat.Prime p)] [Finite R]
Goal: IsUnit ↑p ↔ ¬p ∣ ringChar R
-- prime_dvd_char_iff_dvd_card
theorem prime_dvd_char_iff_dvd_card {R : Type*} [CommRing R] [Fintype R] (p : ℕ) [Fact p.Prime] :
    p ∣ ringChar R ↔ p ∣ Fintype.card R 
Arguments: {R : Type u_1} [CommRing R] [Fintype R] (p : ℕ) [Fact (Nat.Prime p)]
Goal: p ∣ ringChar R ↔ p ∣ Fintype.card R
-- not_isUnit_prime_of_dvd_card
theorem not_isUnit_prime_of_dvd_card {R : Type*} [CommRing R] [Fintype R] (p : ℕ) [Fact p.Prime]
    (hp : p ∣ Fintype.card R) : ¬IsUnit (p : R) 
Arguments: {R : Type u_1} [CommRing R] [Fintype R] (p : ℕ) [Fact (Nat.Prime p)] (hp : p ∣ Fintype.card R)
Goal: ¬IsUnit ↑p
-- charP_of_card_eq_prime
lemma charP_of_card_eq_prime {R : Type*} [NonAssocRing R] [Fintype R] (p : ℕ) [hp : Fact p.Prime]
    (hR : Fintype.card R = p) : CharP R p 
Arguments: {R : Type u_1} [NonAssocRing R] [Fintype R] (p : ℕ) [hp : Fact (Nat.Prime p)] (hR : Fintype.card R = p)
Goal: CharP R p
-- gcd_eq_nat_gcd
theorem gcd_eq_nat_gcd (m n : ℕ) : gcd m n = Nat.gcd m n 
Arguments: (m n : ℕ)
Goal: gcd m n = m.gcd n
-- lcm_eq_nat_lcm
theorem lcm_eq_nat_lcm (m n : ℕ) : lcm m n = Nat.lcm m n 
Arguments: (m n : ℕ)
Goal: lcm m n = m.lcm n
-- Int.normUnit_eq
theorem normUnit_eq (z : ℤ) : normUnit z = if 0 ≤ z then 1 else -1 
Arguments: (z : ℤ)
Goal: normUnit z = if 0 ≤ z then 1 else -1
-- Int.normalize_of_nonneg
theorem normalize_of_nonneg {z : ℤ} (h : 0 ≤ z) : normalize z = z 
Arguments: {z : ℤ} (h : 0 ≤ z)
Goal: normalize z = z
-- Int.normalize_of_nonpos
theorem normalize_of_nonpos {z : ℤ} (h : z ≤ 0) : normalize z = -z 
Arguments: {z : ℤ} (h : z ≤ 0)
Goal: normalize z = -z
-- Int.normalize_coe_nat
theorem normalize_coe_nat (n : ℕ) : normalize (n : ℤ) = n 
Arguments: (n : ℕ)
Goal: normalize ↑n = ↑n
-- Int.abs_eq_normalize
theorem abs_eq_normalize (z : ℤ) : |z| = normalize z 
Arguments: (z : ℤ)
Goal: |z| = normalize z
-- Int.nonneg_of_normalize_eq_self
theorem nonneg_of_normalize_eq_self {z : ℤ} (hz : normalize z = z) : 0 ≤ z 
Arguments: {z : ℤ} (hz : normalize z = z)
Goal: 0 ≤ z
-- Int.nonneg_iff_normalize_eq_self
theorem nonneg_iff_normalize_eq_self (z : ℤ) : normalize z = z ↔ 0 ≤ z 
Arguments: (z : ℤ)
Goal: normalize z = z ↔ 0 ≤ z
-- Int.eq_of_associated_of_nonneg
theorem eq_of_associated_of_nonneg {a b : ℤ} (h : Associated a b) (ha : 0 ≤ a) (hb : 0 ≤ b) :
    a = b 
Arguments: {a b : ℤ} (h : Associated a b) (ha : 0 ≤ a) (hb : 0 ≤ b)
Goal: a = b
-- Int.coe_gcd
theorem coe_gcd (i j : ℤ) : ↑(Int.gcd i j) = GCDMonoid.gcd i j 
Arguments: (i j : ℤ)
Goal: ↑(i.gcd j) = gcd i j
-- Int.coe_lcm
theorem coe_lcm (i j : ℤ) : ↑(Int.lcm i j) = GCDMonoid.lcm i j 
Arguments: (i j : ℤ)
Goal: ↑(i.lcm j) = lcm i j
-- Int.natAbs_gcd
theorem natAbs_gcd (i j : ℤ) : natAbs (GCDMonoid.gcd i j) = Int.gcd i j 
Arguments: (i j : ℤ)
Goal: (gcd i j).natAbs = i.gcd j
-- Int.natAbs_lcm
theorem natAbs_lcm (i j : ℤ) : natAbs (GCDMonoid.lcm i j) = Int.lcm i j 
Arguments: (i j : ℤ)
Goal: (lcm i j).natAbs = i.lcm j
-- Int.exists_unit_of_abs
theorem exists_unit_of_abs (a : ℤ) : ∃ (u : ℤ) (_ : IsUnit u), (Int.natAbs a : ℤ) = u * a 
Arguments: (a : ℤ)
Goal: ∃ u, ∃ (_ : IsUnit u), ↑a.natAbs = u * a
-- Int.gcd_eq_natAbs
theorem gcd_eq_natAbs {a b : ℤ} : Int.gcd a b = Nat.gcd a.natAbs b.natAbs 
Arguments: {a b : ℤ}
Goal: a.gcd b = a.natAbs.gcd b.natAbs
-- Int.associated_natAbs
theorem Int.associated_natAbs (k : ℤ) : Associated k k.natAbs 
Arguments: (k : ℤ)
Goal: Associated k ↑k.natAbs
-- Int.associated_iff_natAbs
theorem Int.associated_iff_natAbs {a b : ℤ} : Associated a b ↔ a.natAbs = b.natAbs 
Arguments: {a b : ℤ}
Goal: Associated a b ↔ a.natAbs = b.natAbs
-- Int.associated_iff
theorem Int.associated_iff {a b : ℤ} : Associated a b ↔ a = b ∨ a = -b 
Arguments: {a b : ℤ}
Goal: Associated a b ↔ a = b ∨ a = -b
-- Finset.mul_prod_Ico_eq_prod_Icc
@[to_additive]
lemma mul_prod_Ico_eq_prod_Icc (h : a ≤ b) : f b * ∏ x ∈ Ico a b, f x = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: f b * ∏ x ∈ Finset.Ico a b, f x = ∏ x ∈ Finset.Icc a b, f x
-- Finset.add_sum_Ico_eq_sum_Icc
@[to_additive]
lemma mul_prod_Ico_eq_prod_Icc (h : a ≤ b) : f b * ∏ x ∈ Ico a b, f x = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: f b + ∑ x ∈ Finset.Ico a b, f x = ∑ x ∈ Finset.Icc a b, f x
-- Finset.prod_Ico_mul_eq_prod_Icc
@[to_additive]
lemma prod_Ico_mul_eq_prod_Icc (h : a ≤ b) : (∏ x ∈ Ico a b, f x) * f b = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: (∏ x ∈ Finset.Ico a b, f x) * f b = ∏ x ∈ Finset.Icc a b, f x
-- Finset.sum_Ico_add_eq_sum_Icc
@[to_additive]
lemma prod_Ico_mul_eq_prod_Icc (h : a ≤ b) : (∏ x ∈ Ico a b, f x) * f b = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: ∑ x ∈ Finset.Ico a b, f x + f b = ∑ x ∈ Finset.Icc a b, f x
-- Finset.mul_prod_Ioc_eq_prod_Icc
@[to_additive]
lemma mul_prod_Ioc_eq_prod_Icc (h : a ≤ b) : f a * ∏ x ∈ Ioc a b, f x = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: f a * ∏ x ∈ Finset.Ioc a b, f x = ∏ x ∈ Finset.Icc a b, f x
-- Finset.add_sum_Ioc_eq_sum_Icc
@[to_additive]
lemma mul_prod_Ioc_eq_prod_Icc (h : a ≤ b) : f a * ∏ x ∈ Ioc a b, f x = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: f a + ∑ x ∈ Finset.Ioc a b, f x = ∑ x ∈ Finset.Icc a b, f x
-- Finset.prod_Ioc_mul_eq_prod_Icc
@[to_additive]
lemma prod_Ioc_mul_eq_prod_Icc (h : a ≤ b) : (∏ x ∈ Ioc a b, f x) * f a = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: (∏ x ∈ Finset.Ioc a b, f x) * f a = ∏ x ∈ Finset.Icc a b, f x
-- Finset.sum_Ioc_add_eq_sum_Icc
@[to_additive]
lemma prod_Ioc_mul_eq_prod_Icc (h : a ≤ b) : (∏ x ∈ Ioc a b, f x) * f a = ∏ x ∈ Icc a b, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} {a b : α} [LocallyFiniteOrder α] (h : a ≤ b)
Goal: ∑ x ∈ Finset.Ioc a b, f x + f a = ∑ x ∈ Finset.Icc a b, f x
-- Finset.mul_prod_Ioi_eq_prod_Ici
@[to_additive]
lemma mul_prod_Ioi_eq_prod_Ici (a : α) : f a * ∏ x ∈ Ioi a, f x = ∏ x ∈ Ici a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} [LocallyFiniteOrderTop α] (a : α)
Goal: f a * ∏ x ∈ Finset.Ioi a, f x = ∏ x ∈ Finset.Ici a, f x
-- Finset.add_sum_Ioi_eq_sum_Ici
@[to_additive]
lemma mul_prod_Ioi_eq_prod_Ici (a : α) : f a * ∏ x ∈ Ioi a, f x = ∏ x ∈ Ici a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} [LocallyFiniteOrderTop α] (a : α)
Goal: f a + ∑ x ∈ Finset.Ioi a, f x = ∑ x ∈ Finset.Ici a, f x
-- Finset.sum_Ioi_add_eq_sum_Ici
@[to_additive]
lemma prod_Ioi_mul_eq_prod_Ici (a : α) : (∏ x ∈ Ioi a, f x) * f a = ∏ x ∈ Ici a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} [LocallyFiniteOrderTop α] (a : α)
Goal: ∑ x ∈ Finset.Ioi a, f x + f a = ∑ x ∈ Finset.Ici a, f x
-- Finset.prod_Ioi_mul_eq_prod_Ici
@[to_additive]
lemma prod_Ioi_mul_eq_prod_Ici (a : α) : (∏ x ∈ Ioi a, f x) * f a = ∏ x ∈ Ici a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} [LocallyFiniteOrderTop α] (a : α)
Goal: (∏ x ∈ Finset.Ioi a, f x) * f a = ∏ x ∈ Finset.Ici a, f x
-- Finset.mul_prod_Iio_eq_prod_Iic
@[to_additive]
lemma mul_prod_Iio_eq_prod_Iic (a : α) : f a * ∏ x ∈ Iio a, f x = ∏ x ∈ Iic a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} [LocallyFiniteOrderBot α] (a : α)
Goal: f a * ∏ x ∈ Finset.Iio a, f x = ∏ x ∈ Finset.Iic a, f x
-- Finset.add_sum_Iio_eq_sum_Iic
@[to_additive]
lemma mul_prod_Iio_eq_prod_Iic (a : α) : f a * ∏ x ∈ Iio a, f x = ∏ x ∈ Iic a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} [LocallyFiniteOrderBot α] (a : α)
Goal: f a + ∑ x ∈ Finset.Iio a, f x = ∑ x ∈ Finset.Iic a, f x
-- Finset.sum_Iio_add_eq_sum_Iic
@[to_additive]
lemma prod_Iio_mul_eq_prod_Iic (a : α) : (∏ x ∈ Iio a, f x) * f a = ∏ x ∈ Iic a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [AddCommMonoid M] {f : α → M} [LocallyFiniteOrderBot α] (a : α)
Goal: ∑ x ∈ Finset.Iio a, f x + f a = ∑ x ∈ Finset.Iic a, f x
-- Finset.prod_Iio_mul_eq_prod_Iic
@[to_additive]
lemma prod_Iio_mul_eq_prod_Iic (a : α) : (∏ x ∈ Iio a, f x) * f a = ∏ x ∈ Iic a, f x 
Arguments: {α : Type u_1} {M : Type u_2} [PartialOrder α] [CommMonoid M] {f : α → M} [LocallyFiniteOrderBot α] (a : α)
Goal: (∏ x ∈ Finset.Iio a, f x) * f a = ∏ x ∈ Finset.Iic a, f x
-- Finset.prod_prod_Ioi_mul_eq_prod_prod_off_diag
@[to_additive]
lemma prod_prod_Ioi_mul_eq_prod_prod_off_diag (f : α → α → M) :
    ∏ i, ∏ j ∈ Ioi i, f j i * f i j = ∏ i, ∏ j ∈ {i}ᶜ, f j i 
Arguments: {α : Type u_1} {M : Type u_2} [Fintype α] [LinearOrder α] [LocallyFiniteOrderTop α] [LocallyFiniteOrderBot α] [CommMonoid M] (f : α → α → M)
Goal: ∏ i : α, ∏ j ∈ Finset.Ioi i, f j i * f i j = ∏ i : α, ∏ j ∈ {i}ᶜ, f j i
-- Finset.sum_sum_Ioi_add_eq_sum_sum_off_diag
@[to_additive]
lemma prod_prod_Ioi_mul_eq_prod_prod_off_diag (f : α → α → M) :
    ∏ i, ∏ j ∈ Ioi i, f j i * f i j = ∏ i, ∏ j ∈ {i}ᶜ, f j i 
Arguments: {α : Type u_1} {M : Type u_2} [Fintype α] [LinearOrder α] [LocallyFiniteOrderTop α] [LocallyFiniteOrderBot α] [AddCommMonoid M] (f : α → α → M)
Goal: ∑ i : α, ∑ j ∈ Finset.Ioi i, (f j i + f i j) = ∑ i : α, ∑ j ∈ {i}ᶜ, f j i
-- Finset.prod_Ico_add'
@[to_additive]
theorem prod_Ico_add' [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α]
    (f : α → M) (a b c : α) : (∏ x ∈ Ico a b, f (x + c)) = ∏ x ∈ Ico (a + c) (b + c), f x 
Arguments: {α : Type u_1} {M : Type u_2} [CommMonoid M] [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α] (f : α → M) (a b c : α)
Goal: ∏ x ∈ Finset.Ico a b, f (x + c) = ∏ x ∈ Finset.Ico (a + c) (b + c), f x
-- Finset.sum_Ico_add'
@[to_additive]
theorem prod_Ico_add' [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α]
    (f : α → M) (a b c : α) : (∏ x ∈ Ico a b, f (x + c)) = ∏ x ∈ Ico (a + c) (b + c), f x 
Arguments: {α : Type u_1} {M : Type u_2} [AddCommMonoid M] [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α] (f : α → M) (a b c : α)
Goal: ∑ x ∈ Finset.Ico a b, f (x + c) = ∑ x ∈ Finset.Ico (a + c) (b + c), f x
-- Finset.prod_Ico_add
@[to_additive]
theorem prod_Ico_add [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α]
    (f : α → M) (a b c : α) : (∏ x ∈ Ico a b, f (c + x)) = ∏ x ∈ Ico (a + c) (b + c), f x 
Arguments: {α : Type u_1} {M : Type u_2} [CommMonoid M] [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α] (f : α → M) (a b c : α)
Goal: ∏ x ∈ Finset.Ico a b, f (c + x) = ∏ x ∈ Finset.Ico (a + c) (b + c), f x
-- Finset.sum_Ico_add
@[to_additive]
theorem prod_Ico_add [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α]
    (f : α → M) (a b c : α) : (∏ x ∈ Ico a b, f (c + x)) = ∏ x ∈ Ico (a + c) (b + c), f x 
Arguments: {α : Type u_1} {M : Type u_2} [AddCommMonoid M] [OrderedCancelAddCommMonoid α] [ExistsAddOfLE α] [LocallyFiniteOrder α] (f : α → M) (a b c : α)
Goal: ∑ x ∈ Finset.Ico a b, f (c + x) = ∑ x ∈ Finset.Ico (a + c) (b + c), f x
-- Finset.prod_Ico_succ_top
@[to_additive]
theorem prod_Ico_succ_top {a b : ℕ} (hab : a ≤ b) (f : ℕ → M) :
    (∏ k ∈ Ico a (b + 1), f k) = (∏ k ∈ Ico a b, f k) * f b 
Arguments: {M : Type u_2} [CommMonoid M] {a b : ℕ} (hab : a ≤ b) (f : ℕ → M)
Goal: ∏ k ∈ Finset.Ico a (b + 1), f k = (∏ k ∈ Finset.Ico a b, f k) * f b
-- Finset.sum_Ico_succ_top
@[to_additive]
theorem prod_Ico_succ_top {a b : ℕ} (hab : a ≤ b) (f : ℕ → M) :
    (∏ k ∈ Ico a (b + 1), f k) = (∏ k ∈ Ico a b, f k) * f b 
Arguments: {M : Type u_2} [AddCommMonoid M] {a b : ℕ} (hab : a ≤ b) (f : ℕ → M)
Goal: ∑ k ∈ Finset.Ico a (b + 1), f k = ∑ k ∈ Finset.Ico a b, f k + f b
-- Finset.prod_eq_prod_Ico_succ_bot
@[to_additive]
theorem prod_eq_prod_Ico_succ_bot {a b : ℕ} (hab : a < b) (f : ℕ → M) :
    ∏ k ∈ Ico a b, f k = f a * ∏ k ∈ Ico (a + 1) b, f k 
Arguments: {M : Type u_2} [CommMonoid M] {a b : ℕ} (hab : a < b) (f : ℕ → M)
Goal: ∏ k ∈ Finset.Ico a b, f k = f a * ∏ k ∈ Finset.Ico (a + 1) b, f k
-- Finset.sum_eq_sum_Ico_succ_bot
@[to_additive]
theorem prod_eq_prod_Ico_succ_bot {a b : ℕ} (hab : a < b) (f : ℕ → M) :
    ∏ k ∈ Ico a b, f k = f a * ∏ k ∈ Ico (a + 1) b, f k 
Arguments: {M : Type u_2} [AddCommMonoid M] {a b : ℕ} (hab : a < b) (f : ℕ → M)
Goal: ∑ k ∈ Finset.Ico a b, f k = f a + ∑ k ∈ Finset.Ico (a + 1) b, f k
-- Finset.prod_Ico_consecutive
@[to_additive]
theorem prod_Ico_consecutive (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k) :
    ((∏ i ∈ Ico m n, f i) * ∏ i ∈ Ico n k, f i) = ∏ i ∈ Ico m k, f i 
Arguments: {M : Type u_2} [CommMonoid M] (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k)
Goal: (∏ i ∈ Finset.Ico m n, f i) * ∏ i ∈ Finset.Ico n k, f i = ∏ i ∈ Finset.Ico m k, f i
-- Finset.sum_Ico_consecutive
@[to_additive]
theorem prod_Ico_consecutive (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k) :
    ((∏ i ∈ Ico m n, f i) * ∏ i ∈ Ico n k, f i) = ∏ i ∈ Ico m k, f i 
Arguments: {M : Type u_2} [AddCommMonoid M] (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k)
Goal: ∑ i ∈ Finset.Ico m n, f i + ∑ i ∈ Finset.Ico n k, f i = ∑ i ∈ Finset.Ico m k, f i
-- Finset.prod_Ioc_consecutive
@[to_additive]
theorem prod_Ioc_consecutive (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k) :
    ((∏ i ∈ Ioc m n, f i) * ∏ i ∈ Ioc n k, f i) = ∏ i ∈ Ioc m k, f i 
Arguments: {M : Type u_2} [CommMonoid M] (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k)
Goal: (∏ i ∈ Finset.Ioc m n, f i) * ∏ i ∈ Finset.Ioc n k, f i = ∏ i ∈ Finset.Ioc m k, f i
-- Finset.sum_Ioc_consecutive
@[to_additive]
theorem prod_Ioc_consecutive (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k) :
    ((∏ i ∈ Ioc m n, f i) * ∏ i ∈ Ioc n k, f i) = ∏ i ∈ Ioc m k, f i 
Arguments: {M : Type u_2} [AddCommMonoid M] (f : ℕ → M) {m n k : ℕ} (hmn : m ≤ n) (hnk : n ≤ k)
Goal: ∑ i ∈ Finset.Ioc m n, f i + ∑ i ∈ Finset.Ioc n k, f i = ∑ i ∈ Finset.Ioc m k, f i
-- Finset.sum_Ioc_succ_top
@[to_additive]
theorem prod_Ioc_succ_top {a b : ℕ} (hab : a ≤ b) (f : ℕ → M) :
    (∏ k ∈ Ioc a (b + 1), f k) = (∏ k ∈ Ioc a b, f k) * f (b + 1) 
Arguments: {M : Type u_2} [AddCommMonoid M] {a b : ℕ} (hab : a ≤ b) (f : ℕ → M)
Goal: ∑ k ∈ Finset.Ioc a (b + 1), f k = ∑ k ∈ Finset.Ioc a b, f k + f (b + 1)