Skip to content

Commit 2da3b35

Browse files
committed
feat(GroupTheory/Commutator/Basic): commutator G ≤ H → H.Normal (leanprover-community#37225)
1 parent 7984739 commit 2da3b35

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

Mathlib/GroupTheory/Commutator/Basic.lean

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ theorem commutator_def (H₁ H₂ : Subgroup G) :
8282
⁅H₁, H₂⁆ = closure { g | ∃ g₁ ∈ H₁, ∃ g₂ ∈ H₂, ⁅g₁, g₂⁆ = g } :=
8383
rfl
8484

85-
variable {g₁ g₂ g₃} {H₁ H₂ H₃ K₁ K₂ : Subgroup G}
85+
variable {g₁ g₂ g₃} {H H₁ H₂ H₃ K₁ K₂ : Subgroup G}
8686

8787
@[to_additive]
8888
theorem commutator_mem_commutator (h₁ : g₁ ∈ H₁) (h₂ : g₂ ∈ H₂) : ⁅g₁, g₂⁆ ∈ ⁅H₁, H₂⁆ :=
@@ -156,6 +156,15 @@ theorem commutator_le_right [h : H₂.Normal] : ⁅H₁, H₂⁆ ≤ H₂ :=
156156
theorem commutator_le_left [H₁.Normal] : ⁅H₁, H₂⁆ ≤ H₁ :=
157157
commutator_comm H₂ H₁ ▸ commutator_le_right H₂ H₁
158158

159+
@[to_additive]
160+
theorem commutator_top_left_le_iff : ⁅(⊤ : Subgroup G), H⁆ ≤ H ↔ H.Normal := by
161+
refine ⟨fun hle ↦ ⟨fun h hh g ↦ ?_⟩, fun h ↦ commutator_le_right ⊤ H⟩
162+
exact (H.mul_mem_cancel_right <| H.inv_mem hh).mp <| commutator_le.mp hle g trivial h hh
163+
164+
@[to_additive]
165+
theorem commutator_top_right_le_iff : ⁅H, ⊤⁆ ≤ H ↔ H.Normal :=
166+
commutator_comm H ⊤ ▸ commutator_top_left_le_iff
167+
159168
@[to_additive (attr := simp)]
160169
theorem commutator_bot_left : ⁅(⊥ : Subgroup G), H₁⁆ = ⊥ :=
161170
le_bot_iff.mp (commutator_le_left ⊥ H₁)
@@ -263,6 +272,9 @@ variable (G)
263272
def commutator : Subgroup G := ⁅(⊤ : Subgroup G), ⊤⁆
264273
deriving Subgroup.Normal, Subgroup.Characteristic
265274

275+
attribute [to_additive] instNormalCommutator
276+
attribute [to_additive] instCharacteristicCommutator
277+
266278
@[to_additive]
267279
lemma commutator_def : commutator G = ⁅(⊤ : Subgroup G), ⊤⁆ :=
268280
rfl
@@ -286,6 +298,11 @@ variable {G} in
286298
lemma Subgroup.commutator_le_self (H : Subgroup G) : ⁅H, H⁆ ≤ H :=
287299
H.map_subtype_commutator.symm.trans_le (map_subtype_le _)
288300

301+
@[to_additive]
302+
theorem Subgroup.Normal.of_commutator_le {H : Subgroup G} (h : _root_.commutator G ≤ H) :
303+
H.Normal :=
304+
commutator_top_left_le_iff.mp <| commutator_mono le_top le_top |>.trans h
305+
289306
@[to_additive]
290307
theorem commutator_eq_bot_iff_center_eq_top : commutator G = ⊥ ↔ Subgroup.center G = ⊤ := by
291308
simp [commutator, Subgroup.commutator_eq_bot_iff_le_centralizer]

0 commit comments

Comments
 (0)