ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- neg_one_pow_mul_eq_zero_iff
@[simp] lemma neg_one_pow_mul_eq_zero_iff : (-1) ^ n * a = 0 ↔ a = 0 
Arguments: {R : Type x} [Ring R] {a : R} {n : ℕ}
Goal: (-1) ^ n * a = 0 ↔ a = 0
-- mul_neg_one_pow_eq_zero_iff
@[simp] lemma mul_neg_one_pow_eq_zero_iff : a * (-1) ^ n = 0 ↔ a = 0 
Arguments: {R : Type x} [Ring R] {a : R} {n : ℕ}
Goal: a * (-1) ^ n = 0 ↔ a = 0
-- neg_one_pow_eq_pow_mod_two
lemma neg_one_pow_eq_pow_mod_two (n : ℕ) : (-1 : R) ^ n = (-1) ^ (n % 2) 
Arguments: {R : Type x} [Ring R] (n : ℕ)
Goal: (-1) ^ n = (-1) ^ (n % 2)
-- sq_eq_one_iff
@[simp] lemma sq_eq_one_iff : a ^ 2 = 1 ↔ a = 1 ∨ a = -1 
Arguments: {R : Type x} [Ring R] {a : R} [NoZeroDivisors R]
Goal: a ^ 2 = 1 ↔ a = 1 ∨ a = -1
-- sq_ne_one_iff
lemma sq_ne_one_iff : a ^ 2 ≠ 1 ↔ a ≠ 1 ∧ a ≠ -1 
Arguments: {R : Type x} [Ring R] {a : R} [NoZeroDivisors R]
Goal: a ^ 2 ≠ 1 ↔ a ≠ 1 ∧ a ≠ -1
-- mul_self_sub_mul_self
theorem mul_self_sub_mul_self [CommRing R] (a b : R) : a * a - b * b = (a + b) * (a - b) 
Arguments: {R : Type x} [CommRing R] (a b : R)
Goal: a * a - b * b = (a + b) * (a - b)
-- mul_self_sub_one
theorem mul_self_sub_one [NonAssocRing R] (a : R) : a * a - 1 = (a + 1) * (a - 1) 
Arguments: {R : Type x} [NonAssocRing R] (a : R)
Goal: a * a - 1 = (a + 1) * (a - 1)
-- mul_self_eq_mul_self_iff
theorem mul_self_eq_mul_self_iff [CommRing R] [NoZeroDivisors R] {a b : R} :
    a * a = b * b ↔ a = b ∨ a = -b 
Arguments: {R : Type x} [CommRing R] [NoZeroDivisors R] {a b : R}
Goal: a * a = b * b ↔ a = b ∨ a = -b
-- mul_self_eq_one_iff
theorem mul_self_eq_one_iff [NonAssocRing R] [NoZeroDivisors R] {a : R} :
    a * a = 1 ↔ a = 1 ∨ a = -1 
Arguments: {R : Type x} [NonAssocRing R] [NoZeroDivisors R] {a : R}
Goal: a * a = 1 ↔ a = 1 ∨ a = -1
-- sq_sub_sq
lemma sq_sub_sq (a b : R) : a ^ 2 - b ^ 2 = (a + b) * (a - b) 
Arguments: {R : Type x} [CommRing R] (a b : R)
Goal: a ^ 2 - b ^ 2 = (a + b) * (a - b)
-- sub_sq
lemma sub_sq (a b : R) : (a - b) ^ 2 = a ^ 2 - 2 * a * b + b ^ 2 
Arguments: {R : Type x} [CommRing R] (a b : R)
Goal: (a - b) ^ 2 = a ^ 2 - 2 * a * b + b ^ 2
-- sub_sq'
lemma sub_sq' (a b : R) : (a - b) ^ 2 = a ^ 2 + b ^ 2 - 2 * a * b 
Arguments: {R : Type x} [CommRing R] (a b : R)
Goal: (a - b) ^ 2 = a ^ 2 + b ^ 2 - 2 * a * b
-- sq_eq_sq_iff_eq_or_eq_neg
lemma sq_eq_sq_iff_eq_or_eq_neg : a ^ 2 = b ^ 2 ↔ a = b ∨ a = -b 
Arguments: {R : Type x} [CommRing R] [NoZeroDivisors R] {a b : R}
Goal: a ^ 2 = b ^ 2 ↔ a = b ∨ a = -b
-- eq_or_eq_neg_of_sq_eq_sq
lemma eq_or_eq_neg_of_sq_eq_sq (a b : R) : a ^ 2 = b ^ 2 → a = b ∨ a = -b 
Arguments: {R : Type x} [CommRing R] [NoZeroDivisors R] (a b : R)
Goal: a ^ 2 = b ^ 2 → a = b ∨ a = -b
-- Units.sq_eq_sq_iff_eq_or_eq_neg
protected lemma sq_eq_sq_iff_eq_or_eq_neg {a b : Rˣ} : a ^ 2 = b ^ 2 ↔ a = b ∨ a = -b 
Arguments: {R : Type x} [CommRing R] [NoZeroDivisors R] {a b : Rˣ}
Goal: a ^ 2 = b ^ 2 ↔ a = b ∨ a = -b
-- Units.eq_or_eq_neg_of_sq_eq_sq
protected lemma eq_or_eq_neg_of_sq_eq_sq (a b : Rˣ) (h : a ^ 2 = b ^ 2) : a = b ∨ a = -b 
Arguments: {R : Type x} [CommRing R] [NoZeroDivisors R] (a b : Rˣ) (h : a ^ 2 = b ^ 2)
Goal: a = b ∨ a = -b
-- Units.inv_eq_self_iff
theorem inv_eq_self_iff [Ring R] [NoZeroDivisors R] (u : Rˣ) : u⁻¹ = u ↔ u = 1 ∨ u = -1 
Arguments: {R : Type x} [Ring R] [NoZeroDivisors R] (u : Rˣ)
Goal: u⁻¹ = u ↔ u = 1 ∨ u = -1
-- Ring.lie_def
theorem lie_def (x y : R) : ⁅x, y⁆ = x * y - y * x 
Arguments: {R : Type x} [NonUnitalNonAssocRing R] (x y : R)
Goal: ⁅x, y⁆ = x * y - y * x
-- commute_iff_lie_eq
theorem commute_iff_lie_eq {x y : R} : Commute x y ↔ ⁅x, y⁆ = 0 
Arguments: {R : Type x} [NonUnitalNonAssocRing R] {x y : R}
Goal: Commute x y ↔ ⁅x, y⁆ = 0
-- Commute.lie_eq
theorem Commute.lie_eq {x y : R} (h : Commute x y) : ⁅x, y⁆ = 0 
Arguments: {R : Type x} [NonUnitalNonAssocRing R] {x y : R} (h : Commute x y)
Goal: ⁅x, y⁆ = 0
-- dvd_smul_of_dvd
lemma dvd_smul_of_dvd {M : Type*} [SMul M R] [Semigroup R] [SMulCommClass M R R] {x y : R}
    (m : M) (h : x ∣ y) : x ∣ m • y 
Arguments: {R : Type u_1} {M : Type u_2} [SMul M R] [Semigroup R] [SMulCommClass M R R] {x y : R} (m : M) (h : x ∣ y)
Goal: x ∣ m • y
-- dvd_nsmul_of_dvd
lemma dvd_nsmul_of_dvd [NonUnitalSemiring R] {x y : R} (n : ℕ) (h : x ∣ y) : x ∣ n • y 
Arguments: {R : Type u_1} [NonUnitalSemiring R] {x y : R} (n : ℕ) (h : x ∣ y)
Goal: x ∣ n • y
-- dvd_zsmul_of_dvd
lemma dvd_zsmul_of_dvd [NonUnitalRing R] {x y : R} (z : ℤ) (h : x ∣ y) : x ∣ z • y 
Arguments: {R : Type u_1} [NonUnitalRing R] {x y : R} (z : ℤ) (h : x ∣ y)
Goal: x ∣ z • y
-- Commute.pow_dvd_add_pow_of_pow_eq_zero_right
lemma pow_dvd_add_pow_of_pow_eq_zero_right (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (hy : y ^ n = 0) : x ^ m ∣ (x + y) ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Semiring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (hy : y ^ n = 0)
Goal: x ^ m ∣ (x + y) ^ p
-- Commute.pow_dvd_add_pow_of_pow_eq_zero_left
lemma pow_dvd_add_pow_of_pow_eq_zero_left (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (hx : x ^ n = 0) : y ^ m ∣ (x + y) ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Semiring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (hx : x ^ n = 0)
Goal: y ^ m ∣ (x + y) ^ p
-- Commute.pow_dvd_pow_of_sub_pow_eq_zero
lemma pow_dvd_pow_of_sub_pow_eq_zero (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (h : (x - y) ^ n = 0) : x ^ m ∣ y ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Ring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (h : (x - y) ^ n = 0)
Goal: x ^ m ∣ y ^ p
-- Commute.pow_dvd_pow_of_add_pow_eq_zero
lemma pow_dvd_pow_of_add_pow_eq_zero (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (h : (x + y) ^ n = 0) : x ^ m ∣ y ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Ring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (h : (x + y) ^ n = 0)
Goal: x ^ m ∣ y ^ p
-- Commute.pow_dvd_sub_pow_of_pow_eq_zero_right
lemma pow_dvd_sub_pow_of_pow_eq_zero_right (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (hy : y ^ n = 0) : x ^ m ∣ (x - y) ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Ring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (hy : y ^ n = 0)
Goal: x ^ m ∣ (x - y) ^ p
-- Commute.pow_dvd_sub_pow_of_pow_eq_zero_left
lemma pow_dvd_sub_pow_of_pow_eq_zero_left (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (hx : x ^ n = 0) : y ^ m ∣ (x - y) ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Ring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (hx : x ^ n = 0)
Goal: y ^ m ∣ (x - y) ^ p
-- Commute.add_pow_dvd_pow_of_pow_eq_zero_right
lemma add_pow_dvd_pow_of_pow_eq_zero_right (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (hx : x ^ n = 0) : (x + y) ^ m ∣ y ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Ring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (hx : x ^ n = 0)
Goal: (x + y) ^ m ∣ y ^ p
-- Commute.add_pow_dvd_pow_of_pow_eq_zero_left
lemma add_pow_dvd_pow_of_pow_eq_zero_left (hp : n + m ≤ p + 1) (h_comm : Commute x y)
    (hy : y ^ n = 0) : (x + y) ^ m ∣ x ^ p 
Arguments: {R : Type u_1} {x y : R} {n m p : ℕ} [Ring R] (hp : n + m ≤ p + 1) (h_comm : Commute x y) (hy : y ^ n = 0)
Goal: (x + y) ^ m ∣ x ^ p
-- dvd_mul_sub_mul_mul_left_of_dvd
lemma dvd_mul_sub_mul_mul_left_of_dvd {p a b c d x y : R}
    (h1 : p ∣ a * x + b * y) (h2 : p ∣ c * x + d * y) : p ∣ (a * d - b * c) * x 
Arguments: {R : Type u_1} [CommRing R] {p a b c d x y : R} (h1 : p ∣ a * x + b * y) (h2 : p ∣ c * x + d * y)
Goal: p ∣ (a * d - b * c) * x
-- dvd_mul_sub_mul_mul_right_of_dvd
lemma dvd_mul_sub_mul_mul_right_of_dvd {p a b c d x y : R}
    (h1 : p ∣ a * x + b * y) (h2 : p ∣ c * x + d * y) : p ∣ (a * d - b * c) * y 
Arguments: {R : Type u_1} [CommRing R] {p a b c d x y : R} (h1 : p ∣ a * x + b * y) (h2 : p ∣ c * x + d * y)
Goal: p ∣ (a * d - b * c) * y
-- dvd_mul_sub_mul_mul_gcd_of_dvd
lemma dvd_mul_sub_mul_mul_gcd_of_dvd {p a b c d x y : R} [IsDomain R] [GCDMonoid R]
    (h1 : p ∣ a * x + b * y) (h2 : p ∣ c * x + d * y) : p ∣ (a * d - b * c) * gcd x y 
Arguments: {R : Type u_1} [CommRing R] {p a b c d x y : R} [IsDomain R] [GCDMonoid R] (h1 : p ∣ a * x + b * y) (h2 : p ∣ c * x + d * y)
Goal: p ∣ (a * d - b * c) * gcd x y
-- NonUnitalRingHom.coe_fst
@[simp]
theorem coe_fst : ⇑(fst R S) = Prod.fst 
Arguments: {R : Type u_3} {S : Type u_5} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
Goal: ⇑(NonUnitalRingHom.fst R S) = Prod.fst
-- NonUnitalRingHom.coe_snd
@[simp]
theorem coe_snd : ⇑(snd R S) = Prod.snd 
Arguments: {R : Type u_3} {S : Type u_5} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
Goal: ⇑(NonUnitalRingHom.snd R S) = Prod.snd
-- NonUnitalRingHom.prod_apply
@[simp]
theorem prod_apply (x) : f.prod g x = (f x, g x) 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring T] (f : R →ₙ+* S) (g : R →ₙ+* T) (x : R)
Goal: (f.prod g) x = (f x, g x)
-- NonUnitalRingHom.fst_comp_prod
@[simp]
theorem fst_comp_prod : (fst S T).comp (f.prod g) = f 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring T] (f : R →ₙ+* S) (g : R →ₙ+* T)
Goal: (NonUnitalRingHom.fst S T).comp (f.prod g) = f
-- NonUnitalRingHom.snd_comp_prod
@[simp]
theorem snd_comp_prod : (snd S T).comp (f.prod g) = g 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring T] (f : R →ₙ+* S) (g : R →ₙ+* T)
Goal: (NonUnitalRingHom.snd S T).comp (f.prod g) = g
-- NonUnitalRingHom.prod_unique
theorem prod_unique (f : R →ₙ+* S × T) : ((fst S T).comp f).prod ((snd S T).comp f) = f 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring T] (f : R →ₙ+* S × T)
Goal: ((NonUnitalRingHom.fst S T).comp f).prod ((NonUnitalRingHom.snd S T).comp f) = f
-- NonUnitalRingHom.prodMap_def
theorem prodMap_def : prodMap f g = (f.comp (fst R S)).prod (g.comp (snd R S)) 
Arguments: {R : Type u_3} {R' : Type u_4} {S : Type u_5} {S' : Type u_6} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring R'] [NonUnitalNonAssocSemiring S'] (f : R →ₙ+* R') (g : S →ₙ+* S')
Goal: f.prodMap g = (f.comp (NonUnitalRingHom.fst R S)).prod (g.comp (NonUnitalRingHom.snd R S))
-- NonUnitalRingHom.coe_prodMap
@[simp]
theorem coe_prodMap : ⇑(prodMap f g) = Prod.map f g 
Arguments: {R : Type u_3} {R' : Type u_4} {S : Type u_5} {S' : Type u_6} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring R'] [NonUnitalNonAssocSemiring S'] (f : R →ₙ+* R') (g : S →ₙ+* S')
Goal: ⇑(f.prodMap g) = Prod.map ⇑f ⇑g
-- NonUnitalRingHom.prod_comp_prodMap
theorem prod_comp_prodMap (f : T →ₙ+* R) (g : T →ₙ+* S) (f' : R →ₙ+* R') (g' : S →ₙ+* S') :
    (f'.prodMap g').comp (f.prod g) = (f'.comp f).prod (g'.comp g) 
Arguments: {R : Type u_3} {R' : Type u_4} {S : Type u_5} {S' : Type u_6} {T : Type u_7} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring R'] [NonUnitalNonAssocSemiring S'] [NonUnitalNonAssocSemiring T] (f : T →ₙ+* R) (g : T →ₙ+* S) (f' : R →ₙ+* R') (g' : S →ₙ+* S')
Goal: (f'.prodMap g').comp (f.prod g) = (f'.comp f).prod (g'.comp g)
-- RingHom.coe_fst
@[simp]
theorem coe_fst : ⇑(fst R S) = Prod.fst 
Arguments: {R : Type u_3} {S : Type u_5} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: ⇑(RingHom.fst R S) = Prod.fst
-- RingHom.coe_snd
@[simp]
theorem coe_snd : ⇑(snd R S) = Prod.snd 
Arguments: {R : Type u_3} {S : Type u_5} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: ⇑(RingHom.snd R S) = Prod.snd
-- RingHom.prod_apply
@[simp]
theorem prod_apply (x) : f.prod g x = (f x, g x) 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring T] (f : R →+* S) (g : R →+* T) (x : R)
Goal: (f.prod g) x = (f x, g x)
-- RingHom.fst_comp_prod
@[simp]
theorem fst_comp_prod : (fst S T).comp (f.prod g) = f 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring T] (f : R →+* S) (g : R →+* T)
Goal: (RingHom.fst S T).comp (f.prod g) = f
-- RingHom.snd_comp_prod
@[simp]
theorem snd_comp_prod : (snd S T).comp (f.prod g) = g 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring T] (f : R →+* S) (g : R →+* T)
Goal: (RingHom.snd S T).comp (f.prod g) = g
-- RingHom.prod_unique
theorem prod_unique (f : R →+* S × T) : ((fst S T).comp f).prod ((snd S T).comp f) = f 
Arguments: {R : Type u_3} {S : Type u_5} {T : Type u_7} [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring T] (f : R →+* S × T)
Goal: ((RingHom.fst S T).comp f).prod ((RingHom.snd S T).comp f) = f
-- RingHom.prodMap_def
theorem prodMap_def : prodMap f g = (f.comp (fst R S)).prod (g.comp (snd R S)) 
Arguments: {R : Type u_3} {R' : Type u_4} {S : Type u_5} {S' : Type u_6} [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S'] (f : R →+* R') (g : S →+* S')
Goal: f.prodMap g = (f.comp (RingHom.fst R S)).prod (g.comp (RingHom.snd R S))
-- RingHom.coe_prodMap
@[simp]
theorem coe_prodMap : ⇑(prodMap f g) = Prod.map f g 
Arguments: {R : Type u_3} {R' : Type u_4} {S : Type u_5} {S' : Type u_6} [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S'] (f : R →+* R') (g : S →+* S')
Goal: ⇑(f.prodMap g) = Prod.map ⇑f ⇑g
-- RingHom.prod_comp_prodMap
theorem prod_comp_prodMap (f : T →+* R) (g : T →+* S) (f' : R →+* R') (g' : S →+* S') :
    (f'.prodMap g').comp (f.prod g) = (f'.comp f).prod (g'.comp g) 
Arguments: {R : Type u_3} {R' : Type u_4} {S : Type u_5} {S' : Type u_6} {T : Type u_7} [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S'] [NonAssocSemiring T] (f : T →+* R) (g : T →+* S) (f' : R →+* R') (g' : S →+* S')
Goal: (f'.prodMap g').comp (f.prod g) = (f'.comp f).prod (g'.comp g)
-- RingEquiv.coe_prodComm
@[simp]
theorem coe_prodComm : ⇑(prodComm : R × S ≃+* S × R) = Prod.swap 
Arguments: {R : Type u_3} {S : Type u_5} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: ⇑RingEquiv.prodComm = Prod.swap
-- RingEquiv.coe_prodComm_symm
@[simp]
theorem coe_prodComm_symm : ⇑(prodComm : R × S ≃+* S × R).symm = Prod.swap 
Arguments: {R : Type u_3} {S : Type u_5} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: ⇑RingEquiv.prodComm.symm = Prod.swap
-- RingEquiv.fst_comp_coe_prodComm
@[simp]
theorem fst_comp_coe_prodComm :
    (RingHom.fst S R).comp ↑(prodComm : R × S ≃+* S × R) = RingHom.snd R S 
Arguments: {R : Type u_3} {S : Type u_5} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: (RingHom.fst S R).comp ↑RingEquiv.prodComm = RingHom.snd R S
-- RingEquiv.snd_comp_coe_prodComm
@[simp]
theorem snd_comp_coe_prodComm :
    (RingHom.snd S R).comp ↑(prodComm : R × S ≃+* S × R) = RingHom.fst R S 
Arguments: {R : Type u_3} {S : Type u_5} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: (RingHom.snd S R).comp ↑RingEquiv.prodComm = RingHom.fst R S
-- RingEquiv.prodProdProdComm_apply
@[simps apply]
def prodProdProdComm : (R × R') × S × S' ≃+* (R × S) × R' × S' 
Arguments: (R : Type u_3) (R' : Type u_4) (S : Type u_5) (S' : Type u_6) [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S'] (rrss : (R × R') × S × S')
Goal: (RingEquiv.prodProdProdComm R R' S S') rrss = ((rrss.1.1, rrss.2.1), rrss.1.2, rrss.2.2)
-- RingEquiv.prodProdProdComm_symm
@[simp]
theorem prodProdProdComm_symm : (prodProdProdComm R R' S S').symm = prodProdProdComm R S R' S' 
Arguments: (R : Type u_3) (R' : Type u_4) (S : Type u_5) (S' : Type u_6) [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S']
Goal: (RingEquiv.prodProdProdComm R R' S S').symm = RingEquiv.prodProdProdComm R S R' S'
-- RingEquiv.prodProdProdComm_toAddEquiv
@[simp]
theorem prodProdProdComm_toAddEquiv :
    (prodProdProdComm R R' S S' : _ ≃+ _) = AddEquiv.prodProdProdComm R R' S S' 
Arguments: (R : Type u_3) (R' : Type u_4) (S : Type u_5) (S' : Type u_6) [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S']
Goal: ↑(RingEquiv.prodProdProdComm R R' S S') = AddEquiv.prodProdProdComm R R' S S'
-- RingEquiv.prodProdProdComm_toMulEquiv
@[simp]
theorem prodProdProdComm_toMulEquiv :
    (prodProdProdComm R R' S S' : _ ≃* _) = MulEquiv.prodProdProdComm R R' S S' 
Arguments: (R : Type u_3) (R' : Type u_4) (S : Type u_5) (S' : Type u_6) [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S']
Goal: ↑(RingEquiv.prodProdProdComm R R' S S') = MulEquiv.prodProdProdComm R R' S S'
-- RingEquiv.prodProdProdComm_toEquiv
@[simp]
theorem prodProdProdComm_toEquiv :
    (prodProdProdComm R R' S S' : _ ≃ _) = Equiv.prodProdProdComm R R' S S' 
Arguments: (R : Type u_3) (R' : Type u_4) (S : Type u_5) (S' : Type u_6) [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring R'] [NonAssocSemiring S']
Goal: ↑(RingEquiv.prodProdProdComm R R' S S') = Equiv.prodProdProdComm R R' S S'
-- RingEquiv.prodZeroRing_symm_apply
@[simps]
def prodZeroRing : R ≃+* R × S 
Arguments: (R : Type u_3) (S : Type u_5) [NonAssocSemiring R] [NonAssocSemiring S] [Subsingleton S] (self : R × S)
Goal: (RingEquiv.prodZeroRing R S).symm self = self.1
-- RingEquiv.prodZeroRing_apply
@[simps]
def prodZeroRing : R ≃+* R × S 
Arguments: (R : Type u_3) (S : Type u_5) [NonAssocSemiring R] [NonAssocSemiring S] [Subsingleton S] (x : R)
Goal: (RingEquiv.prodZeroRing R S) x = (x, 0)
-- RingEquiv.zeroRingProd_apply
@[simps]
def zeroRingProd : R ≃+* S × R 
Arguments: (R : Type u_3) (S : Type u_5) [NonAssocSemiring R] [NonAssocSemiring S] [Subsingleton S] (x : R)
Goal: (RingEquiv.zeroRingProd R S) x = (0, x)
-- RingEquiv.zeroRingProd_symm_apply
@[simps]
def zeroRingProd : R ≃+* S × R 
Arguments: (R : Type u_3) (S : Type u_5) [NonAssocSemiring R] [NonAssocSemiring S] [Subsingleton S] (self : S × R)
Goal: (RingEquiv.zeroRingProd R S).symm self = self.2
-- false_of_nontrivial_of_product_domain
theorem false_of_nontrivial_of_product_domain (R S : Type*) [Ring R] [Ring S] [IsDomain (R × S)]
    [Nontrivial R] [Nontrivial S] : False 
Arguments: (R : Type u_9) (S : Type u_10) [Ring R] [Ring S] [IsDomain (R × S)] [Nontrivial R] [Nontrivial S]
Goal: False
-- invOf_neg
@[simp]
theorem invOf_neg [Monoid α] [HasDistribNeg α] (a : α) [Invertible a] [Invertible (-a)] :
    ⅟ (-a) = -⅟ a 
Arguments: {α : Type u} [Monoid α] [HasDistribNeg α] (a : α) [Invertible a] [Invertible (-a)]
Goal: ⅟(-a) = -⅟a
-- one_sub_invOf_two
@[simp]
theorem one_sub_invOf_two [Ring α] [Invertible (2 : α)] : 1 - (⅟ 2 : α) = ⅟ 2 
Arguments: {α : Type u} [Ring α] [Invertible 2]
Goal: 1 - ⅟2 = ⅟2
-- invOf_two_add_invOf_two
@[simp]
theorem invOf_two_add_invOf_two [NonAssocSemiring α] [Invertible (2 : α)] :
    (⅟ 2 : α) + (⅟ 2 : α) = 1 
Arguments: {α : Type u} [NonAssocSemiring α] [Invertible 2]
Goal: ⅟2 + ⅟2 = 1
-- pos_of_invertible_cast
theorem pos_of_invertible_cast [Semiring α] [Nontrivial α] (n : ℕ) [Invertible (n : α)] : 0 < n 
Arguments: {α : Type u} [Semiring α] [Nontrivial α] (n : ℕ) [Invertible ↑n]
Goal: 0 < n
-- invOf_add_invOf
theorem invOf_add_invOf [Semiring α] (a b : α) [Invertible a] [Invertible b] :
    ⅟a + ⅟b = ⅟a * (a + b) * ⅟b 
Arguments: {α : Type u} [Semiring α] (a b : α) [Invertible a] [Invertible b]
Goal: ⅟a + ⅟b = ⅟a * (a + b) * ⅟b
-- invOf_sub_invOf
theorem invOf_sub_invOf [Ring α] (a b : α) [Invertible a] [Invertible b] :
    ⅟a - ⅟b = ⅟a * (b - a) * ⅟b 
Arguments: {α : Type u} [Ring α] (a b : α) [Invertible a] [Invertible b]
Goal: ⅟a - ⅟b = ⅟a * (b - a) * ⅟b
-- Ring.inverse_add_inverse
theorem Ring.inverse_add_inverse [Semiring α] {a b : α} (h : IsUnit a ↔ IsUnit b) :
    Ring.inverse a + Ring.inverse b = Ring.inverse a * (a + b) * Ring.inverse b 
Arguments: {α : Type u} [Semiring α] {a b : α} (h : IsUnit a ↔ IsUnit b)
Goal: Ring.inverse a + Ring.inverse b = Ring.inverse a * (a + b) * Ring.inverse b
-- Ring.inverse_sub_inverse
theorem Ring.inverse_sub_inverse [Ring α] {a b : α} (h : IsUnit a ↔ IsUnit b) :
    Ring.inverse a - Ring.inverse b = Ring.inverse a * (b - a) * Ring.inverse b 
Arguments: {α : Type u} [Ring α] {a b : α} (h : IsUnit a ↔ IsUnit b)
Goal: Ring.inverse a - Ring.inverse b = Ring.inverse a * (b - a) * Ring.inverse b
-- UniqueMul.of_subsingleton
@[to_additive (attr := nontriviality, simp)]
theorem of_subsingleton [Subsingleton G] : UniqueMul A B a0 b0 
Arguments: {G : Type u_1} [Mul G] {A B : Finset G} {a0 b0 : G} [Subsingleton G]
Goal: UniqueMul A B a0 b0
-- UniqueAdd.of_subsingleton
@[to_additive (attr := nontriviality, simp)]
theorem of_subsingleton [Subsingleton G] : UniqueMul A B a0 b0 
Arguments: {G : Type u_1} [Add G] {A B : Finset G} {a0 b0 : G} [Subsingleton G]
Goal: UniqueAdd A B a0 b0
-- UniqueMul.of_card_le_one
@[to_additive]
theorem of_card_le_one (hA : A.Nonempty) (hB : B.Nonempty) (hA1 : A.card ≤ 1) (hB1 : B.card ≤ 1) :
    ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b 
Arguments: {G : Type u_1} [Mul G] {A B : Finset G} (hA : A.Nonempty) (hB : B.Nonempty) (hA1 : A.card ≤ 1) (hB1 : B.card ≤ 1)
Goal: ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
-- UniqueAdd.of_card_nonpos
@[to_additive]
theorem of_card_le_one (hA : A.Nonempty) (hB : B.Nonempty) (hA1 : A.card ≤ 1) (hB1 : B.card ≤ 1) :
    ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b 
Arguments: {G : Type u_1} [Add G] {A B : Finset G} (hA : A.Nonempty) (hB : B.Nonempty) (hA1 : A.card ≤ 1) (hB1 : B.card ≤ 1)
Goal: ∃ a ∈ A, ∃ b ∈ B, UniqueAdd A B a b
-- UniqueMul.mt
@[to_additive]
theorem mt (h : UniqueMul A B a0 b0) :
    ∀ ⦃a b⦄, a ∈ A → b ∈ B → a ≠ a0 ∨ b ≠ b0 → a * b ≠ a0 * b0 
Arguments: {G : Type u_1} [Mul G] {A B : Finset G} {a0 b0 : G} (h : UniqueMul A B a0 b0) ⦃a b : G⦄
Goal: a ∈ A → b ∈ B → a ≠ a0 ∨ b ≠ b0 → a * b ≠ a0 * b0
-- UniqueAdd.mt
@[to_additive]
theorem mt (h : UniqueMul A B a0 b0) :
    ∀ ⦃a b⦄, a ∈ A → b ∈ B → a ≠ a0 ∨ b ≠ b0 → a * b ≠ a0 * b0 
Arguments: {G : Type u_1} [Add G] {A B : Finset G} {a0 b0 : G} (h : UniqueAdd A B a0 b0) ⦃a b : G⦄
Goal: a ∈ A → b ∈ B → a ≠ a0 ∨ b ≠ b0 → a + b ≠ a0 + b0
-- UniqueMul.subsingleton
@[to_additive]
theorem subsingleton (h : UniqueMul A B a0 b0) :
    Subsingleton { ab : G × G // ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 * ab.2 = a0 * b0 } 
Arguments: {G : Type u_1} [Mul G] {A B : Finset G} {a0 b0 : G} (h : UniqueMul A B a0 b0)
Goal: Subsingleton { ab // ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 * ab.2 = a0 * b0 }
-- UniqueAdd.subsingleton
@[to_additive]
theorem subsingleton (h : UniqueMul A B a0 b0) :
    Subsingleton { ab : G × G // ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 * ab.2 = a0 * b0 } 
Arguments: {G : Type u_1} [Add G] {A B : Finset G} {a0 b0 : G} (h : UniqueAdd A B a0 b0)
Goal: Subsingleton { ab // ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 + ab.2 = a0 + b0 }
-- UniqueMul.set_subsingleton
@[to_additive]
theorem set_subsingleton (h : UniqueMul A B a0 b0) :
    Set.Subsingleton { ab : G × G | ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 * ab.2 = a0 * b0 } 
Arguments: {G : Type u_1} [Mul G] {A B : Finset G} {a0 b0 : G} (h : UniqueMul A B a0 b0)
Goal: {ab | ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 * ab.2 = a0 * b0}.Subsingleton
-- UniqueAdd.set_subsingleton
@[to_additive]
theorem set_subsingleton (h : UniqueMul A B a0 b0) :
    Set.Subsingleton { ab : G × G | ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 * ab.2 = a0 * b0 } 
Arguments: {G : Type u_1} [Add G] {A B : Finset G} {a0 b0 : G} (h : UniqueAdd A B a0 b0)
Goal: {ab | ab.1 ∈ A ∧ ab.2 ∈ B ∧ ab.1 + ab.2 = a0 + b0}.Subsingleton
-- UniqueAdd.iff_existsUnique
@[to_additive]
theorem iff_existsUnique (aA : a0 ∈ A) (bB : b0 ∈ B) :
    UniqueMul A B a0 b0 ↔ ∃! ab, ab ∈ A ×ˢ B ∧ ab.1 * ab.2 = a0 * b0 
Arguments: {G : Type u_1} [Add G] {A B : Finset G} {a0 b0 : G} (aA : a0 ∈ A) (bB : b0 ∈ B)
Goal: UniqueAdd A B a0 b0 ↔ ∃! ab, ab ∈ A ×ˢ B ∧ ab.1 + ab.2 = a0 + b0
-- UniqueMul.iff_existsUnique
@[to_additive]
theorem iff_existsUnique (aA : a0 ∈ A) (bB : b0 ∈ B) :
    UniqueMul A B a0 b0 ↔ ∃! ab, ab ∈ A ×ˢ B ∧ ab.1 * ab.2 = a0 * b0 
Arguments: {G : Type u_1} [Mul G] {A B : Finset G} {a0 b0 : G} (aA : a0 ∈ A) (bB : b0 ∈ B)
Goal: UniqueMul A B a0 b0 ↔ ∃! ab, ab ∈ A ×ˢ B ∧ ab.1 * ab.2 = a0 * b0
-- UniqueAdd.iff_card_nonpos
@[to_additive]
theorem iff_card_le_one [DecidableEq G] (ha0 : a0 ∈ A) (hb0 : b0 ∈ B) :
    UniqueMul A B a0 b0 ↔ ((A ×ˢ B).filter (fun p ↦ p.1 * p.2 = a0 * b0)).card ≤ 1 
Arguments: {G : Type u_1} [Add G] {A B : Finset G} {a0 b0 : G} [DecidableEq G] (ha0 : a0 ∈ A) (hb0 : b0 ∈ B)
Goal: UniqueAdd A B a0 b0 ↔ (Finset.filter (fun p => p.1 + p.2 = a0 + b0) (A ×ˢ B)).card ≤ 1