ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- zpow_mul_comm
@[to_additive] lemma zpow_mul_comm (a : G) (m n : ℤ) : a ^ m * a ^ n = a ^ n * a ^ m 
Arguments: {G : Type u_3} [Group G] (a : G) (m n : ℤ)
Goal: a ^ m * a ^ n = a ^ n * a ^ m
-- zpow_eq_zpow_emod
theorem zpow_eq_zpow_emod {x : G} (m : ℤ) {n : ℤ} (h : x ^ n = 1) :
    x ^ m = x ^ (m % n) 
Arguments: {G : Type u_3} [Group G] {x : G} (m : ℤ) {n : ℤ} (h : x ^ n = 1)
Goal: x ^ m = x ^ (m % n)
-- zpow_eq_zpow_emod'
theorem zpow_eq_zpow_emod' {x : G} (m : ℤ) {n : ℕ} (h : x ^ n = 1) :
    x ^ m = x ^ (m % (n : ℤ)) 
Arguments: {G : Type u_3} [Group G] {x : G} (m : ℤ) {n : ℕ} (h : x ^ n = 1)
Goal: x ^ m = x ^ (m % ↑n)
-- zsmul_induction_left
@[to_additive "To show a property of all multiples of `g` it suffices to show it is closed under
addition by `g` and `-g` on the left. For additive subgroups generated by more than one element, see
`AddSubgroup.closure_induction_left`."]
lemma zpow_induction_left {g : G} {P : G → Prop} (h_one : P (1 : G))
    (h_mul : ∀ a, P a → P (g * a)) (h_inv : ∀ a, P a → P (g⁻¹ * a)) (n : ℤ) : P (g ^ n) 
Arguments: {G : Type u_3} [AddGroup G] {g : G} {P : G → Prop} (h_one : P 0) (h_mul : ∀ (a : G), P a → P (g + a)) (h_inv : ∀ (a : G), P a → P (-g + a)) (n : ℤ)
Goal: P (n • g)
-- zpow_induction_left
@[to_additive "To show a property of all multiples of `g` it suffices to show it is closed under
addition by `g` and `-g` on the left. For additive subgroups generated by more than one element, see
`AddSubgroup.closure_induction_left`."]
lemma zpow_induction_left {g : G} {P : G → Prop} (h_one : P (1 : G))
    (h_mul : ∀ a, P a → P (g * a)) (h_inv : ∀ a, P a → P (g⁻¹ * a)) (n : ℤ) : P (g ^ n) 
Arguments: {G : Type u_3} [Group G] {g : G} {P : G → Prop} (h_one : P 1) (h_mul : ∀ (a : G), P a → P (g * a)) (h_inv : ∀ (a : G), P a → P (g⁻¹ * a)) (n : ℤ)
Goal: P (g ^ n)
-- zsmul_induction_right
@[to_additive "To show a property of all multiples of `g` it suffices to show it is closed under
addition by `g` and `-g` on the right. For additive subgroups generated by more than one element,
see `AddSubgroup.closure_induction_right`."]
lemma zpow_induction_right {g : G} {P : G → Prop} (h_one : P (1 : G))
    (h_mul : ∀ a, P a → P (a * g)) (h_inv : ∀ a, P a → P (a * g⁻¹)) (n : ℤ) : P (g ^ n) 
Arguments: {G : Type u_3} [AddGroup G] {g : G} {P : G → Prop} (h_one : P 0) (h_mul : ∀ (a : G), P a → P (a + g)) (h_inv : ∀ (a : G), P a → P (a + -g)) (n : ℤ)
Goal: P (n • g)
-- zpow_induction_right
@[to_additive "To show a property of all multiples of `g` it suffices to show it is closed under
addition by `g` and `-g` on the right. For additive subgroups generated by more than one element,
see `AddSubgroup.closure_induction_right`."]
lemma zpow_induction_right {g : G} {P : G → Prop} (h_one : P (1 : G))
    (h_mul : ∀ a, P a → P (a * g)) (h_inv : ∀ a, P a → P (a * g⁻¹)) (n : ℤ) : P (g ^ n) 
Arguments: {G : Type u_3} [Group G] {g : G} {P : G → Prop} (h_one : P 1) (h_mul : ∀ (a : G), P a → P (a * g)) (h_inv : ∀ (a : G), P a → P (a * g⁻¹)) (n : ℤ)
Goal: P (g ^ n)
-- div_eq_of_eq_mul'
@[to_additive]
theorem div_eq_of_eq_mul' {a b c : G} (h : a = b * c) : a / b = c 
Arguments: {G : Type u_3} [CommGroup G] {a b c : G} (h : a = b * c)
Goal: a / b = c
-- sub_eq_of_eq_add'
@[to_additive]
theorem div_eq_of_eq_mul' {a b c : G} (h : a = b * c) : a / b = c 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c : G} (h : a = b + c)
Goal: a - b = c
-- add_sub_add_left_eq_sub
@[to_additive (attr := simp)]
theorem mul_div_mul_left_eq_div (a b c : G) : c * a / (c * b) = a / b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b c : G)
Goal: c + a - (c + b) = a - b
-- mul_div_mul_left_eq_div
@[to_additive (attr := simp)]
theorem mul_div_mul_left_eq_div (a b c : G) : c * a / (c * b) = a / b 
Arguments: {G : Type u_3} [CommGroup G] (a b c : G)
Goal: c * a / (c * b) = a / b
-- eq_div_of_mul_eq''
@[to_additive eq_sub_of_add_eq']
theorem eq_div_of_mul_eq'' (h : c * a = b) : a = b / c 
Arguments: {G : Type u_3} [CommGroup G] {a b c : G} (h : c * a = b)
Goal: a = b / c
-- eq_sub_of_add_eq'
@[to_additive eq_sub_of_add_eq']
theorem eq_div_of_mul_eq'' (h : c * a = b) : a = b / c 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c : G} (h : c + a = b)
Goal: a = b - c
-- eq_add_of_sub_eq'
@[to_additive]
theorem eq_mul_of_div_eq' (h : a / b = c) : a = b * c 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c : G} (h : a - b = c)
Goal: a = b + c
-- eq_mul_of_div_eq'
@[to_additive]
theorem eq_mul_of_div_eq' (h : a / b = c) : a = b * c 
Arguments: {G : Type u_3} [CommGroup G] {a b c : G} (h : a / b = c)
Goal: a = b * c
-- mul_eq_of_eq_div'
@[to_additive]
theorem mul_eq_of_eq_div' (h : b = c / a) : a * b = c 
Arguments: {G : Type u_3} [CommGroup G] {a b c : G} (h : b = c / a)
Goal: a * b = c
-- add_eq_of_eq_sub'
@[to_additive]
theorem mul_eq_of_eq_div' (h : b = c / a) : a * b = c 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c : G} (h : b = c - a)
Goal: a + b = c
-- sub_sub_self
@[to_additive sub_sub_self]
theorem div_div_self' (a b : G) : a / (a / b) = b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b : G)
Goal: a - (a - b) = b
-- div_div_self'
@[to_additive sub_sub_self]
theorem div_div_self' (a b : G) : a / (a / b) = b 
Arguments: {G : Type u_3} [CommGroup G] (a b : G)
Goal: a / (a / b) = b
-- sub_eq_sub_add_sub
@[to_additive]
theorem div_eq_div_mul_div (a b c : G) : a / b = c / b * (a / c) 
Arguments: {G : Type u_3} [AddCommGroup G] (a b c : G)
Goal: a - b = c - b + (a - c)
-- div_eq_div_mul_div
@[to_additive]
theorem div_eq_div_mul_div (a b c : G) : a / b = c / b * (a / c) 
Arguments: {G : Type u_3} [CommGroup G] (a b c : G)
Goal: a / b = c / b * (a / c)
-- sub_sub_cancel
@[to_additive (attr := simp)]
theorem div_div_cancel (a b : G) : a / (a / b) = b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b : G)
Goal: a - (a - b) = b
-- div_div_cancel
@[to_additive (attr := simp)]
theorem div_div_cancel (a b : G) : a / (a / b) = b 
Arguments: {G : Type u_3} [CommGroup G] (a b : G)
Goal: a / (a / b) = b
-- div_div_cancel_left
@[to_additive (attr := simp)]
theorem div_div_cancel_left (a b : G) : a / b / a = b⁻¹ 
Arguments: {G : Type u_3} [CommGroup G] (a b : G)
Goal: a / b / a = b⁻¹
-- sub_sub_cancel_left
@[to_additive (attr := simp)]
theorem div_div_cancel_left (a b : G) : a / b / a = b⁻¹ 
Arguments: {G : Type u_3} [AddCommGroup G] (a b : G)
Goal: a - b - a = -b
-- eq_div_iff_mul_eq''
@[to_additive eq_sub_iff_add_eq']
theorem eq_div_iff_mul_eq'' : a = b / c ↔ c * a = b 
Arguments: {G : Type u_3} [CommGroup G] {a b c : G}
Goal: a = b / c ↔ c * a = b
-- eq_sub_iff_add_eq'
@[to_additive eq_sub_iff_add_eq']
theorem eq_div_iff_mul_eq'' : a = b / c ↔ c * a = b 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c : G}
Goal: a = b - c ↔ c + a = b
-- sub_eq_iff_eq_add'
@[to_additive]
theorem div_eq_iff_eq_mul' : a / b = c ↔ a = b * c 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c : G}
Goal: a - b = c ↔ a = b + c
-- div_eq_iff_eq_mul'
@[to_additive]
theorem div_eq_iff_eq_mul' : a / b = c ↔ a = b * c 
Arguments: {G : Type u_3} [CommGroup G] {a b c : G}
Goal: a / b = c ↔ a = b * c
-- add_sub_cancel_left
@[to_additive (attr := simp)]
theorem mul_div_cancel_left (a b : G) : a * b / a = b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b : G)
Goal: a + b - a = b
-- mul_div_cancel_left
@[to_additive (attr := simp)]
theorem mul_div_cancel_left (a b : G) : a * b / a = b 
Arguments: {G : Type u_3} [CommGroup G] (a b : G)
Goal: a * b / a = b
-- mul_div_cancel
@[to_additive (attr := simp)]
theorem mul_div_cancel (a b : G) : a * (b / a) = b 
Arguments: {G : Type u_3} [CommGroup G] (a b : G)
Goal: a * (b / a) = b
-- add_sub_cancel
@[to_additive (attr := simp)]
theorem mul_div_cancel (a b : G) : a * (b / a) = b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b : G)
Goal: a + (b - a) = b
-- div_mul_cancel_left
@[to_additive (attr := simp)]
theorem div_mul_cancel_left (a b : G) : a / (a * b) = b⁻¹ 
Arguments: {G : Type u_3} [CommGroup G] (a b : G)
Goal: a / (a * b) = b⁻¹
-- sub_add_cancel_left
@[to_additive (attr := simp)]
theorem div_mul_cancel_left (a b : G) : a / (a * b) = b⁻¹ 
Arguments: {G : Type u_3} [AddCommGroup G] (a b : G)
Goal: a - (a + b) = -b
-- add_add_neg_cancel'_right
@[to_additive]
theorem mul_mul_inv_cancel'_right (a b : G) : a * (b * a⁻¹) = b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b : G)
Goal: a + (b + -a) = b
-- mul_mul_inv_cancel'_right
@[to_additive]
theorem mul_mul_inv_cancel'_right (a b : G) : a * (b * a⁻¹) = b 
Arguments: {G : Type u_3} [CommGroup G] (a b : G)
Goal: a * (b * a⁻¹) = b
-- add_add_sub_cancel
@[to_additive (attr := simp)]
theorem mul_mul_div_cancel (a b c : G) : a * c * (b / c) = a * b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b c : G)
Goal: a + c + (b - c) = a + b
-- mul_mul_div_cancel
@[to_additive (attr := simp)]
theorem mul_mul_div_cancel (a b c : G) : a * c * (b / c) = a * b 
Arguments: {G : Type u_3} [CommGroup G] (a b c : G)
Goal: a * c * (b / c) = a * b
-- div_mul_mul_cancel
@[to_additive (attr := simp)]
theorem div_mul_mul_cancel (a b c : G) : a / c * (b * c) = a * b 
Arguments: {G : Type u_3} [CommGroup G] (a b c : G)
Goal: a / c * (b * c) = a * b
-- sub_add_add_cancel
@[to_additive (attr := simp)]
theorem div_mul_mul_cancel (a b c : G) : a / c * (b * c) = a * b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b c : G)
Goal: a - c + (b + c) = a + b
-- sub_add_sub_cancel'
@[to_additive (attr := simp) sub_add_sub_cancel']
theorem div_mul_div_cancel'' (a b c : G) : a / b * (c / a) = c / b 
Arguments: {G : Type u_3} [AddCommGroup G] (a b c : G)
Goal: a - b + (c - a) = c - b
-- div_mul_div_cancel''
@[to_additive (attr := simp) sub_add_sub_cancel']
theorem div_mul_div_cancel'' (a b c : G) : a / b * (c / a) = c / b 
Arguments: {G : Type u_3} [CommGroup G] (a b c : G)
Goal: a / b * (c / a) = c / b
-- mul_div_div_cancel
@[to_additive (attr := simp)]
theorem mul_div_div_cancel (a b c : G) : a * b / (a / c) = b * c 
Arguments: {G : Type u_3} [CommGroup G] (a b c : G)
Goal: a * b / (a / c) = b * c
-- add_sub_sub_cancel
@[to_additive (attr := simp)]
theorem mul_div_div_cancel (a b c : G) : a * b / (a / c) = b * c 
Arguments: {G : Type u_3} [AddCommGroup G] (a b c : G)
Goal: a + b - (a - c) = b + c
-- div_div_div_cancel_left
@[to_additive (attr := simp)]
theorem div_div_div_cancel_left (a b c : G) : c / a / (c / b) = b / a 
Arguments: {G : Type u_3} [CommGroup G] (a b c : G)
Goal: c / a / (c / b) = b / a
-- sub_sub_sub_cancel_left
@[to_additive (attr := simp)]
theorem div_div_div_cancel_left (a b c : G) : c / a / (c / b) = b / a 
Arguments: {G : Type u_3} [AddCommGroup G] (a b c : G)
Goal: c - a - (c - b) = b - a
-- div_eq_div_iff_mul_eq_mul
@[to_additive]
theorem div_eq_div_iff_mul_eq_mul : a / b = c / d ↔ a * d = c * b 
Arguments: {G : Type u_3} [CommGroup G] {a b c d : G}
Goal: a / b = c / d ↔ a * d = c * b
-- sub_eq_sub_iff_add_eq_add
@[to_additive]
theorem div_eq_div_iff_mul_eq_mul : a / b = c / d ↔ a * d = c * b 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c d : G}
Goal: a - b = c - d ↔ a + d = c + b
-- sub_eq_sub_iff_sub_eq_sub
@[to_additive]
theorem div_eq_div_iff_div_eq_div : a / b = c / d ↔ a / c = b / d 
Arguments: {G : Type u_3} [AddCommGroup G] {a b c d : G}
Goal: a - b = c - d ↔ a - c = b - d
-- div_eq_div_iff_div_eq_div
@[to_additive]
theorem div_eq_div_iff_div_eq_div : a / b = c / d ↔ a / c = b / d 
Arguments: {G : Type u_3} [CommGroup G] {a b c d : G}
Goal: a / b = c / d ↔ a / c = b / d
-- multiplicative_of_symmetric_of_isTotal
@[to_additive additive_of_symmetric_of_isTotal]
lemma multiplicative_of_symmetric_of_isTotal
    (hsymm : Symmetric p) (hf_swap : ∀ {a b}, p a b → f a b * f b a = 1)
    (hmul : ∀ {a b c}, r a b → r b c → p a b → p b c → p a c → f a c = f a b * f b c)
    {a b c : α} (pab : p a b) (pbc : p b c) (pac : p a c) : f a c = f a b * f b c 
Arguments: {α : Type u_1} {β : Type u_2} [Monoid β] (p r : α → α → Prop) [IsTotal α r] (f : α → α → β) (hsymm : Symmetric p) (hf_swap : ∀ {a b : α}, p a b → f a b * f b a = 1) (hmul : ∀ {a b c : α}, r a b → r b c → p a b → p b c → p a c → f a c = f a b * f b c) {a b c : α} (pab : p a b) (pbc : p b c) (pac : p a c)
Goal: f a c = f a b * f b c
-- additive_of_symmetric_of_isTotal
@[to_additive additive_of_symmetric_of_isTotal]
lemma multiplicative_of_symmetric_of_isTotal
    (hsymm : Symmetric p) (hf_swap : ∀ {a b}, p a b → f a b * f b a = 1)
    (hmul : ∀ {a b c}, r a b → r b c → p a b → p b c → p a c → f a c = f a b * f b c)
    {a b c : α} (pab : p a b) (pbc : p b c) (pac : p a c) : f a c = f a b * f b c 
Arguments: {α : Type u_1} {β : Type u_2} [AddMonoid β] (p r : α → α → Prop) [IsTotal α r] (f : α → α → β) (hsymm : Symmetric p) (hf_swap : ∀ {a b : α}, p a b → f a b + f b a = 0) (hmul : ∀ {a b c : α}, r a b → r b c → p a b → p b c → p a c → f a c = f a b + f b c) {a b c : α} (pab : p a b) (pbc : p b c) (pac : p a c)
Goal: f a c = f a b + f b c
-- additive_of_isTotal
@[to_additive additive_of_isTotal "If a binary function from a type equipped with a total relation
`r` to an additive monoid is anti-symmetric (i.e. satisfies `f a b + f b a = 0`), in order to show
it is additive (i.e. satisfies `f a c = f a b + f b c`), we may assume `r a b` and `r b c` are
satisfied. We allow restricting to a subset specified by a predicate `p`."]
theorem multiplicative_of_isTotal (p : α → Prop) (hswap : ∀ {a b}, p a → p b → f a b * f b a = 1)
    (hmul : ∀ {a b c}, r a b → r b c → p a → p b → p c → f a c = f a b * f b c) {a b c : α}
    (pa : p a) (pb : p b) (pc : p c) : f a c = f a b * f b c 
Arguments: {α : Type u_1} {β : Type u_2} [AddMonoid β] (r : α → α → Prop) [IsTotal α r] (f : α → α → β) (p : α → Prop) (hswap : ∀ {a b : α}, p a → p b → f a b + f b a = 0) (hmul : ∀ {a b c : α}, r a b → r b c → p a → p b → p c → f a c = f a b + f b c) {a b c : α} (pa : p a) (pb : p b) (pc : p c)
Goal: f a c = f a b + f b c
-- multiplicative_of_isTotal
@[to_additive additive_of_isTotal "If a binary function from a type equipped with a total relation
`r` to an additive monoid is anti-symmetric (i.e. satisfies `f a b + f b a = 0`), in order to show
it is additive (i.e. satisfies `f a c = f a b + f b c`), we may assume `r a b` and `r b c` are
satisfied. We allow restricting to a subset specified by a predicate `p`."]
theorem multiplicative_of_isTotal (p : α → Prop) (hswap : ∀ {a b}, p a → p b → f a b * f b a = 1)
    (hmul : ∀ {a b c}, r a b → r b c → p a → p b → p c → f a c = f a b * f b c) {a b c : α}
    (pa : p a) (pb : p b) (pc : p c) : f a c = f a b * f b c 
Arguments: {α : Type u_1} {β : Type u_2} [Monoid β] (r : α → α → Prop) [IsTotal α r] (f : α → α → β) (p : α → Prop) (hswap : ∀ {a b : α}, p a → p b → f a b * f b a = 1) (hmul : ∀ {a b c : α}, r a b → r b c → p a → p b → p c → f a c = f a b * f b c) {a b c : α} (pa : p a) (pb : p b) (pc : p c)
Goal: f a c = f a b * f b c
-- Subgroup.smul_def
@[to_additive] lemma smul_def (g : S) (m : α) : g • m = (g : G) • m 
Arguments: {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] {S : Subgroup G} (g : ↥S) (m : α)
Goal: g • m = ↑g • m
-- AddSubgroup.vadd_def
@[to_additive] lemma smul_def (g : S) (m : α) : g • m = (g : G) • m 
Arguments: {G : Type u_1} {α : Type u_2} [AddGroup G] [AddAction G α] {S : AddSubgroup G} (g : ↥S) (m : α)
Goal: g +ᵥ m = ↑g +ᵥ m
-- AddSubgroup.mk_vadd
@[to_additive (attr := simp)]
lemma mk_smul (g : G) (hg : g ∈ S) (a : α) : (⟨g, hg⟩ : S) • a = g • a 
Arguments: {G : Type u_1} {α : Type u_2} [AddGroup G] [AddAction G α] {S : AddSubgroup G} (g : G) (hg : g ∈ S) (a : α)
Goal: ⟨g, hg⟩ +ᵥ a = g +ᵥ a
-- Subgroup.mk_smul
@[to_additive (attr := simp)]
lemma mk_smul (g : G) (hg : g ∈ S) (a : α) : (⟨g, hg⟩ : S) • a = g • a 
Arguments: {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] {S : Subgroup G} (g : G) (hg : g ∈ S) (a : α)
Goal: ⟨g, hg⟩ • a = g • a
-- Subgroup.mem_zpowers
theorem mem_zpowers (g : G) : g ∈ zpowers g 
Arguments: {G : Type u_1} [Group G] (g : G)
Goal: g ∈ Subgroup.zpowers g
-- Subgroup.coe_zpowers
theorem coe_zpowers (g : G) : ↑(zpowers g) = Set.range (g ^ · : ℤ → G) 
Arguments: {G : Type u_1} [Group G] (g : G)
Goal: ↑(Subgroup.zpowers g) = Set.range fun x => g ^ x
-- Subgroup.zpowers_eq_closure
theorem zpowers_eq_closure (g : G) : zpowers g = closure {g} 
Arguments: {G : Type u_1} [Group G] (g : G)
Goal: Subgroup.zpowers g = Subgroup.closure {g}
-- Subgroup.range_zpowersHom
theorem range_zpowersHom (g : G) : (zpowersHom G g).range = zpowers g 
Arguments: {G : Type u_1} [Group G] (g : G)
Goal: ((zpowersHom G) g).range = Subgroup.zpowers g
-- Subgroup.mem_zpowers_iff
theorem mem_zpowers_iff {g h : G} : h ∈ zpowers g ↔ ∃ k : ℤ, g ^ k = h 
Arguments: {G : Type u_1} [Group G] {g h : G}
Goal: h ∈ Subgroup.zpowers g ↔ ∃ k, g ^ k = h
-- Subgroup.zpow_mem_zpowers
theorem zpow_mem_zpowers (g : G) (k : ℤ) : g ^ k ∈ zpowers g 
Arguments: {G : Type u_1} [Group G] (g : G) (k : ℤ)
Goal: g ^ k ∈ Subgroup.zpowers g
-- Subgroup.npow_mem_zpowers
theorem npow_mem_zpowers (g : G) (k : ℕ) : g ^ k ∈ zpowers g 
Arguments: {G : Type u_1} [Group G] (g : G) (k : ℕ)
Goal: g ^ k ∈ Subgroup.zpowers g
-- Subgroup.forall_zpowers
theorem forall_zpowers {x : G} {p : zpowers x → Prop} : (∀ g, p g) ↔ ∀ m : ℤ, p ⟨x ^ m, m, rfl⟩ 
Arguments: {G : Type u_1} [Group G] {x : G} {p : ↥(Subgroup.zpowers x) → Prop}
Goal: (∀ (g : ↥(Subgroup.zpowers x)), p g) ↔ ∀ (m : ℤ), p ⟨x ^ m, ⋯⟩
-- Subgroup.exists_zpowers
theorem exists_zpowers {x : G} {p : zpowers x → Prop} : (∃ g, p g) ↔ ∃ m : ℤ, p ⟨x ^ m, m, rfl⟩ 
Arguments: {G : Type u_1} [Group G] {x : G} {p : ↥(Subgroup.zpowers x) → Prop}
Goal: (∃ g, p g) ↔ ∃ m, p ⟨x ^ m, ⋯⟩
-- Subgroup.forall_mem_zpowers
theorem forall_mem_zpowers {x : G} {p : G → Prop} : (∀ g ∈ zpowers x, p g) ↔ ∀ m : ℤ, p (x ^ m) 
Arguments: {G : Type u_1} [Group G] {x : G} {p : G → Prop}
Goal: (∀ g ∈ Subgroup.zpowers x, p g) ↔ ∀ (m : ℤ), p (x ^ m)
-- Subgroup.exists_mem_zpowers
theorem exists_mem_zpowers {x : G} {p : G → Prop} : (∃ g ∈ zpowers x, p g) ↔ ∃ m : ℤ, p (x ^ m) 
Arguments: {G : Type u_1} [Group G] {x : G} {p : G → Prop}
Goal: (∃ g ∈ Subgroup.zpowers x, p g) ↔ ∃ m, p (x ^ m)
-- AddSubgroup.range_zmultiplesHom
@[simp]
theorem range_zmultiplesHom (a : A) : (zmultiplesHom A a).range = zmultiples a 
Arguments: {A : Type u_2} [AddGroup A] (a : A)
Goal: ((zmultiplesHom A) a).range = AddSubgroup.zmultiples a
-- AddSubgroup.intCast_mul_mem_zmultiples
@[simp]
theorem intCast_mul_mem_zmultiples : ↑(k : ℤ) * r ∈ zmultiples r 
Arguments: {R : Type u_4} [Ring R] (r : R) (k : ℤ)
Goal: ↑k * r ∈ AddSubgroup.zmultiples r
-- AddSubgroup.intCast_mem_zmultiples_one
@[simp]
theorem intCast_mem_zmultiples_one : ↑(k : ℤ) ∈ zmultiples (1 : R) 
Arguments: {R : Type u_4} [Ring R] (k : ℤ)
Goal: ↑k ∈ AddSubgroup.zmultiples 1
-- Int.range_castAddHom
@[simp] lemma Int.range_castAddHom {A : Type*} [AddGroupWithOne A] :
    (Int.castAddHom A).range = AddSubgroup.zmultiples 1 
Arguments: {A : Type u_4} [AddGroupWithOne A]
Goal: (Int.castAddHom A).range = AddSubgroup.zmultiples 1
-- MonoidHom.map_zpowers
@[to_additive (attr := simp)]
theorem MonoidHom.map_zpowers (f : G →* N) (x : G) :
    (Subgroup.zpowers x).map f = Subgroup.zpowers (f x) 
Arguments: {G : Type u_1} [Group G] {N : Type u_3} [Group N] (f : G →* N) (x : G)
Goal: Subgroup.map f (Subgroup.zpowers x) = Subgroup.zpowers (f x)
-- AddMonoidHom.map_zmultiples
@[to_additive (attr := simp)]
theorem MonoidHom.map_zpowers (f : G →* N) (x : G) :
    (Subgroup.zpowers x).map f = Subgroup.zpowers (f x) 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_3} [AddGroup N] (f : G →+ N) (x : G)
Goal: AddSubgroup.map f (AddSubgroup.zmultiples x) = AddSubgroup.zmultiples (f x)
-- Int.mem_zmultiples_iff
theorem Int.mem_zmultiples_iff {a b : ℤ} : b ∈ AddSubgroup.zmultiples a ↔ a ∣ b 
Arguments: {a b : ℤ}
Goal: b ∈ AddSubgroup.zmultiples a ↔ a ∣ b
-- Int.zmultiples_one
@[simp]
lemma Int.zmultiples_one : AddSubgroup.zmultiples (1 : ℤ) = ⊤ 
Goal: AddSubgroup.zmultiples 1 = ⊤
-- ofMul_image_zpowers_eq_zmultiples_ofMul
theorem ofMul_image_zpowers_eq_zmultiples_ofMul {x : G} :
    Additive.ofMul '' (Subgroup.zpowers x : Set G) = AddSubgroup.zmultiples (Additive.ofMul x) 
Arguments: {G : Type u_1} [Group G] {x : G}
Goal: ⇑Additive.ofMul '' ↑(Subgroup.zpowers x) = ↑(AddSubgroup.zmultiples (Additive.ofMul x))
-- ofAdd_image_zmultiples_eq_zpowers_ofAdd
theorem ofAdd_image_zmultiples_eq_zpowers_ofAdd {x : A} :
    Multiplicative.ofAdd '' (AddSubgroup.zmultiples x : Set A) =
      Subgroup.zpowers (Multiplicative.ofAdd x) 
Arguments: {A : Type u_2} [AddGroup A] {x : A}
Goal: ⇑Multiplicative.ofAdd '' ↑(AddSubgroup.zmultiples x) = ↑(Subgroup.zpowers (Multiplicative.ofAdd x))
-- AddSubgroup.zmultiples_le
@[to_additive (attr := simp)]
theorem zpowers_le {g : G} {H : Subgroup G} : zpowers g ≤ H ↔ g ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {g : G} {H : AddSubgroup G}
Goal: AddSubgroup.zmultiples g ≤ H ↔ g ∈ H
-- Subgroup.zpowers_le
@[to_additive (attr := simp)]
theorem zpowers_le {g : G} {H : Subgroup G} : zpowers g ≤ H ↔ g ∈ H 
Arguments: {G : Type u_1} [Group G] {g : G} {H : Subgroup G}
Goal: Subgroup.zpowers g ≤ H ↔ g ∈ H
-- AddSubgroup.zmultiples_eq_bot
@[to_additive (attr := simp)]
theorem zpowers_eq_bot {g : G} : zpowers g = ⊥ ↔ g = 1 
Arguments: {G : Type u_1} [AddGroup G] {g : G}
Goal: AddSubgroup.zmultiples g = ⊥ ↔ g = 0
-- Subgroup.zpowers_eq_bot
@[to_additive (attr := simp)]
theorem zpowers_eq_bot {g : G} : zpowers g = ⊥ ↔ g = 1 
Arguments: {G : Type u_1} [Group G] {g : G}
Goal: Subgroup.zpowers g = ⊥ ↔ g = 1
-- AddSubgroup.zmultiples_ne_bot
@[to_additive]
theorem zpowers_ne_bot : zpowers g ≠ ⊥ ↔ g ≠ 1 
Arguments: {G : Type u_1} [AddGroup G] {g : G}
Goal: AddSubgroup.zmultiples g ≠ ⊥ ↔ g ≠ 0
-- Subgroup.zpowers_ne_bot
@[to_additive]
theorem zpowers_ne_bot : zpowers g ≠ ⊥ ↔ g ≠ 1 
Arguments: {G : Type u_1} [Group G] {g : G}
Goal: Subgroup.zpowers g ≠ ⊥ ↔ g ≠ 1
-- Subgroup.zpowers_one_eq_bot
@[to_additive (attr := simp)]
theorem zpowers_one_eq_bot : Subgroup.zpowers (1 : G) = ⊥ 
Arguments: {G : Type u_1} [Group G]
Goal: Subgroup.zpowers 1 = ⊥
-- AddSubgroup.zmultiples_zero_eq_bot
@[to_additive (attr := simp)]
theorem zpowers_one_eq_bot : Subgroup.zpowers (1 : G) = ⊥ 
Arguments: {G : Type u_1} [AddGroup G]
Goal: AddSubgroup.zmultiples 0 = ⊥
-- Subgroup.centralizer_closure
@[to_additive]
theorem centralizer_closure (S : Set G) :
    centralizer (closure S : Set G) = ⨅ g ∈ S, centralizer (zpowers g : Set G) 
Arguments: {G : Type u_1} [Group G] (S : Set G)
Goal: Subgroup.centralizer ↑(Subgroup.closure S) = ⨅ g ∈ S, Subgroup.centralizer ↑(Subgroup.zpowers g)
-- AddSubgroup.centralizer_closure
@[to_additive]
theorem centralizer_closure (S : Set G) :
    centralizer (closure S : Set G) = ⨅ g ∈ S, centralizer (zpowers g : Set G) 
Arguments: {G : Type u_1} [AddGroup G] (S : Set G)
Goal: AddSubgroup.centralizer ↑(AddSubgroup.closure S) = ⨅ g ∈ S, AddSubgroup.centralizer ↑(AddSubgroup.zmultiples g)
-- AddSubgroup.center_eq_iInf
@[to_additive]
theorem center_eq_iInf (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g ∈ S, centralizer (zpowers g) 
Arguments: {G : Type u_1} [AddGroup G] (S : Set G) (hS : AddSubgroup.closure S = ⊤)
Goal: AddSubgroup.center G = ⨅ g ∈ S, AddSubgroup.centralizer ↑(AddSubgroup.zmultiples g)
-- Subgroup.center_eq_iInf
@[to_additive]
theorem center_eq_iInf (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g ∈ S, centralizer (zpowers g) 
Arguments: {G : Type u_1} [Group G] (S : Set G) (hS : Subgroup.closure S = ⊤)
Goal: Subgroup.center G = ⨅ g ∈ S, Subgroup.centralizer ↑(Subgroup.zpowers g)
-- AddSubgroup.center_eq_infi'
@[to_additive]
theorem center_eq_infi' (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g : S, centralizer (zpowers (g : G)) 
Arguments: {G : Type u_1} [AddGroup G] (S : Set G) (hS : AddSubgroup.closure S = ⊤)
Goal: AddSubgroup.center G = ⨅ g, AddSubgroup.centralizer ↑(AddSubgroup.zmultiples ↑g)
-- Subgroup.center_eq_infi'
@[to_additive]
theorem center_eq_infi' (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g : S, centralizer (zpowers (g : G)) 
Arguments: {G : Type u_1} [Group G] (S : Set G) (hS : Subgroup.closure S = ⊤)
Goal: Subgroup.center G = ⨅ g, Subgroup.centralizer ↑(Subgroup.zpowers ↑g)
-- AddSubgroup.op_coe
@[to_additive (attr := simps)
"Pull an additive subgroup back to an opposite additive subgroup along `AddOpposite.unop`"]
protected def op (H : Subgroup G) : Subgroup Gᵐᵒᵖ 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup G)
Goal: ↑H.op = AddOpposite.unop ⁻¹' ↑H