ProCGroups.FreeProC.Characterization.InverseLimitTowers

6 Theorem | 4 Definition | 1 Abbreviation | 2 Structure | 5 Instance

This module supplies the topological part of the construction. It checks continuity and stagewise neighborhood properties so that the completed object inherits the required topology.

import
Imported by

Declarations

structure CountableSurjectiveFreeProCSystem
    (ProC : ProCGroups.ProC.ProCGroupPredicate) where
  stage : ℕ → FreeProCGroupOnConvergingSetData (ProC := ProC)
  transition :
    ∀ {m n : ℕ}, m ≤ n → (stage n).carrier →* (stage m).carrier
  continuous_transition :
    ∀ {m n : ℕ} (hmn : m ≤ n), Continuous (transition hmn)
  transition_id :
    ∀ n : ℕ, transition (le_rfl : n ≤ n) = MonoidHom.id (stage n).carrier
  transition_comp :
    ∀ {l m n : ℕ} (hlm : l ≤ m) (hmn : m ≤ n),
      (transition hlm).comp (transition hmn) = transition (hlm.trans hmn)
  surjective_transition :
    ∀ {m n : ℕ} (hmn : m ≤ n), Function.Surjective (transition hmn)

A countable surjective inverse system of free pro-\(C\) groups. This record stores the transition maps for all m \(\le\) n, together with the identity and composition laws. Its limit is the canonical subtype inverse limit supplied by InverseSystems.InverseSystem.

def bonding (T : CountableSurjectiveFreeProCSystem ProC) (n : ℕ) :
    (T.stage (n + 1)).carrier →* (T.stage n).carrier :=
  T.transition (Nat.le_succ n)

The adjacent bonding map in the countable system.

theorem continuous_bonding (T : CountableSurjectiveFreeProCSystem ProC) (n : ℕ) :
    Continuous (T.bonding n)

The bonding map in the countable free pro-\(C\) system is continuous.

Show proof
theorem surjective_bonding (T : CountableSurjectiveFreeProCSystem ProC) (n : ℕ) :
    Function.Surjective (T.bonding n)

The bonding maps in the countable surjective free pro-\(C\) system are surjective.

Show proof
def inverseSystem (T : CountableSurjectiveFreeProCSystem ProC) :
    InverseSystem (I := ℕ) where
  X := fun n => (T.stage n).carrier
  topologicalSpace := fun n => inferInstance
  map := fun {_m _n} hmn => T.transition hmn
  continuous_map := fun {_m _n} hmn => T.continuous_transition hmn
  map_id := by
    intro n
    funext x
    simpa using congrArg (fun f : (T.stage n).carrier →* (T.stage n).carrier => f x)
      (T.transition_id n)
  map_comp := by
    intro l m n hlm hmn
    funext x
    simpa [Function.comp, MonoidHom.comp_apply] using
      congrArg (fun f : (T.stage n).carrier →* (T.stage l).carrier => f x)
        (T.transition_comp hlm hmn)

The underlying inverse system associated to the countable tower data.

instance instGroupInverseSystemStage (T : CountableSurjectiveFreeProCSystem ProC)
    (n : ℕ) : Group (T.inverseSystem.X n) := by
  change Group (T.stage n).carrier
  infer_instance

The constructed carrier inherits its group structure from the coordinatewise group structure of the construction.

instance instIsTopologicalGroupInverseSystemStage (T : CountableSurjectiveFreeProCSystem ProC)
    (n : ℕ) : IsTopologicalGroup (T.inverseSystem.X n) := by
  change IsTopologicalGroup (T.stage n).carrier
  infer_instance

The object is a topological group with the induced group operations and topology.

def isGroupSystem (T : CountableSurjectiveFreeProCSystem ProC) :
    IsGroupSystem T.inverseSystem where
  map_one := by
    intro m n hmn
    exact (T.transition hmn).map_one
  map_mul := by
    intro m n hmn x y
    exact (T.transition hmn).map_mul x y
  map_inv := by
    intro m n hmn x
    exact (T.transition hmn).map_inv x

The free pro-\(C\) construction forms a group system satisfying the corresponding universal or quotient-level property.

abbrev limitCarrier (T : CountableSurjectiveFreeProCSystem ProC) : Type u :=
  T.inverseSystem.inverseLimit

The canonical inverse-limit carrier of a countable surjective free pro-\(C\) system.

instance instGroupLimitCarrier (T : CountableSurjectiveFreeProCSystem ProC) :
    Group T.limitCarrier := by
  letI : IsGroupSystem T.inverseSystem := T.isGroupSystem
  infer_instance

The constructed carrier inherits its group structure from the coordinatewise group structure of the construction.

instance instTopologicalSpaceLimitCarrier (T : CountableSurjectiveFreeProCSystem ProC) :
    TopologicalSpace T.limitCarrier := by
  infer_instance

The constructed object carries the topological space structure inherited from its construction.

instance instIsTopologicalGroupLimitCarrier (T : CountableSurjectiveFreeProCSystem ProC) :
    IsTopologicalGroup T.limitCarrier := by
  letI : IsGroupSystem T.inverseSystem := T.isGroupSystem
  infer_instance

The object is a topological group with the induced group operations and topology.

def projection (T : CountableSurjectiveFreeProCSystem ProC) (n : ℕ) :
    T.limitCarrier →* (T.stage n).carrier := by
  letI : IsGroupSystem T.inverseSystem := T.isGroupSystem
  exact projectionHom (S := T.inverseSystem) n

The canonical projection homomorphism from the inverse limit to a stage.

theorem continuous_projection (T : CountableSurjectiveFreeProCSystem ProC) (n : ℕ) :
    Continuous (T.projection n)

Each canonical projection from an inverse limit is continuous.

Show proof
theorem compatible (T : CountableSurjectiveFreeProCSystem ProC) (n : ℕ)
    (x : T.limitCarrier) :
    T.bonding n (T.projection (n + 1) x) = T.projection n x

The bonding maps in the countable surjective free pro-\(C\) system are compatible with the specified finite-quotient projections.

Show proof
theorem isInverseLimit_projection (T : CountableSurjectiveFreeProCSystem ProC) :
    T.inverseSystem.IsInverseLimit (fun n => T.projection n)

The canonical projection family satisfies the inverse-limit universal property.

Show proof
structure CountableSurjectiveSystemFreenessCriterion
    {ProC : ProCGroups.ProC.ProCGroupPredicate}
    (T : CountableSurjectiveFreeProCSystem ProC) : Prop where
  free_limit_of_countable_generating_family :
    Nonempty (ConvergingGeneratingMap ℕ T.limitCarrier) →
      ∃ Fdata : FreeProCGroupOnConvergingSetData (ProC := ProC),
        Nonempty (Fdata.carrier ≃ₜ* T.limitCarrier)

External freeness input for countable surjective inverse systems. The inverse-system data now determines the limit object itself; this criterion only records the additional mathematical input needed to identify that canonical limit as a free pro-\(C\) group.

theorem apply
    {ProC : ProCGroups.ProC.ProCGroupPredicate}
    (T : CountableSurjectiveFreeProCSystem ProC)
    (hcrit : CountableSurjectiveSystemFreenessCriterion T)
    (hcount : Nonempty (ConvergingGeneratingMap ℕ T.limitCarrier)) :
    ∃ Fdata : FreeProCGroupOnConvergingSetData (ProC := ProC),
      Nonempty (Fdata.carrier ≃ₜ* T.limitCarrier)

Apply the freeness criterion to the canonical inverse limit of a countable system.

Show proof