ProCGroups/NormalSubgroups/SimpleQuotients/Compactness.lean

1import ProCGroups.NormalSubgroups.SimpleQuotients.FiniteIntersections
3/-
4PUBLIC_PAGE_SNAPSHOT
5generated_at: 2026-05-27T09:47:29+09:00
6lean_source: lean4/ProCGroups/NormalSubgroups/SimpleQuotients/Compactness.lean
7translation_root: data/translation
8purpose: identifies the local data snapshot used to build pages/
9placement: after imports, never before imports
10-/
11/-!
12# Closed normal subgroups and simple quotients
14Develops normal-subgroup frameworks, maximal intersections, simple quotient ranks, compactness arguments, and algebraic comparison theorems.
15-/
17namespace ProCGroups.NormalSubgroups
19universe u
21/-- Compactness step: if the closed normal subgroups satisfying `M โŠ” K = โŠค`
22are already stable under finite intersections, then they are stable under arbitrary
23intersections. -/
25 {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G] [CompactSpace G]
26 (K : Subgroup G) [K.Normal] (hKclosed : IsClosed (K : Set G))
27 (๐“œ : Set (Subgroup G))
28 (hMclosed : โˆ€ M โˆˆ ๐“œ, IsClosed (M : Set G))
29 (hfinite :
30 โˆ€ S : Set (Subgroup G), S.Finite โ†’ S โІ ๐“œ โ†’ sInf S โŠ” K = โŠค) :
31 sInf ๐“œ โŠ” K = โŠค := by
32 rw [eq_top_iff]
33 intro g _
34 by_cases h๐“œ : ๐“œ.Nonempty
35 ยท rcases h๐“œ with โŸจMโ‚€, hMโ‚€โŸฉ
36 let coset : Set G := {x | gโปยน * x โˆˆ K}
37 let I := {M : Subgroup G // M โˆˆ ๐“œ}
38 let F : I โ†’ Set G := fun i => (i.1 : Set G) โˆฉ coset
39 have hcosetClosed : IsClosed coset := by
40 simpa [coset] using hKclosed.preimage (continuous_mul_left gโปยน)
41 have hclosed : โˆ€ i : I, IsClosed (F i) := by
42 intro i
43 exact (hMclosed i.1 i.2).inter hcosetClosed
44 have hfiniteNonempty : โˆ€ s : Finset I, (โ‹‚ i โˆˆ s, F i).Nonempty := by
45 intro s
46 let S : Set (Subgroup G) := (fun i : I => i.1) '' (s : Set _)
47 have hSfinite : S.Finite := s.finite_toSet.image _
48 have hSsub : S โІ ๐“œ := by
49 rintro M โŸจi, _hi, rflโŸฉ
50 exact i.2
51 have htop : sInf S โŠ” K = โŠค := hfinite S hSfinite hSsub
52 have hgmem : g โˆˆ sInf S โŠ” K := by
53 rw [htop]
54 exact Subgroup.mem_top g
55 rcases (Subgroup.mem_sup_of_normal_right (s := sInf S) (t := K) (x := g)).1 hgmem with
56 โŸจl, hlS, k, hk, hlkโŸฉ
57 refine โŸจl, ?_โŸฉ
58 simp only [Set.mem_iInter]
59 intro i hi
60 constructor
61 ยท exact (Subgroup.mem_sInf.mp hlS) i.1 โŸจi, hi, rflโŸฉ
62 ยท have hg : g = l * k := hlk.symm
63 have : gโปยน * l = kโปยน := by
64 rw [hg]
65 simp only [mul_inv_rev, mul_assoc, inv_mul_cancel, mul_one]
66 change gโปยน * l โˆˆ K
67 rw [this]
68 exact K.inv_mem hk
69 rcases CompactSpace.iInter_nonempty (t := F) hclosed hfiniteNonempty with โŸจx, hxโŸฉ
70 have hxall : โˆ€ i : I, x โˆˆ F i := by
71 simpa [F] using hx
72 have hxL : x โˆˆ sInf ๐“œ := by
73 rw [Subgroup.mem_sInf]
74 intro M hM
75 exact (hxall โŸจM, hMโŸฉ).1
76 have hxK : gโปยน * x โˆˆ K := (hxall โŸจMโ‚€, hMโ‚€โŸฉ).2
77 have hxmem : x * (gโปยน * x)โปยน โˆˆ sInf ๐“œ โŠ” K :=
78 Subgroup.mul_mem_sup hxL (K.inv_mem hxK)
79 simpa [mul_assoc] using hxmem
80 ยท have h๐“œ_empty : ๐“œ = โˆ… := Set.not_nonempty_iff_eq_empty.mp h๐“œ
81 have htop : sInf ๐“œ = โŠค := by
82 rw [h๐“œ_empty, sInf_empty]
83 simp only [htop, le_top, sup_of_le_left, Subgroup.mem_top]
85/-- Maximal open normal subgroups with a fixed nonabelian simple quotient are
86closed under arbitrary intersections. -/
88 {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G] [CompactSpace G]
89 (K : Subgroup G) [K.Normal] [IsSimpleGroup (G โงธ K)]
90 (hquotNoncomm : ProCGroups.IsNoncommutativeGroup (G โงธ K))
91 (hKclosed : IsClosed (K : Set G))
92 (๐“œ : Set (Subgroup G))
93 (hMnormal : โˆ€ M โˆˆ ๐“œ, M.Normal)
94 (hMclosed : โˆ€ M โˆˆ ๐“œ, IsClosed (M : Set G))
95 (hMtop : โˆ€ M โˆˆ ๐“œ, M โŠ” K = โŠค) :
96 sInf ๐“œ โŠ” K = โŠค :=
98 (fun _S hSfinite hSsub =>
100 (fun M hM => hMnormal M (hSsub hM))
101 (fun M hM => hMtop M (hSsub hM)))
103end ProCGroups.NormalSubgroups