ProCGroups.ProC.Category.Basic
This module studies basic for pro cgroups. The category of pro-\(C\) groups for a fixed topological pro-\(C\) predicate. The category object coerces to its underlying type.
import
- Mathlib.Topology.Algebra.Category.ProfiniteGrp.Limits
- ProCGroups.ProC.Subgroups.Closed
- ProCGroups.Profinite.MathlibBridge
structure ProCGrp (ProC : ProCGroups.ProC.ProCGroupPredicate.{u}) where
/-- The underlying Mathlib profinite group. -/
toProfiniteGrp : ProfiniteGrp.{u}
/-- The pro-`C` structure on the underlying profinite group. -/The category of pro-\(C\) groups for a fixed topological pro-\(C\) predicate.
instance instCoeSort : CoeSort (ProCGrp ProC) (Type u) where
coe G := G.toProfiniteGrpThe category object coerces to its underlying type.
instance instGroup (G : ProCGrp ProC) : Group G :=
inferInstanceAs (Group G.toProfiniteGrp)The constructed carrier inherits its group structure from the coordinatewise group structure of the construction.
instance instTopologicalSpace (G : ProCGrp ProC) : TopologicalSpace G :=
inferInstanceAs (TopologicalSpace G.toProfiniteGrp)The constructed object carries the topological space structure inherited from its construction.
instance instIsTopologicalGroup (G : ProCGrp ProC) : IsTopologicalGroup G :=
inferInstanceAs (IsTopologicalGroup G.toProfiniteGrp)The object is a topological group with the induced group operations and topology.
instance instCompactSpace (G : ProCGrp ProC) : CompactSpace G :=
inferInstanceAs (CompactSpace G.toProfiniteGrp)The constructed object carries the compact space structure inherited from its profinite construction.
instance instT2Space (G : ProCGrp ProC) : T2Space G :=
inferInstanceAs (T2Space G.toProfiniteGrp)The constructed object is Hausdorff, with its \(T_2\) structure inherited from the profinite construction.
instance instTotallyDisconnectedSpace (G : ProCGrp ProC) : TotallyDisconnectedSpace G :=
inferInstanceAs (TotallyDisconnectedSpace G.toProfiniteGrp)The constructed object carries the totally disconnected space structure inherited from its profinite construction.
instance instProCGroup (G : ProCGrp ProC) : ProCGroups.ProC.ProCGroup ProC G :=
inferInstanceAs (ProCGroups.ProC.ProCGroup ProC G.toProfiniteGrp)The object satisfies the pro-\(C\) group condition.
abbrev of (ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
(G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[ProCGroups.ProC.ProCGroup ProC G] : ProCGrp ProC where
toProfiniteGrp := by
letI : CompactSpace G := ProCGroups.ProC.ProCGroup.compactSpace ProC G
letI : TotallyDisconnectedSpace G :=
ProCGroups.ProC.ProCGroup.totallyDisconnectedSpace ProC G
exact ProfiniteGrp.of G
proCGroup := inferInstanceThis declaration constructs a bundled pro-\(C\) group from an unbundled topological group with a pro-\(C\)-group instance.
@[simp] theorem coe_of (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[ProCGroups.ProC.ProCGroup ProC G] :
(of ProC G : Type u) = GThe carrier of the bundled pro-\(C\) group is the original type.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□instance instCategory : Category (ProCGrp ProC) where
Hom A B := Hom A B
id A := ⟨ContinuousMonoidHom.id A⟩
comp f g := ⟨g.hom'.comp f.hom'⟩Pro-\(C\) groups form a category.
instance instConcreteCategory : ConcreteCategory (ProCGrp ProC) (fun X Y => X →ₜ* Y) where
hom f := f.hom'
ofHom f := ⟨f⟩The category of pro-\(C\) groups has the concrete category structure inherited from its underlying type.
instance instCoeFunHom {A B : ProCGrp ProC} : CoeFun (A ⟶ B) (fun _ => A → B) where
coe f := f.homA morphism coerces to its underlying continuous homomorphism.
@[simp] theorem hom_id {A : ProCGrp ProC} :
(𝟙 A : A ⟶ A).hom = ContinuousMonoidHom.id AThe underlying homomorphism of the identity morphism is the identity continuous homomorphism.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[simp] theorem id_apply (A : ProCGrp ProC) (a : A) :
(𝟙 A : A ⟶ A) a = aThe map is evaluated on an element by its defining coordinate formula.
Show proof
by
simp only [hom_id, ContinuousMonoidHom.id_toFun]Proof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[simp] theorem hom_comp {A B C : ProCGrp ProC} (f : A ⟶ B) (g : B ⟶ C) :
(f ≫ g).hom = g.hom.comp f.homThe underlying homomorphism of a composite is the composite of underlying homomorphisms.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[simp] theorem comp_apply {A B C : ProCGrp ProC} (f : A ⟶ B) (g : B ⟶ C) (a : A) :
(f ≫ g) a = g (f a)The composite map is computed pointwise by applying the constituent coordinate formulas in succession.
Show proof
by
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[ext] theorem hom_ext {A B : ProCGrp ProC} {f g : A ⟶ B} (hf : f.hom = g.hom) :
f = gMorphisms in ProCGrp are equal when their underlying continuous homomorphisms are equal.
Show proof
Hom.ext hfProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□abbrev ofHom {X Y : Type u}
[Group X] [TopologicalSpace X] [IsTopologicalGroup X]
[ProCGroups.ProC.ProCGroup ProC X]
[Group Y] [TopologicalSpace Y] [IsTopologicalGroup Y]
[ProCGroups.ProC.ProCGroup ProC Y]
(f : X →ₜ* Y) : of ProC X ⟶ of ProC Y :=
ConcreteCategory.ofHom fBundle a continuous monoid homomorphism as a morphism in \(\mathrm{ProCGrp}\).
@[simp] theorem hom_ofHom {X Y : Type u}
[Group X] [TopologicalSpace X] [IsTopologicalGroup X]
[ProCGroups.ProC.ProCGroup ProC X]
[Group Y] [TopologicalSpace Y] [IsTopologicalGroup Y]
[ProCGroups.ProC.ProCGroup ProC Y]
(f : X →ₜ* Y) : (ofHom (ProC := ProC) f).hom = fThe \(\mathrm{ofHom}\) constructor has the prescribed underlying continuous homomorphism.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[simp] theorem ofHom_hom {A B : ProCGrp ProC} (f : A ⟶ B) :
ConcreteCategory.ofHom (C := ProCGrp ProC) f.hom = fReconstructing a morphism from its underlying continuous homomorphism gives the original morphism.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[simp] theorem ofHom_id {X : Type u}
[Group X] [TopologicalSpace X] [IsTopologicalGroup X]
[ProCGroups.ProC.ProCGroup ProC X] :
ofHom (ProC := ProC) (ContinuousMonoidHom.id X) = 𝟙 (of ProC X)\(\mathrm{ofHom}\) sends the identity continuous homomorphism to the identity morphism.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[simp] theorem ofHom_comp {X Y Z : Type u}
[Group X] [TopologicalSpace X] [IsTopologicalGroup X]
[ProCGroups.ProC.ProCGroup ProC X]
[Group Y] [TopologicalSpace Y] [IsTopologicalGroup Y]
[ProCGroups.ProC.ProCGroup ProC Y]
[Group Z] [TopologicalSpace Z] [IsTopologicalGroup Z]
[ProCGroups.ProC.ProCGroup ProC Z]
(f : X →ₜ* Y) (g : Y →ₜ* Z) :
ofHom (ProC := ProC) (g.comp f) = ofHom (ProC := ProC) f ≫ ofHom (ProC := ProC) g\(\mathrm{ofHom}\) sends composition of continuous homomorphisms to categorical composition.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□@[simp] theorem ofHom_apply {X Y : Type u}
[Group X] [TopologicalSpace X] [IsTopologicalGroup X]
[ProCGroups.ProC.ProCGroup ProC X]
[Group Y] [TopologicalSpace Y] [IsTopologicalGroup Y]
[ProCGroups.ProC.ProCGroup ProC Y]
(f : X →ₜ* Y) (x : X) :
ofHom (ProC := ProC) f x = f xThe bundled pro-\(C\) morphism \(\mathrm{ofHom}\) evaluates by applying the underlying continuous homomorphism.
Show proof
rflProof. Unfold the bundled pro-\(C\) category. Objects are profinite groups equipped with the fixed pro-\(C\) predicate, and morphisms are continuous homomorphisms. Identities and composition are inherited from continuous homomorphisms, continuity is preserved by identity and composition, and extensionality reduces morphism equality to equality of underlying maps. The forgetful functors and inherited topological structures are obtained from the underlying profinite group.
□instance instHasForgetToProfiniteGrp : HasForget₂ (ProCGrp ProC) ProfiniteGrp where
forget₂ :=
{ obj := fun G => G.toProfiniteGrp
map := fun f => ProfiniteGrp.ofHom f.hom }Forget a bundled pro-\(C\) group to its underlying profinite group.
instance instHasForgetToGrpCat : HasForget₂ (ProCGrp ProC) GrpCat where
forget₂ :=
{ obj := fun G => GrpCat.of G
map := fun f => GrpCat.ofHom f.hom.toMonoidHom }The forgetful functor to groups is available for pro-\(C\) groups.
instance instFaithfulForgetToProfiniteGrp : (forget₂ (ProCGrp ProC) ProfiniteGrp).Faithful where
map_injective := by
intro X Y f g h
ext x
exact CategoryTheory.congr_fun h xThe forgetful functor from pro-\(C\) groups to profinite groups is faithful.
instance allFiniteProCGroup (G : ProfiniteGrp.{u}) :
ProCGroups.ProC.ProCGroup ProCGroups.ProC.allFiniteProC G :=
ProCGroups.ProC.ProCGroup.of_isProCGroup ProCGroups.ProC.allFiniteProC G
(ProCGroups.ProC.allFiniteProC_isProCGroup_of_profinite
(ProCGroups.IsProfiniteGroup.of_profiniteGrp G))Every underlying profinite group is a pro-\(C\) group for the all-finite predicate.
def ofFiniteGrp
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientFormation] [ProC.DeterminedByFiniteQuotients]
(G : FiniteGrp.{u}) (hG : ProC.finiteQuotientClass G) : ProCGrp ProC := by
letI : TopologicalSpace G := ⊥
letI : DiscreteTopology G := ⟨rfl⟩
letI : IsTopologicalGroup G := inferInstance
letI : ProCGroups.ProC.ProCGroup ProC G :=
ProCGroups.ProC.ProCGroup.of_finite_discrete ProC hG
exact of ProC GA finite group in the finite quotient class \(C\), with the discrete topology, is a bundled pro-\(C\) group.
def ofClosedSubgroup
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientMelnikovFormation] [ProC.HasFiniteQuotientHereditary]
[ProC.DeterminedByFiniteQuotients]
(G : ProCGrp ProC) (H : ClosedSubgroup G) : ProCGrp ProC where
toProfiniteGrp := ProfiniteGrp.ofClosedSubgroup (G := G.toProfiniteGrp) H
proCGroup := by
simpa using
(ProCGroups.ProC.ProCGroup.of_closedSubgroup
(G := G) ProC H)Closed subgroups of pro-\(C\) groups are pro-\(C\).
noncomputable def ofContinuousMulEquiv
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientFormation] [ProC.DeterminedByFiniteQuotients]
(G : ProCGrp ProC) {H : Type u} [Group H] [TopologicalSpace H] [IsTopologicalGroup H]
(e : G ≃ₜ* H) : ProCGrp ProC := by
letI : ProCGroups.ProC.ProCGroup ProC H :=
ProCGroups.ProC.ProCGroup.ofContinuousMulEquiv (G := G) ProC e
exact of ProC HTransport a pro-\(C\) group structure across a continuous multiplicative equivalence.
def pi
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientFormation] [ProC.DeterminedByFiniteQuotients]
{α : Type u} (β : α → ProCGrp ProC) : ProCGrp ProC := by
let Pβ : α → ProfiniteGrp.{u} := fun a => (β a).toProfiniteGrp
letI : ProCGroups.ProC.ProCGroup ProC ((a : α) → β a) :=
ProCGroups.ProC.ProCGroup.pi (β := fun a => (β a : Type u)) ProC
exact
{ toProfiniteGrp := ProfiniteGrp.pi Pβ
proCGroup := by
simpa [Pβ, ProfiniteGrp.pi] using
(inferInstance : ProCGroups.ProC.ProCGroup ProC ((a : α) → β a)) }Products of pro-\(C\) groups are pro-\(C\) when the finite quotient class is a formation.
def quotientOpenNormalSubgroup
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientFormation] [ProC.DeterminedByFiniteQuotients]
(G : ProCGrp ProC) (U : OpenNormalSubgroup G) : ProCGrp ProC := by
letI : ProCGroups.ProC.ProCGroup ProC (G ⧸ (U : Subgroup G)) :=
ProCGroups.ProC.ProCGroup.quotient_openNormalSubgroup
(G := G) ProC U
exact of ProC (G ⧸ (U : Subgroup G))Quotients by open normal subgroups of pro-\(C\) groups are pro-\(C\).
def quotientOpenNormalSubgroupInClass
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientFormation] [ProC.DeterminedByFiniteQuotients]
(G : ProCGrp ProC)
(U : ProCGroups.ProC.OpenNormalSubgroupInClass ProC.finiteQuotientClass G) :
ProCGrp ProC :=
quotientOpenNormalSubgroup ProC G U.1Quotients by open normal subgroups from the finite-quotient class family are pro-\(C\).
def quotientClosedNormalSubgroup
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientMelnikovFormation] [ProC.DeterminedByFiniteQuotients]
(G : ProCGrp ProC) (K : Subgroup G) [K.Normal] (hK : IsClosed (K : Set G)) :
ProCGrp ProC := by
letI : ProCGroups.ProC.ProCGroup ProC (G ⧸ K) :=
ProCGroups.ProC.ProCGroup.quotient_closedNormalSubgroup
(G := G) ProC K hK
exact of ProC (G ⧸ K)Quotients by closed normal subgroups of pro-\(C\) groups are pro-\(C\).
def range
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientFormation] [ProC.DeterminedByFiniteQuotients]
{A B : ProCGrp ProC} (f : A ⟶ B) : ProCGrp ProC := by
letI : ProCGroups.ProC.ProCGroup ProC f.hom.toMonoidHom.range :=
ProCGroups.ProC.ProCGroup.range
(G := A) (H := B) ProC f.hom
exact of ProC f.hom.toMonoidHom.rangeThe range of a morphism of pro-\(C\) groups, with its induced topology, is pro-\(C\).
def kernel
(ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
[ProC.HasFiniteQuotientMelnikovFormation] [ProC.HasFiniteQuotientHereditary]
[ProC.DeterminedByFiniteQuotients]
{A B : ProCGrp ProC} (f : A ⟶ B) : ProCGrp ProC := by
let K : Subgroup A := f.hom.toMonoidHom.ker
have hK : IsClosed (K : Set A) := by
dsimp [K]
exact f.hom.isClosed_ker
letI : ProCGroups.ProC.ProCGroup ProC K :=
ProCGroups.ProC.ProCGroup.of_isClosed_subgroup
(G := A) ProC K hK
exact of ProC KThe kernel subgroup of a morphism of pro-\(C\) groups, with its induced topology, is pro-\(C\).