File: Mathlib/GroupTheory/Commutator.lean

full_name: commutatorElement_eq_one_iff_mul_comm
code: theorem commutatorElement_eq_one_iff_mul_comm : ⁅g₁, g₂⁆ = 1 ↔ g₁ * g₂ = g₂ * g₁ 
goal: ⁅g₁, g₂⁆ = 1 ↔ g₁ * g₂ = g₂ * g₁

full_name: commutatorElement_eq_one_iff_commute
code: theorem commutatorElement_eq_one_iff_commute : ⁅g₁, g₂⁆ = 1 ↔ Commute g₁ g₂ 
goal: ⁅g₁, g₂⁆ = 1 ↔ Commute g₁ g₂

full_name: Commute.commutator_eq
code: theorem Commute.commutator_eq (h : Commute g₁ g₂) : ⁅g₁, g₂⁆ = 1 
goal: ⁅g₁, g₂⁆ = 1

full_name: commutatorElement_one_right
code: @[simp]
theorem commutatorElement_one_right : ⁅g, (1 : G)⁆ = 1 
goal: ⁅g, 1⁆ = 1

full_name: commutatorElement_one_left
code: @[simp]
theorem commutatorElement_one_left : ⁅(1 : G), g⁆ = 1 
goal: ⁅1, g⁆ = 1

full_name: commutatorElement_self
code: @[simp]
theorem commutatorElement_self : ⁅g, g⁆ = 1 
goal: ⁅g, g⁆ = 1

full_name: commutatorElement_inv
code: @[simp]
theorem commutatorElement_inv : ⁅g₁, g₂⁆⁻¹ = ⁅g₂, g₁⁆ 
goal: ⁅g₁, g₂⁆⁻¹ = ⁅g₂, g₁⁆

full_name: map_commutatorElement
code: theorem map_commutatorElement : (f ⁅g₁, g₂⁆ : G') = ⁅f g₁, f g₂⁆ 
goal: f ⁅g₁, g₂⁆ = ⁅f g₁, f g₂⁆

full_name: conjugate_commutatorElement
code: theorem conjugate_commutatorElement : g₃ * ⁅g₁, g₂⁆ * g₃⁻¹ = ⁅g₃ * g₁ * g₃⁻¹, g₃ * g₂ * g₃⁻¹⁆ 
goal: g₃ * ⁅g₁, g₂⁆ * g₃⁻¹ = ⁅g₃ * g₁ * g₃⁻¹, g₃ * g₂ * g₃⁻¹⁆

full_name: Subgroup.commutator
code: /-- The commutator of two subgroups `H₁` and `H₂`. -/
instance commutator : Bracket (Subgroup G) (Subgroup G) 
goal: Bracket (Subgroup G) (Subgroup G)

full_name: Subgroup.commutator_def
code: theorem commutator_def (H₁ H₂ : Subgroup G) :
    ⁅H₁, H₂⁆ = closure { g | ∃ g₁ ∈ H₁, ∃ g₂ ∈ H₂, ⁅g₁, g₂⁆ = g } 
goal: ⁅H₁, H₂⁆ = Subgroup.closure {g | ∃ g₁ ∈ H₁, ∃ g₂ ∈ H₂, ⁅g₁, g₂⁆ = g}

full_name: Subgroup.commutator_mem_commutator
code: theorem commutator_mem_commutator (h₁ : g₁ ∈ H₁) (h₂ : g₂ ∈ H₂) : ⁅g₁, g₂⁆ ∈ ⁅H₁, H₂⁆ 
goal: ⁅g₁, g₂⁆ ∈ ⁅H₁, H₂⁆

full_name: Subgroup.commutator_le
code: theorem commutator_le : ⁅H₁, H₂⁆ ≤ H₃ ↔ ∀ g₁ ∈ H₁, ∀ g₂ ∈ H₂, ⁅g₁, g₂⁆ ∈ H₃ 
goal: ⁅H₁, H₂⁆ ≤ H₃ ↔ ∀ g₁ ∈ H₁, ∀ g₂ ∈ H₂, ⁅g₁, g₂⁆ ∈ H₃

full_name: Subgroup.commutator_mono
code: theorem commutator_mono (h₁ : H₁ ≤ K₁) (h₂ : H₂ ≤ K₂) : ⁅H₁, H₂⁆ ≤ ⁅K₁, K₂⁆ 
goal: ⁅H₁, H₂⁆ ≤ ⁅K₁, K₂⁆

full_name: Subgroup.commutator_eq_bot_iff_le_centralizer
code: theorem commutator_eq_bot_iff_le_centralizer : ⁅H₁, H₂⁆ = ⊥ ↔ H₁ ≤ centralizer H₂ 
goal: ⁅H₁, H₂⁆ = ⊥ ↔ H₁ ≤ Subgroup.centralizer ↑H₂

full_name: Subgroup.commutator_commutator_eq_bot_of_rotate
code: /-- **The Three Subgroups Lemma** (via the Hall-Witt identity) -/
theorem commutator_commutator_eq_bot_of_rotate (h1 : ⁅⁅H₂, H₃⁆, H₁⁆ = ⊥) (h2 : ⁅⁅H₃, H₁⁆, H₂⁆ = ⊥) :
    ⁅⁅H₁, H₂⁆, H₃⁆ = ⊥ 
goal: ⁅⁅H₁, H₂⁆, H₃⁆ = ⊥

full_name: Subgroup.commutator_comm_le
code: theorem commutator_comm_le : ⁅H₁, H₂⁆ ≤ ⁅H₂, H₁⁆ 
goal: ⁅H₁, H₂⁆ ≤ ⁅H₂, H₁⁆

full_name: Subgroup.commutator_comm
code: theorem commutator_comm : ⁅H₁, H₂⁆ = ⁅H₂, H₁⁆ 
goal: ⁅H₁, H₂⁆ = ⁅H₂, H₁⁆

full_name: Subgroup.commutator_normal
code: instance commutator_normal [h₁ : H₁.Normal] [h₂ : H₂.Normal] : Normal ⁅H₁, H₂⁆ 
goal: ⁅H₁, H₂⁆.Normal

full_name: Subgroup.commutator_def'
code: theorem commutator_def' [H₁.Normal] [H₂.Normal] :
    ⁅H₁, H₂⁆ = normalClosure { g | ∃ g₁ ∈ H₁, ∃ g₂ ∈ H₂, ⁅g₁, g₂⁆ = g } 
goal: ⁅H₁, H₂⁆ = Subgroup.normalClosure {g | ∃ g₁ ∈ H₁, ∃ g₂ ∈ H₂, ⁅g₁, g₂⁆ = g}

full_name: Subgroup.commutator_le_right
code: theorem commutator_le_right [h : H₂.Normal] : ⁅H₁, H₂⁆ ≤ H₂ 
goal: ⁅H₁, H₂⁆ ≤ H₂

full_name: Subgroup.commutator_le_left
code: theorem commutator_le_left [H₁.Normal] : ⁅H₁, H₂⁆ ≤ H₁ 
goal: ⁅H₁, H₂⁆ ≤ H₁

full_name: Subgroup.commutator_bot_left
code: @[simp]
theorem commutator_bot_left : ⁅(⊥ : Subgroup G), H₁⁆ = ⊥ 
goal: ⁅⊥, H₁⁆ = ⊥

full_name: Subgroup.commutator_bot_right
code: @[simp]
theorem commutator_bot_right : ⁅H₁, ⊥⁆ = (⊥ : Subgroup G) 
goal: ⁅H₁, ⊥⁆ = ⊥

full_name: Subgroup.commutator_le_inf
code: theorem commutator_le_inf [Normal H₁] [Normal H₂] : ⁅H₁, H₂⁆ ≤ H₁ ⊓ H₂ 
goal: ⁅H₁, H₂⁆ ≤ H₁ ⊓ H₂

full_name: Subgroup.map_commutator
code: theorem map_commutator (f : G →* G') : map f ⁅H₁, H₂⁆ = ⁅map f H₁, map f H₂⁆ 
goal: Subgroup.map f ⁅H₁, H₂⁆ = ⁅Subgroup.map f H₁, Subgroup.map f H₂⁆

full_name: Subgroup.commutator_le_map_commutator
code: theorem commutator_le_map_commutator {f : G →* G'} {K₁ K₂ : Subgroup G'} (h₁ : K₁ ≤ H₁.map f)
    (h₂ : K₂ ≤ H₂.map f) : ⁅K₁, K₂⁆ ≤ ⁅H₁, H₂⁆.map f 
goal: ⁅K₁, K₂⁆ ≤ Subgroup.map f ⁅H₁, H₂⁆

full_name: Subgroup.commutator_characteristic
code: instance commutator_characteristic [h₁ : Characteristic H₁] [h₂ : Characteristic H₂] :
    Characteristic ⁅H₁, H₂⁆ 
goal: ⁅H₁, H₂⁆.Characteristic

full_name: Subgroup.commutator_prod_prod
code: theorem commutator_prod_prod (K₁ K₂ : Subgroup G') :
    ⁅H₁.prod K₁, H₂.prod K₂⁆ = ⁅H₁, H₂⁆.prod ⁅K₁, K₂⁆ 
goal: ⁅H₁.prod K₁, H₂.prod K₂⁆ = ⁅H₁, H₂⁆.prod ⁅K₁, K₂⁆

full_name: Subgroup.commutator_pi_pi_le
code: /-- The commutator of direct product is contained in the direct product of the commutators.

See `commutator_pi_pi_of_finite` for equality given `Fintype η`.
-/
theorem commutator_pi_pi_le {η : Type*} {Gs : η → Type*} [∀ i, Group (Gs i)]
    (H K : ∀ i, Subgroup (Gs i)) :
    ⁅Subgroup.pi Set.univ H, Subgroup.pi Set.univ K⁆ ≤ Subgroup.pi Set.univ fun i => ⁅H i, K i⁆ 
goal: ⁅Subgroup.pi Set.univ H, Subgroup.pi Set.univ K⁆ ≤ Subgroup.pi Set.univ fun i => ⁅H i, K i⁆

full_name: Subgroup.commutator_pi_pi_of_finite
code: /-- The commutator of a finite direct product is contained in the direct product of the commutators.
-/
theorem commutator_pi_pi_of_finite {η : Type*} [Finite η] {Gs : η → Type*} [∀ i, Group (Gs i)]
    (H K : ∀ i, Subgroup (Gs i)) : ⁅Subgroup.pi Set.univ H, Subgroup.pi Set.univ K⁆ =
    Subgroup.pi Set.univ fun i => ⁅H i, K i⁆ 
goal: ⁅Subgroup.pi Set.univ H, Subgroup.pi Set.univ K⁆ = Subgroup.pi Set.univ fun i => ⁅H i, K i⁆

full_name: commutatorSet
code: /-- The set of commutator elements `⁅g₁, g₂⁆` in `G`. -/
def commutatorSet : Set G 
goal: Set G

full_name: commutatorSet_def
code: theorem commutatorSet_def : commutatorSet G = { g | ∃ g₁ g₂ : G, ⁅g₁, g₂⁆ = g } 
goal: commutatorSet G = {g | ∃ g₁ g₂, ⁅g₁, g₂⁆ = g}

full_name: one_mem_commutatorSet
code: theorem one_mem_commutatorSet : (1 : G) ∈ commutatorSet G 
goal: 1 ∈ commutatorSet G

full_name: instNonemptyElemCommutatorSet
code: instance : Nonempty (commutatorSet G) 
goal: Nonempty ↑(commutatorSet G)

full_name: mem_commutatorSet_iff
code: theorem mem_commutatorSet_iff : g ∈ commutatorSet G ↔ ∃ g₁ g₂ : G, ⁅g₁, g₂⁆ = g 
goal: g ∈ commutatorSet G ↔ ∃ g₁ g₂, ⁅g₁, g₂⁆ = g

full_name: commutator_mem_commutatorSet
code: theorem commutator_mem_commutatorSet : ⁅g₁, g₂⁆ ∈ commutatorSet G 
goal: ⁅g₁, g₂⁆ ∈ commutatorSet G