ModuleQuotientGeneratorConvergingPairs.lean
Nyll.ProCGroups.Generation.QuotientGeneratorConvergingPairs
35 declarations indexed from sourceView source ↗ Module documentation
Converging generators constructed through quotient refinements
QuotientGeneratorConvergingPair records a convergent generating family in a closed-normal quotient together with coherent refinement maps. Chain upper bounds and strict extensions feed a maximality argument producing generators converging to one; the final results transport this property and the resulting topological rank across surjections and continuous equivalences.
Declarations
ProCGroups.Generation.QuotientGeneratorConvergingPair
DocumentationA quotient generator converging pair records compatible source and quotient generator data.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
ProCGroups.Generation.QuotientGeneratorConvergingPair.sourceSet
DocumentationThe source set is the set of generators carried by the quotient generator pair.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.Source
DocumentationThe source of a quotient generator-converging pair consists of the original group, index data, and generator family before passage to the quotient.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.instTopologicalSpaceQuotientGeneratorConvergingPairSource
DocumentationThe constructed object carries the topological space structure inherited from its construction.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.sourceOne
DocumentationThe identity element belongs to the source data of the quotient generator pair.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.sourceOfY
DocumentationThe source of the selected generator is the source specified by the quotient generator pair.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.source_cases
DocumentationEvery source element of a quotient generator pair is either the distinguished identity source or comes from an element of the generator set.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.yImage
DocumentationThe image of the distinguished generator set of one quotient generator pair under a chosen source map into another quotient.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.Le
DocumentationThis relation orders quotient generator pairs by refinement of their quotient data.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.instLEQuotientGeneratorConvergingPair
DocumentationThe order relation is the refinement relation on the corresponding data.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.instPreorderQuotientGeneratorConvergingPair
DocumentationThe preorder is induced by refinement of the corresponding data.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
Lean source · full declarationinstance instPreorderQuotientGeneratorConvergingPair :
Preorder (QuotientGeneratorConvergingPair (G := G)) where
le_refl A := by
refine ⟨le_rfl, Subtype.val, ?_, ?_, rfl, ?_, ?_⟩
· change Continuous (fun x : A.Source => (x : G ⧸ A.N))
exact continuous_subtype_val
· intro q
simp only [leftQuotientProjection_id, id_eq]
· intro y
simp only [QuotientGeneratorConvergingPair.sourceOfY, Subtype.coe_prop]
· simp only [QuotientGeneratorConvergingPair.yImage, QuotientGeneratorConvergingPair.sourceOfY,
Subtype.range_coe_subtype, ofPred_mem_eq, sdiff_self, leftQuotientProjection_id, id_eq,
ofPred_eq_eq_singleton, subset_singleton_iff, mem_empty_iff_false, IsEmpty.forall_iff,
implies_true]
le_trans A B C hAB hBC := by
classical
rcases hAB with ⟨hBA, σAB, hσABcont, hσABright, hσABone, hσABmem, hσABdiff⟩
rcases hBC with ⟨hCB, σBC, hσBCcont, hσBCright, hσBCone, hσBCmem, hσBCdiff⟩
let τ : A.Source → B.Source := fun x =>
⟨σAB x, by
rcases A.source_cases x with h1 | ⟨y, rfl⟩
· rw [h1]
exact Or.inl hσABone
· exact Or.inr (hσABmem y)⟩
have hτcont : Continuous τ := by
exact hσABcont.subtype_mk <| by
intro x
rcases A.source_cases x with h1 | ⟨y, rfl⟩
· rw [h1]
exact Or.inl hσABone
· exact Or.inr (hσABmem y)
have hτone : τ A.sourceOne = B.sourceOne := by
apply Subtype.ext
exact hσABone
have hτofY (y : A.Y) :
τ (A.sourceOfY y) = B.sourceOfY ⟨σAB (A.sourceOfY y), hσABmem y⟩ := by
apply Subtype.ext
rfl
have hEqBC :
∀ (y : B.Y) {q : G ⧸ C.N},
q ∈ C.Y →
leftQuotientProjection (C.N) (B.N) hCB q = y.1 →
q = σBC (B.sourceOfY y) := by
intro y q hqY hqproj
by_cases hqim : q ∈ B.yImage C σBC
· rcases hqim with ⟨y', hy'Eq⟩
have hproj' :
leftQuotientProjection (C.N) (B.N) hCB q = y'.1 := by
calc
leftQuotientProjection (C.N) (B.N) hCB q =
leftQuotientProjection (C.N) (B.N) hCB
(σBC (B.sourceOfY y')) := congrArg
(leftQuotientProjection (C.N) (B.N) hCB) hy'Eq.symm
_ = y'.1 := by
exact hσBCright (B.sourceOfY y')
have hyEq : y' = y := by
apply Subtype.ext
exact hproj'.symm.trans hqproj
simpa [hyEq] using hy'Eq.symm
· have hker :
leftQuotientProjection (C.N) (B.N) hCB q = 1 := hσBCdiff ⟨hqY, hqim⟩
have hyne : y.1 ≠ 1 := by
simpa using B.subset_compl y.2
exact False.elim (hyne (hqproj.symm.trans hker))
refine ⟨hCB.trans hBA, fun x => σBC (τ x), hσBCcont.comp hτcont, ?_, ?_, ?_, ?_⟩
· intro x
calc
leftQuotientProjection (C.N) (A.N) (hCB.trans hBA) (σBC (τ x)) =
leftQuotientProjection (B.N) (A.N) hBA
(leftQuotientProjection (C.N) (B.N) hCB (σBC (τ x))) := by
exact leftQuotientProjection_comp_apply_symm
(K := (C.N : Subgroup G)) (H := (B.N : Subgroup G))
(L := (A.N : Subgroup G)) hCB hBA (σBC (τ x))
_ = leftQuotientProjection (B.N) (A.N) hBA ((τ x).1) := by
rw [hσBCright (τ x)]
_ = leftQuotientProjection (B.N) (A.N) hBA (σAB x) := by
rfl
_ = x.1 := hσABright x
· simpa [hτone] using hσBCone
· intro y
let yB : B.Y := ⟨σAB (A.sourceOfY y), hσABmem y⟩
simpa [hτofY, yB] using hσBCmem yB
· intro q hq
rcases hq with ⟨hqY, hqnotAC⟩
by_cases hqimB : q ∈ B.yImage C σBC
· rcases hqimB with ⟨z, hzEq⟩
have hzNotInA : z.1 ∉ A.yImage B σAB := by
intro hzInA
rcases hzInA with ⟨y, hyEq⟩
let yB : B.Y := ⟨σAB (A.sourceOfY y), hσABmem y⟩
have hprojqz :
leftQuotientProjection (C.N) (B.N) hCB q = z.1 := by
calc
leftQuotientProjection (C.N) (B.N) hCB q =
leftQuotientProjection (C.N) (B.N) hCB
(σBC (B.sourceOfY z)) := congrArg
(leftQuotientProjection (C.N) (B.N) hCB) hzEq.symm
_ = z.1 := by
exact hσBCright (B.sourceOfY z)
have hprojq :
leftQuotientProjection (C.N) (B.N) hCB q = yB.1 := by
calc
leftQuotientProjection (C.N) (B.N) hCB q = z.1 := hprojqz
_ = yB.1 := by
simpa [yB] using hyEq.symm
have hqEq : q = σBC (B.sourceOfY yB) := hEqBC yB hqY hprojq
have hqInAC : q ∈ A.yImage C (fun x => σBC (τ x)) := by
refine ⟨y, ?_⟩
simpa [hτofY] using hqEq.symm
exact hqnotAC hqInAC
have hzProjA :
leftQuotientProjection (B.N) (A.N) hBA z.1 = 1 :=
hσABdiff ⟨z.2, hzNotInA⟩
have hprojqB :
leftQuotientProjection (C.N) (B.N) hCB q = z.1 := by
calc
leftQuotientProjection (C.N) (B.N) hCB q =
leftQuotientProjection (C.N) (B.N) hCB
(σBC (B.sourceOfY z)) := congrArg
(leftQuotientProjection (C.N) (B.N) hCB) hzEq.symm
_ = z.1 := by
exact hσBCright (B.sourceOfY z)
calc
leftQuotientProjection (C.N) (A.N) (hCB.trans hBA) q =
leftQuotientProjection (B.N) (A.N) hBA
(leftQuotientProjection (C.N) (B.N) hCB q) := by
exact leftQuotientProjection_comp_apply_symm
(K := (C.N : Subgroup G)) (H := (B.N : Subgroup G))
(L := (A.N : Subgroup G)) hCB hBA q
_ = leftQuotientProjection (B.N) (A.N) hBA z.1 := by
rw [hprojqB]
_ = 1 := hzProjA
· have hprojqB :
leftQuotientProjection (C.N) (B.N) hCB q = 1 := hσBCdiff ⟨hqY, hqimB⟩
calc
leftQuotientProjection (C.N) (A.N) (hCB.trans hBA) q =
leftQuotientProjection (B.N) (A.N) hBA
(leftQuotientProjection (C.N) (B.N) hCB q) := by
exact leftQuotientProjection_comp_apply_symm
(K := (C.N : Subgroup G)) (H := (B.N : Subgroup G))
(L := (A.N : Subgroup G)) hCB hBA q
_ = leftQuotientProjection (B.N) (A.N) hBA 1 := by
rw [hprojqB]
_ = 1 := by
rfl
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_hBA
DocumentationThe refinement relation includes the required compatibility between the source and target quotient data.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
noncomputable section
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_map
DocumentationThe refinement relation provides the induced map between quotient generator pairs.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_map_continuous
DocumentationFor a refinement of quotient generator pairs, the chosen lift map between source sets is continuous.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_map_right
DocumentationThe quotient generator pair is compatible with the specified quotient map.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_map_one
DocumentationA refinement map sends the distinguished source element over 1 to the identity.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_map_mem
DocumentationUnder a refinement, the chosen lift map sends every distinguished generator of the smaller pair into the distinguished set of the larger pair.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_map_diff
DocumentationElements of the larger distinguished set not in the lifted image project to the identity in the smaller quotient.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.eq_le_map_of_mem_of_proj_eq
DocumentationThe quotient generator comparison respects membership and projection equality.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.QuotientGeneratorConvergingPair.le_map_compat
DocumentationThe induced map between quotient generator pairs is compatible with refinement.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.ConvergesToOneAlongOpenSubgroups.range_subtype_pointed
DocumentationThe range subtype of a pointed map contains the chosen basepoint.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [T2Space G] in
ProCGroups.Generation.exists_quotientPair_le_openSubgroup_of_chain_iInf_le
DocumentationThe quotient generator-converging-pair construction is compatible with open-normal finite quotients and refinement maps.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [T2Space G] [TotallyDisconnectedSpace G] in
ProCGroups.Generation.quotientGeneratorPair_exists_liftToInf
DocumentationA chain of quotient generator pairs has a refinement lifting to the intersection of its kernels.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
omit [T2Space G] [TotallyDisconnectedSpace G] in
Lean source · full declarationtheorem quotientGeneratorPair_exists_liftToInf
{c : Set (QuotientGeneratorConvergingPair (G := G))}
(hc : IsChain (· ≤ ·) c) (a : c) :
let K : Subgroup G := iInf fun p : c => p.1.N
letI : K.Normal := Subgroup.normal_iInf_normal fun p : c => p.1.normal_N
∃ σ : a.1.Source → G ⧸ K,
Continuous σ ∧
(∀ b : c, ∀ hab : a.1 ≤ b.1,
leftQuotientProjection K b.1.N
(iInf_le (fun p : c => p.1.N) b) ∘ σ =
a.1.le_map hab) ∧
σ a.1.sourceOne = 1 := by
classical
intro K
have : K.Normal := Subgroup.normal_iInf_normal fun p : c => p.1.normal_N
let Tail := {b : c // a.1 ≤ b.1}
have : Nonempty Tail := ⟨⟨a, le_rfl⟩⟩
let L : Tail → ClosedSubgroup G := fun b =>
⟨b.1.1.N, b.1.1.closed_N⟩
have hL : ∀ {i j : Tail}, i ≤ j → (L j : Subgroup G) ≤ (L i : Subgroup G) := by
intro i j hij
exact QuotientGeneratorConvergingPair.le_hBA hij
have hdir : Directed (· ≤ ·) (id : Tail → Tail) := by
intro i j
by_cases hij : i ≤ j
· exact ⟨j, hij, le_rfl⟩
· have hji : j ≤ i := by
by_cases hEq : i = j
· exact hEq ▸ le_rfl
· rcases hc i.1.2 j.1.2 (by
intro h
exact hEq (Subtype.ext (Subtype.ext h))) with hij' | hji'
· exact False.elim (hij hij')
· exact hji'
exact ⟨i, le_rfl, hji⟩
let η : ∀ b : Tail, a.1.Source → G ⧸ (L b : Subgroup G) := fun b =>
a.1.le_map b.2
have hηcont : ∀ b : Tail, Continuous (η b) := by
intro b
exact a.1.le_map_continuous b.2
have hηcompat : ∀ {i j : Tail} (hij : i ≤ j),
leftQuotientProjection (L j : Subgroup G) (L i : Subgroup G) (hL hij) ∘ η j = η i := by
intro i j hij
funext x
rcases a.1.source_cases x with rfl | ⟨y, rfl⟩
· have h1j : η j a.1.sourceOne = 1 := by
change a.1.le_map j.2 a.1.sourceOne = 1
exact a.1.le_map_one j.2
have h1i : η i a.1.sourceOne = 1 := by
change a.1.le_map i.2 a.1.sourceOne = 1
exact a.1.le_map_one i.2
calc
(leftQuotientProjection (L j : Subgroup G) (L i : Subgroup G) (hL hij) ∘ η j)
a.1.sourceOne
= leftQuotientProjection (L j : Subgroup G) (L i : Subgroup G) (hL hij)
(η j a.1.sourceOne) := by
simp only [Function.comp]
_ = leftQuotientProjection (L j : Subgroup G) (L i : Subgroup G) (hL hij) 1 := by
rw [h1j]
_ = 1 := by rfl
_ = η i a.1.sourceOne := by rw [h1i]
· simpa [η] using a.1.le_map_compat i.2 j.2 hij y
have hηone : ∀ b : Tail, η b a.1.sourceOne = 1 := by
intro b
change a.1.le_map b.2 a.1.sourceOne = 1
exact a.1.le_map_one b.2
obtain ⟨ηinf, hηinf_continuous, hηinf_fac, hηinf_one⟩ :=
exists_continuous_leftQuotient_lift_of_directed
(G := G) L hL hdir η hηcont hηcompat a.1.sourceOne hηone
let H : Subgroup G := ((closedSubgroup_sInf L : ClosedSubgroup G) : Subgroup G)
have hKeq : H = K := by
apply le_antisymm
· refine le_iInf ?_
intro p
by_cases hap : a.1 ≤ p.1
· exact iInf_le (fun b : Tail => (L b : Subgroup G)) ⟨p, hap⟩
· have hKa :
H ≤ a.1.N :=
iInf_le (fun b : Tail => (L b : Subgroup G)) ⟨a, le_rfl⟩
by_cases hEq : p = a
· simpa [K, hEq] using hKa
· rcases hc p.2 a.2 (by
intro h
exact hEq (Subtype.ext h)) with hpa | hap'
· exact hKa.trans (QuotientGeneratorConvergingPair.le_hBA hpa)
· exact False.elim (hap hap')
· refine le_iInf ?_
intro b
exact iInf_le (fun p : c => p.1.N) b.1
have : H.Normal := by
exact Subgroup.normal_iInf_normal fun b : Tail => b.1.1.normal_N
have hGoal :
∃ σ : a.1.Source → G ⧸ H,
Continuous σ ∧
(∀ b : c, ∀ hab : a.1 ≤ b.1,
leftQuotientProjection H b.1.N
(closedSubgroup_sInf_le (L := L) ⟨b, hab⟩) ∘ σ =
a.1.le_map hab) ∧
σ a.1.sourceOne = 1 := by
refine ⟨ηinf, hηinf_continuous, ?_, hηinf_one⟩
intro b hab
simpa [Tail, L, η] using hηinf_fac ⟨b, hab⟩
have hGoal' :
∃ σ : a.1.Source → G ⧸ H,
Continuous σ ∧
(∀ b : c, ∀ hab : a.1 ≤ b.1,
leftQuotientProjection H b.1.N
(hKeq.trans_le (iInf_le (fun p : c => p.1.N) b)) ∘ σ =
a.1.le_map hab) ∧
σ a.1.sourceOne = 1 := by
rcases hGoal with ⟨σ, hσcont, hσfac, hσone⟩
refine ⟨σ, hσcont, ?_, hσone⟩
intro b hab
simpa using hσfac b hab
change
∃ σ : a.1.Source → G ⧸ K,
Continuous σ ∧
(∀ b : c, ∀ hab : a.1 ≤ b.1,
leftQuotientProjection K b.1.N
(iInf_le (fun p : c => p.1.N) b) ∘ σ =
a.1.le_map hab) ∧
σ a.1.sourceOne = 1
let Data : Type _ := { J : Subgroup G // J.Normal ∧ ∀ b : c, J ≤ b.1.N }
let P : Data → Prop := fun d =>
letI : d.1.Normal := d.2.1
∃ σ : a.1.Source → G ⧸ d.1,
Continuous σ ∧
(∀ b : c, ∀ hab : a.1 ≤ b.1,
leftQuotientProjection d.1 b.1.N (d.2.2 b) ∘ σ =
a.1.le_map hab) ∧
σ a.1.sourceOne = 1
let dH : Data :=
⟨H, ⟨inferInstance, fun b => hKeq.trans_le (iInf_le (fun p : c => p.1.N) b)⟩⟩
let dK : Data :=
⟨K, ⟨inferInstance, fun b => iInf_le (fun p : c => p.1.N) b⟩⟩
have hd : dH = dK := by
apply Subtype.ext
exact hKeq
have hPdH : P dH := by
simpa [P, dH] using hGoal'
have hPdK : P dK := by
exact Eq.mp (congrArg P hd) hPdH
simpa [P, dK] using hPdK
ProCGroups.Generation.quotientGeneratorPairTop
DocumentationThe top quotient generator pair is the maximal object in the quotient-generator construction.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.quotientGeneratorPair_exists_strictExtension
DocumentationA nonmaximal quotient generator pair admits a strict extension refining its quotient data.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.closedNormalQuotientSection_bot_eq
DocumentationThe closed-normal quotient section at the bottom subgroup is the identity section.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.toAmbientSet
DocumentationThe quotient generator pair maps its source set into the ambient generating set.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.QuotientGeneratorConvergingPair.toAmbientSet_generatesAndConvergesToOneAlongOpenSubgroups
DocumentationThe ambient representatives attached to a quotient generator pair topologically generate and converge to one.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Proposition244
attribute [instance] QuotientGeneratorConvergingPair.normal_N
ProCGroups.Generation.quotientGeneratorPair_exists_upperBound_of_chain
DocumentationEvery nonempty chain of quotient generator pairs has an upper bound.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Generators
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
ProCGroups.Generation.exists_generatorsConvergingToOne
Documentation4.4. Existence theorem used by the public theorem.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Generators
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
ProCGroups.Generation.GeneratesAndConvergesToOneAlongOpenSubgroups.image_of_continuousSurjective
DocumentationA surjective continuous homomorphism preserves generating sets converging to 1.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Generators
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [T2Space G] in
ProCGroups.Generation.GeneratesAndConvergesToOneAlongOpenSubgroups.image_of_continuousMulEquiv
DocumentationA continuous multiplicative equivalence preserves generating sets converging to 1.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Generators
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [T2Space G] in
ProCGroups.Generation.ConvergesToOneAlongOpenSubgroups.image_of_continuousMulEquiv_iff
DocumentationA continuous multiplicative equivalence preserves and reflects convergence to 1.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Generators
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [T2Space G] in
ProCGroups.Generation.GeneratesAndConvergesToOneAlongOpenSubgroups.image_of_continuousMulEquiv_iff
DocumentationA continuous multiplicative equivalence preserves and reflects the combined predicate.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Generators
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [T2Space G] in
ProCGroups.Generation.topologicalRank_eq_of_continuousMulEquiv
DocumentationTopological rank is invariant under continuous multiplicative equivalence.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open Set
open scoped Topology Pointwise
namespace ProCGroups.Generation
universe u v
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
section Generators
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G] in