Skip to content

Commit ae79ea3

Browse files
committed
feat: Subgroup.mem_sup for arbitrary groups when one of the subgroups is normal (#31458)
We prove Subgroup.mem_sup for arbitrary (not necessarily commutative) groups when one of the subgroups is normal. Co-authored-by: bwangpj <70694994+bwangpj@users.noreply.github.com>
1 parent 8c73f9f commit ae79ea3

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

Mathlib/Algebra/Group/Subgroup/Lattice.lean

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,32 @@ theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
603603
theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s) (z : t), (y : C) * z = x :=
604604
mem_sup.trans <| by simp only [SetLike.exists, exists_prop]
605605

606+
@[to_additive]
607+
theorem mem_sup_of_normal_right {s t : Subgroup G} [ht : t.Normal] {x : G} :
608+
x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x := by
609+
constructor
610+
· intro hx; rw [sup_eq_closure] at hx
611+
refine closure_induction ?_ ?_ ?_ ?_ hx
612+
· rintro x (hx | hx)
613+
· exact ⟨x, hx, 1, t.one_mem, by simp⟩
614+
· exact ⟨1, s.one_mem, x, hx, by simp⟩
615+
· exact ⟨1, s.one_mem, 1, t.one_mem, by simp⟩
616+
· rintro _ _ _ _ ⟨y₁, hy₁, z₁, hz₁, rfl⟩ ⟨y₂, hy₂, z₂, hz₂, rfl⟩
617+
exact ⟨y₁ * y₂, s.mul_mem hy₁ hy₂,
618+
(y₂⁻¹ * z₁ * y₂) * z₂, t.mul_mem (ht.conj_mem' z₁ hz₁ y₂) hz₂, by simp [mul_assoc]⟩
619+
· rintro _ _ ⟨y, hy, z, hz, rfl⟩
620+
exact ⟨y⁻¹, s.inv_mem hy,
621+
y * z⁻¹ * y⁻¹, ht.conj_mem z⁻¹ (t.inv_mem hz) y, by simp [mul_assoc]⟩
622+
· rintro ⟨y, hy, z, hz, rfl⟩; exact mul_mem_sup hy hz
623+
624+
@[to_additive]
625+
theorem mem_sup_of_normal_left {s t : Subgroup G} [hs : s.Normal] {x : G} :
626+
x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x := by
627+
have h := (sup_comm t s) ▸ mem_sup_of_normal_right (s := t) (t := s) (x := x)
628+
exact h.trans
629+
fun ⟨y, hy, z, hz, hp⟩ ↦ ⟨y * z * y⁻¹, hs.conj_mem z hz y, y, hy, by simp [hp]⟩,
630+
fun ⟨y, hy, z, hz, hp⟩ ↦ ⟨z, hz, z⁻¹ * y * z, hs.conj_mem' y hy z, by simp [mul_assoc, hp]⟩⟩
631+
606632
@[to_additive]
607633
theorem mem_closure_pair {x y z : C} :
608634
z ∈ closure ({x, y} : Set C) ↔ ∃ m n : ℤ, x ^ m * y ^ n = z := by

0 commit comments

Comments
 (0)