ProCGroups.CompletedGroupAlgebra.ProfiniteModules.Basic.OpenSubmodule
This file constructs open submodules inside identity neighborhoods using scalar multiples of open additive subgroups. It proves the resulting linear topology and the finiteness and discreteness of open-submodule quotients.
imports
- Mathlib.Topology.Algebra.LinearTopology
- ProCGroups.CompletedGroupAlgebra.ProfiniteModules.Basic.Definitions
theorem exists_openAddSubgroup_subset_open_nhds_zero
{M : Type v} [AddCommGroup M] [TopologicalSpace M] [IsTopologicalAddGroup M]
[CompactSpace M] [T2Space M] [TotallyDisconnectedSpace M]
{U : Set M} (hUopen : IsOpen U) (h0U : (0 : M) ∈ U) :
∃ H : OpenAddSubgroup M, (H : Set M) ⊆ UA compact Hausdorff totally disconnected additive group has arbitrarily small open additive subgroups at zero.
Show Lean proof
by
rcases ((nhds_basis_clopen (0 : M)).mem_iff.mp (hUopen.mem_nhds h0U)) with
⟨W, hW, hWU⟩
rcases IsTopologicalAddGroup.exist_openAddSubgroup_sub_clopen_nhds_of_zero hW.2 hW.1 with
⟨H, hH⟩
exact ⟨H, hH.trans hWU⟩
theorem exists_openAddSubgroup_forall_smul_mem
{Λ : Type u} {M : Type v} [Ring Λ] [TopologicalSpace Λ] [AddCommGroup M]
[TopologicalSpace M] [Module Λ M] [CompactSpace Λ] [IsTopologicalAddGroup M]
[CompactSpace M] [T2Space M] [TotallyDisconnectedSpace M] [ContinuousSMul Λ M]
(A : OpenAddSubgroup M) :
∃ V : OpenAddSubgroup M, ∀ lam : Λ, ∀ v : M, v ∈ V → lam • v ∈ AAround zero there is an open additive subgroup whose scalar multiples all land in a given open additive subgroup.
Show Lean proof
by
let T : Set (Λ × M) := {p | p.1 • p.2 ∈ (A : Set M)}
have hTopen : IsOpen T := by
exact (OpenAddSubgroup.isOpen A).preimage continuous_smul
have hcontains : (Set.univ : Set Λ) ×ˢ ({0} : Set M) ⊆ T := by
rintro ⟨lam, m⟩ ⟨_hlam, hm⟩
rw [Set.mem_singleton_iff] at hm
change m = 0 at hm
change lam • m ∈ A
rw [hm]
simp only [smul_zero, zero_mem]
rcases generalized_tube_lemma (s := (Set.univ : Set Λ)) isCompact_univ
(t := ({0} : Set M)) isCompact_singleton hTopen hcontains with
⟨_W, V, _hWopen, hVopen, hWuniv, h0V, hWV⟩
have hzeroV : (0 : M) ∈ V := h0V (by simp only [Set.mem_singleton_iff])
rcases exists_openAddSubgroup_subset_open_nhds_zero hVopen hzeroV with ⟨H, hH⟩
refine ⟨H, ?_⟩
intro lam v hv
change (lam, v) ∈ T
exact hWV ⟨hWuniv trivial, hH hv⟩
def submoduleGeneratedByScalarMultiples
(Λ : Type u) (M : Type v) [Ring Λ] [AddCommGroup M] [Module Λ M]
(V : AddSubgroup M) : Submodule Λ M where
carrier := AddSubgroup.closure {x : M | ∃ lam : Λ, ∃ v : M, v ∈ V ∧ x = lam • v}
zero_mem' := by
exact AddSubgroup.zero_mem _
add_mem' := by
intro x y hx hy
exact AddSubgroup.add_mem _ hx hy
smul_mem' := by
intro lam x hx
change lam • x ∈
AddSubgroup.closure {x : M | ∃ mu : Λ, ∃ v : M, v ∈ V ∧ x = mu • v}
induction hx using AddSubgroup.closure_induction with
| mem y hy =>
rcases hy with ⟨mu, v, hv, rfl⟩
exact AddSubgroup.subset_closure ⟨lam * mu, v, hv, by simp only [mul_smul]⟩
| zero =>
simp only [smul_zero, zero_mem]
| add x y _ _ hx hy =>
simpa [smul_add] using AddSubgroup.add_mem _ hx hy
| neg x _ hx =>
simpa using AddSubgroup.neg_mem _ hxThe submodule generated by all scalar multiples of an open additive subgroup.
theorem submoduleGeneratedByScalarMultiples_open
(Λ : Type u) (M : Type v) [Ring Λ] [AddCommGroup M] [TopologicalSpace M]
[Module Λ M] [ContinuousAdd M] (V : OpenAddSubgroup M) :
IsOpen (submoduleGeneratedByScalarMultiples Λ M V : Set M)The submodule generated by scalar multiples of an open additive subgroup is open.
Show Lean proof
by
let N := submoduleGeneratedByScalarMultiples Λ M V
have hVsub : (V : Set M) ⊆ (N : Set M) := by
intro v hv
exact AddSubgroup.subset_closure ⟨1, v, hv, by simp only [one_smul]⟩
exact N.toAddSubgroup.isOpen_of_mem_nhds
(Filter.mem_of_superset ((OpenAddSubgroup.isOpen V).mem_nhds (zero_mem V)) hVsub)
theorem submoduleGeneratedByScalarMultiples_subset
(Λ : Type u) (M : Type v) [Ring Λ] [AddCommGroup M] [Module Λ M]
(V A : AddSubgroup M)
(hVA : ∀ lam : Λ, ∀ v : M, v ∈ V → lam • v ∈ A) :
(submoduleGeneratedByScalarMultiples Λ M V : Set M) ⊆ (A : Set M)Bounds on every generator imply the corresponding bound on the scalar-multiple generated submodule.
Show Lean proof
by
intro x hx
change x ∈ A
induction hx using AddSubgroup.closure_induction with
| mem y hy =>
rcases hy with ⟨lam, v, hv, rfl⟩
exact hVA lam v hv
| zero =>
exact zero_mem A
| add x y _ _ hx hy =>
exact AddSubgroup.add_mem A hx hy
| neg x _ hx =>
exact AddSubgroup.neg_mem A hx
theorem profiniteModule_isLinearTopology
(Λ : Type u) (M : Type v) [Ring Λ] [TopologicalSpace Λ] [AddCommGroup M]
[TopologicalSpace M] [Module Λ M] [IsTopologicalRing Λ] [CompactSpace Λ]
[IsTopologicalAddGroup M] [ContinuousSMul Λ M] [CompactSpace M] [T2Space M]
[TotallyDisconnectedSpace M] :
IsLinearTopology Λ MIn Lemma 5.1.1(b), linear-topology part, the topology of a profinite module is linear.
Show Lean proof
by
letI : ContinuousAdd M := inferInstance
rw [isLinearTopology_iff_hasBasis_open_submodule]
refine Filter.hasBasis_iff.mpr ?_
intro U
constructor
· intro hU
rcases mem_nhds_iff.mp hU with ⟨O, hOU, hOopen, h0O⟩
rcases exists_openAddSubgroup_subset_open_nhds_zero hOopen h0O with ⟨A, hAO⟩
rcases exists_openAddSubgroup_forall_smul_mem (Λ := Λ) A with ⟨V, hV⟩
let N := submoduleGeneratedByScalarMultiples Λ M V.toAddSubgroup
have hNopen : IsOpen (N : Set M) :=
submoduleGeneratedByScalarMultiples_open Λ M V
have hNA : (N : Set M) ⊆ (A : Set M) :=
submoduleGeneratedByScalarMultiples_subset Λ M V.toAddSubgroup A.toAddSubgroup hV
exact ⟨N, hNopen, hNA.trans (hAO.trans hOU)⟩
· rintro ⟨N, hNopen, hNU⟩
exact Filter.mem_of_superset (hNopen.mem_nhds (zero_mem N)) hNU
theorem finite_quotient_of_openSubmodule
(Λ : Type u) (M : Type v) [Ring Λ] [TopologicalSpace Λ] [AddCommGroup M]
[TopologicalSpace M] [Module Λ M] [IsTopologicalAddGroup M] [CompactSpace M]
(N : Submodule Λ M) (hN : IsOpen (N : Set M)) :
Nonempty (Fintype (M ⧸ N))An open submodule of a compact topological additive group has finite quotient. This is the finite-quotient step used in Lemma 5.1.1(b).
Show Lean proof
by
letI : ContinuousAdd M := inferInstance
haveI : Finite (M ⧸ N) :=
AddSubgroup.quotient_finite_of_isOpen N.toAddSubgroup hN
exact ⟨Fintype.ofFinite (M ⧸ N)⟩
theorem quotient_openSubmodule_isDiscreteModule
(Λ : Type u) (M : Type v) [Ring Λ] [TopologicalSpace Λ] [AddCommGroup M]
[TopologicalSpace M] [Module Λ M] [IsTopologicalRing Λ]
[IsTopologicalAddGroup M] [ContinuousSMul Λ M]
(N : Submodule Λ M) (hN : IsOpen (N : Set M)) :
IsDiscreteModule Λ (M ⧸ N)The quotient by an open submodule is a discrete topological module.
Show Lean proof
by
letI : ContinuousAdd M := inferInstance
haveI : DiscreteTopology (M ⧸ N) :=
QuotientAddGroup.discreteTopology (N := N.toAddSubgroup) hN
exact ⟨⟨inferInstance, inferInstance, inferInstance⟩, inferInstance⟩