Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 2e63635

Browse files
ChrisHughes24digama0
authored andcommitted
feat(group_theory/subgroup): simple groups (#572)
1 parent d19c9bc commit 2e63635

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

group_theory/subgroup.lean

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,11 @@ subset.antisymm
264264
(by simp [set.subset_def, is_submonoid.one_mem])
265265
(group.closure_subset $ by simp)
266266

267+
lemma eq_trivial_iff {H : set α} [is_subgroup H] :
268+
H = trivial α ↔ (∀ x ∈ H, x = (1 : α)) :=
269+
by simp only [set.ext_iff, is_subgroup.mem_trivial];
270+
exact ⟨λ h x, (h x).1, λ h x, ⟨h x, λ hx, hx.symm ▸ is_submonoid.one_mem H⟩⟩
271+
267272
instance univ_subgroup : normal_subgroup (@univ α) :=
268273
by refine {..}; simp
269274

@@ -327,6 +332,8 @@ attribute [to_additive is_add_subgroup.trivial_normal] is_subgroup.trivial_norma
327332

328333
attribute [to_additive is_add_subgroup.trivial_eq_closure] is_subgroup.trivial_eq_closure
329334

335+
attribute [to_additive is_add_subgroup.eq_trivial_iff] is_subgroup.eq_trivial_iff
336+
330337
instance univ_add_subgroup : normal_add_subgroup (@univ α) :=
331338
multiplicative.normal_subgroup_iff.1 is_subgroup.univ_subgroup
332339
attribute [to_additive is_add_subgroup.univ_add_subgroup] is_subgroup.univ_subgroup
@@ -438,3 +445,54 @@ instance (s : set α) [is_subgroup s] : is_group_hom (subtype.val : s → α) :=
438445
⟨λ _ _, rfl⟩
439446

440447
end is_group_hom
448+
449+
section simple_group
450+
451+
class simple_group (α : Type*) [group α] : Prop :=
452+
(simple : ∀ (N : set α) [normal_subgroup N], N = is_subgroup.trivial α ∨ N = set.univ)
453+
454+
class simple_add_group (α : Type*) [add_group α] : Prop :=
455+
(simple : ∀ (N : set α) [normal_add_subgroup N], N = is_add_subgroup.trivial α ∨ N = set.univ)
456+
457+
attribute [to_additive simple_add_group] simple_group
458+
459+
theorem additive.simple_add_group_iff [group α] :
460+
simple_add_group (additive α) ↔ simple_group α :=
461+
⟨λ hs, ⟨λ N h, @simple_add_group.simple _ _ hs _ (by exactI additive.normal_add_subgroup_iff.2 h)⟩,
462+
λ hs, ⟨λ N h, @simple_group.simple _ _ hs _ (by exactI additive.normal_add_subgroup_iff.1 h)⟩⟩
463+
464+
instance additive.simple_add_group [group α] [simple_group α] :
465+
simple_add_group (additive α) := additive.simple_add_group_iff.2 (by apply_instance)
466+
467+
theorem multiplicative.simple_group_iff [add_group α] :
468+
simple_group (multiplicative α) ↔ simple_add_group α :=
469+
⟨λ hs, ⟨λ N h, @simple_group.simple _ _ hs _ (by exactI multiplicative.normal_subgroup_iff.2 h)⟩,
470+
λ hs, ⟨λ N h, @simple_add_group.simple _ _ hs _ (by exactI multiplicative.normal_subgroup_iff.1 h)⟩⟩
471+
472+
instance multiplicative.simple_group [add_group α] [simple_add_group α] :
473+
simple_group (multiplicative α) := multiplicative.simple_group_iff.2 (by apply_instance)
474+
475+
lemma simple_group_of_surjective [group α] [group β] [simple_group α] (f : α → β)
476+
[is_group_hom f] (hf : function.surjective f) : simple_group β :=
477+
⟨λ H iH, have normal_subgroup (f ⁻¹' H), by resetI; apply_instance,
478+
begin
479+
resetI,
480+
cases simple_group.simple (f ⁻¹' H) with h h,
481+
{ refine or.inl (is_subgroup.eq_trivial_iff.2 (λ x hx, _)),
482+
cases hf x with y hy,
483+
rw ← hy at hx,
484+
rw [← hy, is_subgroup.eq_trivial_iff.1 h y hx, is_group_hom.one f] },
485+
{ refine or.inr (set.eq_univ_of_forall (λ x, _)),
486+
cases hf x with y hy,
487+
rw set.eq_univ_iff_forall at h,
488+
rw ← hy,
489+
exact h y }
490+
end
491+
492+
lemma simple_add_group_of_surjective [add_group α] [add_group β] [simple_add_group α] (f : α → β)
493+
[is_add_group_hom f] (hf : function.surjective f) : simple_add_group β :=
494+
multiplicative.simple_group_iff.1 (@simple_group_of_surjective (multiplicative α) (multiplicative β) _ _ _ f _ hf)
495+
496+
attribute [to_additive simple_add_group_of_surjective] simple_group_of_surjective
497+
498+
end simple_group

0 commit comments

Comments
 (0)