File: Mathlib/Algebra/Group/Subgroup/ZPowers.lean

full_name: Subgroup.zpowers
code: /-- The subgroup generated by an element. -/
def zpowers (g : G) : Subgroup G 
goal: Subgroup G

full_name: Subgroup.mem_zpowers
code: theorem mem_zpowers (g : G) : g ∈ zpowers g 
goal: g ∈ Subgroup.zpowers g

full_name: Subgroup.coe_zpowers
code: theorem coe_zpowers (g : G) : ↑(zpowers g) = Set.range (g ^ · : ℤ → G) 
goal: ↑(Subgroup.zpowers g) = Set.range fun x => g ^ x

full_name: Subgroup.decidableMemZPowers
code: noncomputable instance decidableMemZPowers {a : G} : DecidablePred (· ∈ Subgroup.zpowers a) 
goal: DecidablePred fun x => x ∈ Subgroup.zpowers a

full_name: Subgroup.zpowers_eq_closure
code: theorem zpowers_eq_closure (g : G) : zpowers g = closure {g} 
goal: Subgroup.zpowers g = Subgroup.closure {g}

full_name: Subgroup.range_zpowersHom
code: theorem range_zpowersHom (g : G) : (zpowersHom G g).range = zpowers g 
goal: ((zpowersHom G) g).range = Subgroup.zpowers g

full_name: Subgroup.mem_zpowers_iff
code: theorem mem_zpowers_iff {g h : G} : h ∈ zpowers g ↔ ∃ k : ℤ, g ^ k = h 
goal: h ∈ Subgroup.zpowers g ↔ ∃ k, g ^ k = h

full_name: Subgroup.zpow_mem_zpowers
code: theorem zpow_mem_zpowers (g : G) (k : ℤ) : g ^ k ∈ zpowers g 
goal: g ^ k ∈ Subgroup.zpowers g

full_name: Subgroup.npow_mem_zpowers
code: theorem npow_mem_zpowers (g : G) (k : ℕ) : g ^ k ∈ zpowers g 
goal: g ^ k ∈ Subgroup.zpowers g

full_name: Subgroup.forall_zpowers
code: theorem forall_zpowers {x : G} {p : zpowers x → Prop} : (∀ g, p g) ↔ ∀ m : ℤ, p ⟨x ^ m, m, rfl⟩ 
goal: (∀ (g : ↥(Subgroup.zpowers x)), p g) ↔ ∀ (m : ℤ), p ⟨x ^ m, ⋯⟩

full_name: Subgroup.exists_zpowers
code: theorem exists_zpowers {x : G} {p : zpowers x → Prop} : (∃ g, p g) ↔ ∃ m : ℤ, p ⟨x ^ m, m, rfl⟩ 
goal: (∃ g, p g) ↔ ∃ m, p ⟨x ^ m, ⋯⟩

full_name: Subgroup.forall_mem_zpowers
code: theorem forall_mem_zpowers {x : G} {p : G → Prop} : (∀ g ∈ zpowers x, p g) ↔ ∀ m : ℤ, p (x ^ m) 
goal: (∀ g ∈ Subgroup.zpowers x, p g) ↔ ∀ (m : ℤ), p (x ^ m)

full_name: Subgroup.exists_mem_zpowers
code: theorem exists_mem_zpowers {x : G} {p : G → Prop} : (∃ g ∈ zpowers x, p g) ↔ ∃ m : ℤ, p (x ^ m) 
goal: (∃ g ∈ Subgroup.zpowers x, p g) ↔ ∃ m, p (x ^ m)

full_name: Subgroup.instCountableSubtypeMemZpowers
code: instance (a : G) : Countable (zpowers a) 
goal: Countable ↥(Subgroup.zpowers a)

full_name: AddSubgroup.zmultiples
code: /-- The subgroup generated by an element. -/
def zmultiples (a : A) : AddSubgroup A 
goal: AddSubgroup A

full_name: AddSubgroup.range_zmultiplesHom
code: @[simp]
theorem range_zmultiplesHom (a : A) : (zmultiplesHom A a).range = zmultiples a 
goal: ((zmultiplesHom A) a).range = AddSubgroup.zmultiples a

full_name: AddSubgroup.instCountableSubtypeMemZmultiples
code: instance (a : A) : Countable (zmultiples a) 
goal: Countable ↥(AddSubgroup.zmultiples a)

full_name: AddSubgroup.intCast_mul_mem_zmultiples
code: @[simp]
theorem intCast_mul_mem_zmultiples : ↑(k : ℤ) * r ∈ zmultiples r 
goal: ↑k * r ∈ AddSubgroup.zmultiples r

full_name: AddSubgroup.intCast_mem_zmultiples_one
code: @[simp]
theorem intCast_mem_zmultiples_one : ↑(k : ℤ) ∈ zmultiples (1 : R) 
goal: ↑k ∈ AddSubgroup.zmultiples 1

full_name: Int.range_castAddHom
code: @[simp] lemma Int.range_castAddHom {A : Type*} [AddGroupWithOne A] :
    (Int.castAddHom A).range = AddSubgroup.zmultiples 1 
goal: (Int.castAddHom A).range = AddSubgroup.zmultiples 1

full_name: MonoidHom.map_zpowers
code: @[to_additive (attr := simp)]
theorem MonoidHom.map_zpowers (f : G →* N) (x : G) :
    (Subgroup.zpowers x).map f = Subgroup.zpowers (f x) 
goal: Subgroup.map f (Subgroup.zpowers x) = Subgroup.zpowers (f x)

full_name: AddMonoidHom.map_zmultiples
code: @[to_additive (attr := simp)]
theorem MonoidHom.map_zpowers (f : G →* N) (x : G) :
    (Subgroup.zpowers x).map f = Subgroup.zpowers (f x) 
goal: AddSubgroup.map f (AddSubgroup.zmultiples x) = AddSubgroup.zmultiples (f x)

full_name: Int.mem_zmultiples_iff
code: theorem Int.mem_zmultiples_iff {a b : ℤ} : b ∈ AddSubgroup.zmultiples a ↔ a ∣ b 
goal: b ∈ AddSubgroup.zmultiples a ↔ a ∣ b

full_name: Int.zmultiples_one
code: @[simp]
lemma Int.zmultiples_one : AddSubgroup.zmultiples (1 : ℤ) = ⊤ 
goal: AddSubgroup.zmultiples 1 = ⊤

full_name: ofMul_image_zpowers_eq_zmultiples_ofMul
code: theorem ofMul_image_zpowers_eq_zmultiples_ofMul {x : G} :
    Additive.ofMul '' (Subgroup.zpowers x : Set G) = AddSubgroup.zmultiples (Additive.ofMul x) 
goal: ⇑Additive.ofMul '' ↑(Subgroup.zpowers x) = ↑(AddSubgroup.zmultiples (Additive.ofMul x))

full_name: ofAdd_image_zmultiples_eq_zpowers_ofAdd
code: theorem ofAdd_image_zmultiples_eq_zpowers_ofAdd {x : A} :
    Multiplicative.ofAdd '' (AddSubgroup.zmultiples x : Set A) =
      Subgroup.zpowers (Multiplicative.ofAdd x) 
goal: ⇑Multiplicative.ofAdd '' ↑(AddSubgroup.zmultiples x) = ↑(Subgroup.zpowers (Multiplicative.ofAdd x))

full_name: Subgroup.zpowers_isCommutative
code: @[to_additive]
instance zpowers_isCommutative (g : G) : (zpowers g).IsCommutative 
goal: (Subgroup.zpowers g).IsCommutative

full_name: AddSubgroup.zmultiples_isCommutative
code: @[to_additive]
instance zpowers_isCommutative (g : G) : (zpowers g).IsCommutative 
goal: (AddSubgroup.zmultiples g).IsCommutative

full_name: AddSubgroup.zmultiples_le
code: @[to_additive (attr := simp)]
theorem zpowers_le {g : G} {H : Subgroup G} : zpowers g ≤ H ↔ g ∈ H 
goal: AddSubgroup.zmultiples g ≤ H ↔ g ∈ H

full_name: Subgroup.zpowers_le
code: @[to_additive (attr := simp)]
theorem zpowers_le {g : G} {H : Subgroup G} : zpowers g ≤ H ↔ g ∈ H 
goal: Subgroup.zpowers g ≤ H ↔ g ∈ H

full_name: AddSubgroup.zmultiples_eq_bot
code: @[to_additive (attr := simp)]
theorem zpowers_eq_bot {g : G} : zpowers g = ⊥ ↔ g = 1 
goal: AddSubgroup.zmultiples g = ⊥ ↔ g = 0

full_name: Subgroup.zpowers_eq_bot
code: @[to_additive (attr := simp)]
theorem zpowers_eq_bot {g : G} : zpowers g = ⊥ ↔ g = 1 
goal: Subgroup.zpowers g = ⊥ ↔ g = 1

full_name: AddSubgroup.zmultiples_ne_bot
code: @[to_additive]
theorem zpowers_ne_bot : zpowers g ≠ ⊥ ↔ g ≠ 1 
goal: AddSubgroup.zmultiples g ≠ ⊥ ↔ g ≠ 0

full_name: Subgroup.zpowers_ne_bot
code: @[to_additive]
theorem zpowers_ne_bot : zpowers g ≠ ⊥ ↔ g ≠ 1 
goal: Subgroup.zpowers g ≠ ⊥ ↔ g ≠ 1

full_name: Subgroup.zpowers_one_eq_bot
code: @[to_additive (attr := simp)]
theorem zpowers_one_eq_bot : Subgroup.zpowers (1 : G) = ⊥ 
goal: Subgroup.zpowers 1 = ⊥

full_name: AddSubgroup.zmultiples_zero_eq_bot
code: @[to_additive (attr := simp)]
theorem zpowers_one_eq_bot : Subgroup.zpowers (1 : G) = ⊥ 
goal: AddSubgroup.zmultiples 0 = ⊥

full_name: Subgroup.centralizer_closure
code: @[to_additive]
theorem centralizer_closure (S : Set G) :
    centralizer (closure S : Set G) = ⨅ g ∈ S, centralizer (zpowers g : Set G) 
goal: Subgroup.centralizer ↑(Subgroup.closure S) = ⨅ g ∈ S, Subgroup.centralizer ↑(Subgroup.zpowers g)

full_name: AddSubgroup.centralizer_closure
code: @[to_additive]
theorem centralizer_closure (S : Set G) :
    centralizer (closure S : Set G) = ⨅ g ∈ S, centralizer (zpowers g : Set G) 
goal: AddSubgroup.centralizer ↑(AddSubgroup.closure S) = ⨅ g ∈ S, AddSubgroup.centralizer ↑(AddSubgroup.zmultiples g)

full_name: AddSubgroup.center_eq_iInf
code: @[to_additive]
theorem center_eq_iInf (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g ∈ S, centralizer (zpowers g) 
goal: AddSubgroup.center G = ⨅ g ∈ S, AddSubgroup.centralizer ↑(AddSubgroup.zmultiples g)

full_name: Subgroup.center_eq_iInf
code: @[to_additive]
theorem center_eq_iInf (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g ∈ S, centralizer (zpowers g) 
goal: Subgroup.center G = ⨅ g ∈ S, Subgroup.centralizer ↑(Subgroup.zpowers g)

full_name: AddSubgroup.center_eq_infi'
code: @[to_additive]
theorem center_eq_infi' (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g : S, centralizer (zpowers (g : G)) 
goal: AddSubgroup.center G = ⨅ g, AddSubgroup.centralizer ↑(AddSubgroup.zmultiples ↑g)

full_name: Subgroup.center_eq_infi'
code: @[to_additive]
theorem center_eq_infi' (S : Set G) (hS : closure S = ⊤) :
    center G = ⨅ g : S, centralizer (zpowers (g : G)) 
goal: Subgroup.center G = ⨅ g, Subgroup.centralizer ↑(Subgroup.zpowers ↑g)