ProCGroups.Categorical.ProfinitePullbacks

33 Theorem | 8 Definition | 1 Abbreviation

This module develops the maps induced by continuous homomorphisms. It organizes the relevant quotient pullbacks and finite-stage maps, then proves the compatibility statements needed for the completed construction.

import
Imported by

Declarations

abbrev TopologicalFiberProduct.carrier
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :=
  FiberProduct.carrier (β₁ : H₁ →* H) (β₂ : H₂ →* H)

Continuous pullback carrier attached to two continuous homomorphisms.

def TopologicalFiberProduct.fst
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    TopologicalFiberProduct.carrier β₁ β₂ →ₜ* H₁ :=
  { FiberProduct.fst (β₁ : H₁ →* H) (β₂ : H₂ →* H) with
    continuous_toFun := continuous_fst.comp continuous_subtype_val }

The first projection from the continuous pullback.

def TopologicalFiberProduct.snd
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    TopologicalFiberProduct.carrier β₁ β₂ →ₜ* H₂ :=
  { FiberProduct.snd (β₁ : H₁ →* H) (β₂ : H₂ →* H) with
    continuous_toFun := continuous_snd.comp continuous_subtype_val }

The second projection from the continuous pullback.

theorem TopologicalFiberProduct.hom_ext
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    {ψ ψ' : K →ₜ* TopologicalFiberProduct.carrier β₁ β₂}
    (h₁ : ∀ k, TopologicalFiberProduct.fst β₁ β₂ (ψ k) = TopologicalFiberProduct.fst β₁ β₂ (ψ' k))
    (h₂ : ∀ k, TopologicalFiberProduct.snd β₁ β₂ (ψ k) = TopologicalFiberProduct.snd β₁ β₂ (ψ' k)) :
    ψ = ψ'

Extensionality for continuous homomorphisms into the concrete profinite pullback.

Show proof
theorem pullbackFstCont_surjective_of_right_surjective
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (hβ₂ : Function.Surjective β₂) :
    Function.Surjective (TopologicalFiberProduct.fst β₁ β₂)

If the right map in the pullback square is surjective, then the first projection from the continuous pullback is surjective.

Show proof
theorem pullbackSndCont_surjective_of_left_surjective
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (hβ₁ : Function.Surjective β₁) :
    Function.Surjective (TopologicalFiberProduct.snd β₁ β₂)

If the left map in the pullback square is surjective, then the second projection from the continuous pullback is surjective.

Show proof
theorem pullbackFstCont_injective_of_right_injective
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (hβ₂ : Function.Injective β₂) :
    Function.Injective (TopologicalFiberProduct.fst β₁ β₂)

If \(\beta_2\) is injective, then the first continuous pullback projection is injective.

Show proof
theorem pullbackSndCont_injective_of_left_injective
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (hβ₁ : Function.Injective β₁) :
    Function.Injective (TopologicalFiberProduct.snd β₁ β₂)

If \(\beta_1\) is injective, then the second continuous pullback projection is injective.

Show proof
def TopologicalFiberProduct.lift
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k)) :
    K →ₜ* TopologicalFiberProduct.carrier β₁ β₂ :=
  { FiberProduct.lift (β₁ : H₁ →* H) (β₂ : H₂ →* H)
      (φ₁ : K →* H₁) (φ₂ : K →* H₂) h with
    continuous_toFun := by
      exact Continuous.subtype_mk
        (φ₁.continuous_toFun.prodMk φ₂.continuous_toFun)
        (by
          intro k
          exact h k) }

The canonical continuous map into the pullback.

@[simp] theorem pullbackFstCont_pullbackLiftCont
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k)) :
    (TopologicalFiberProduct.fst β₁ β₂).comp (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂ h) = φ₁

Composing the first projection with the continuous pullback lift gives \(\varphi_1\).

Show proof
@[simp] theorem pullbackSndCont_pullbackLiftCont
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k)) :
    (TopologicalFiberProduct.snd β₁ β₂).comp (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂ h) = φ₂

Composing the second projection with the continuous pullback lift gives \(\varphi_2\).

Show proof
@[simp] theorem pullbackLiftCont_eta
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (ψ : K →ₜ* TopologicalFiberProduct.carrier β₁ β₂) :
    TopologicalFiberProduct.lift β₁ β₂
      ((TopologicalFiberProduct.fst β₁ β₂).comp ψ)
      ((TopologicalFiberProduct.snd β₁ β₂).comp ψ)
      (fun k => by exact (ψ k).2) = ψ

The continuous pullback is reconstructed from its two projections by the canonical lift.

Show proof
def TopologicalFiberProduct.cone
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [IsTopologicalGroup H] [IsTopologicalGroup H₁] [IsTopologicalGroup H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    PullbackCone (TopGrp.ofHom β₁) (TopGrp.ofHom β₂) :=
  PullbackCone.mk
    (TopGrp.ofHom (TopologicalFiberProduct.fst β₁ β₂))
    (TopGrp.ofHom (TopologicalFiberProduct.snd β₁ β₂))
    (by
      apply TopGrp.hom_ext
      ext x
      exact x.2)

The concrete topological fiber product as a categorical pullback cone in TopGrp.

def TopologicalFiberProduct.isLimit
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [IsTopologicalGroup H] [IsTopologicalGroup H₁] [IsTopologicalGroup H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    IsLimit (TopologicalFiberProduct.cone β₁ β₂) := by
  refine PullbackCone.IsLimit.mk (by
    apply TopGrp.hom_ext
    ext x
    exact x.2) ?lift ?fac_left ?fac_right ?uniq
  · intro s
    exact TopGrp.ofHom <|
      TopologicalFiberProduct.lift β₁ β₂ s.fst.hom s.snd.hom (fun x => by
        have hcondition :
            (s.fst ≫ TopGrp.ofHom β₁).hom =
              (s.snd ≫ TopGrp.ofHom β₂).hom :=
          congrArg (fun f : s.pt ⟶ TopGrp.of H => f.hom) s.condition
        exact DFunLike.congr_fun hcondition x)
  · intro s
    apply TopGrp.hom_ext
    rfl
  · intro s
    apply TopGrp.hom_ext
    rfl
  · intro s m hfst hsnd
    apply TopGrp.hom_ext
    ext x
    · have hfst' :
          (m ≫ TopGrp.ofHom (TopologicalFiberProduct.fst β₁ β₂)).hom = s.fst.hom :=
        congrArg (fun f : s.pt ⟶ TopGrp.of H₁ => f.hom) hfst
      exact DFunLike.congr_fun hfst' x
    · have hsnd' :
          (m ≫ TopGrp.ofHom (TopologicalFiberProduct.snd β₁ β₂)).hom = s.snd.hom :=
        congrArg (fun f : s.pt ⟶ TopGrp.of H₂ => f.hom) hsnd
      exact DFunLike.congr_fun hsnd' x

The concrete topological fiber product cone is a limit cone in TopGrp.

theorem pullbackLiftCont_injective_of_left_injective
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k))
    (hφ₁ : Function.Injective φ₁) :
    Function.Injective (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂ h)

If \(\varphi_1\) is injective, then the continuous canonical map into the profinite pullback is injective.

Show proof
theorem pullbackLiftCont_injective_of_right_injective
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k))
    (hφ₂ : Function.Injective φ₂) :
    Function.Injective (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂ h)

If \(\varphi_2\) is injective, then the continuous canonical map into the profinite pullback is injective.

Show proof
def HasTopologicalPullbackProperty
    [Group G] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (α₁ : G →ₜ* H₁) (α₂ : G →ₜ* H₂)
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) : Prop :=
  β₁.comp α₁ = β₂.comp α₂ ∧
    ∀ ⦃K : Type u⦄ [Group K] [TopologicalSpace K] [IsTopologicalGroup K],
      ∀ (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂),
      β₁.comp φ₁ = β₂.comp φ₂ →
      ∃! φ : K →ₜ* G, α₁.comp φ = φ₁ ∧ α₂.comp φ = φ₂

Continuous pullback property tested by all topological-group source objects.

theorem TopologicalFiberProduct.isTopologicalPullback
    {H H₁ H₂ : Type u}
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    HasTopologicalPullbackProperty (TopologicalFiberProduct.fst β₁ β₂) (TopologicalFiberProduct.snd β₁ β₂)
      β₁ β₂

The concrete continuous pullback satisfies the topological pullback universal property.

Show proof
def HasProfiniteTestPullbackProperty
    [Group G] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (α₁ : G →ₜ* H₁) (α₂ : G →ₜ* H₂)
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) : Prop :=
  β₁.comp α₁ = β₂.comp α₂ ∧
    ∀ ⦃K : Type u⦄ [Group K] [TopologicalSpace K] [IsTopologicalGroup K],
      IsProfiniteGroup K →
      ∀ (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂),
      β₁.comp φ₁ = β₂.comp φ₂ →
      ∃! φ : K →ₜ* G, α₁.comp φ = φ₁ ∧ α₂.comp φ = φ₂

Continuous pullback property tested by profinite source objects. The property tests the square against profinite objects without requiring the four objects of the square themselves to be profinite.

theorem hasProfiniteTestPullbackProperty
    [Group G] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    {α₁ : G →ₜ* H₁} {α₂ : G →ₜ* H₂}
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (hpb : HasTopologicalPullbackProperty α₁ α₂ β₁ β₂) :
    HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂

A topological pullback square has the restricted profinite-source test property.

Show proof
theorem isProfinitePullbackSquare_of_isTopologicalPullbackSquare
    [Group G] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    {α₁ : G →ₜ* H₁} {α₂ : G →ₜ* H₂}
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (hpb : HasTopologicalPullbackProperty α₁ α₂ β₁ β₂)
    (_hG : IsProfiniteGroup G) (_hH₁ : IsProfiniteGroup H₁)
    (_hH₂ : IsProfiniteGroup H₂) (_hH : IsProfiniteGroup H) :
    HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂

A topological pullback square between profinite groups is a profinite pullback square.

Show proof
noncomputable def pullbackDescCont
    [Group G] [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [TopologicalSpace K]
    [IsTopologicalGroup K]
    {α₁ : G →ₜ* H₁} {α₂ : G →ₜ* H₂}
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (hpb : HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂)
    (hK : IsProfiniteGroup K)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (hφ : β₁.comp φ₁ = β₂.comp φ₂) : K →ₜ* G :=
  Classical.choose (ExistsUnique.exists (hpb.2 (K := K) hK φ₁ φ₂ hφ))

Chosen continuous morphism induced by the pullback universal property.

theorem pullbackDescCont_spec
    [Group G] [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [TopologicalSpace K]
    [IsTopologicalGroup K]
    {α₁ : G →ₜ* H₁} {α₂ : G →ₜ* H₂}
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (hpb : HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂)
    (hK : IsProfiniteGroup K)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (hφ : β₁.comp φ₁ = β₂.comp φ₂) :
    α₁.comp (pullbackDescCont hpb hK φ₁ φ₂ hφ) = φ₁ ∧
      α₂.comp (pullbackDescCont hpb hK φ₁ φ₂ hφ) = φ₂

Specification of the chosen continuous pullback descent map.

Show proof
@[simp] theorem pullbackDescCont_left
    [Group G] [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [TopologicalSpace K]
    [IsTopologicalGroup K]
    {α₁ : G →ₜ* H₁} {α₂ : G →ₜ* H₂}
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (hpb : HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂)
    (hK : IsProfiniteGroup K)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (hφ : β₁.comp φ₁ = β₂.comp φ₂) :
    α₁.comp (pullbackDescCont hpb hK φ₁ φ₂ hφ) = φ₁

The left composite of the chosen continuous pullback descent map is the prescribed left leg.

Show proof
@[simp] theorem pullbackDescCont_right
    [Group G] [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [TopologicalSpace K]
    [IsTopologicalGroup K]
    {α₁ : G →ₜ* H₁} {α₂ : G →ₜ* H₂}
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (hpb : HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂)
    (hK : IsProfiniteGroup K)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (hφ : β₁.comp φ₁ = β₂.comp φ₂) :
    α₂.comp (pullbackDescCont hpb hK φ₁ φ₂ hφ) = φ₂

The right composite of the chosen continuous pullback descent map is the prescribed right leg.

Show proof
theorem pullbackDescCont_uniq
    [Group G] [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [TopologicalSpace K]
    [IsTopologicalGroup K]
    {α₁ : G →ₜ* H₁} {α₂ : G →ₜ* H₂}
    {β₁ : H₁ →ₜ* H} {β₂ : H₂ →ₜ* H}
    (hpb : HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂)
    (hK : IsProfiniteGroup K)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (hφ : β₁.comp φ₁ = β₂.comp φ₂)
    {ψ : K →ₜ* G}
    (hψ : α₁.comp ψ = φ₁ ∧ α₂.comp ψ = φ₂) :
    ψ = pullbackDescCont hpb hK φ₁ φ₂ hφ

Uniqueness of the chosen continuous pullback descent map.

Show proof
theorem pullback_isClosed
    {H H₁ H₂ : Type u}
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [T2Space H]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    IsClosed ((FiberProduct.subgroup (β₁ : H₁ →* H) (β₂ : H₂ →* H) : Subgroup (H₁ × H₂)) :
      Set (H₁ × H₂))

The concrete pullback subgroup is closed in \(H_1 \times H_2\).

Show proof
theorem TopologicalFiberProduct.isProfiniteGroup
    {H H₁ H₂ : Type u}
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [IsTopologicalGroup H₁] [IsTopologicalGroup H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (hH₁ : IsProfiniteGroup H₁) (hH₂ : IsProfiniteGroup H₂) (hH : IsProfiniteGroup H) :
    IsProfiniteGroup (TopologicalFiberProduct.carrier β₁ β₂)

The concrete pullback of continuous maps between profinite groups is again profinite.

Show proof
theorem isClosed
    {H H₁ H₂ : Type u}
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [T2Space H]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    IsClosed ((subgroup (β₁ : H₁ →* H) (β₂ : H₂ →* H) : Subgroup (H₁ × H₂)) :
      Set (H₁ × H₂))

The concrete fiber-product subgroup of continuous maps is closed in the product.

Show proof
theorem isProfiniteGroup
    {H H₁ H₂ : Type u}
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [IsTopologicalGroup H₁] [IsTopologicalGroup H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (hH₁ : IsProfiniteGroup H₁) (hH₂ : IsProfiniteGroup H₂) (hH : IsProfiniteGroup H) :
    IsProfiniteGroup (carrier (β₁ : H₁ →* H) (β₂ : H₂ →* H))

The concrete fiber product of continuous maps between profinite groups is profinite.

Show proof
theorem TopologicalFiberProduct.hasProfiniteTestPullbackProperty
    {H H₁ H₂ : Type u}
    [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H) :
    HasProfiniteTestPullbackProperty (TopologicalFiberProduct.fst β₁ β₂) (TopologicalFiberProduct.snd β₁ β₂) β₁ β₂

A topological pullback square has the restricted profinite-source test property.

Show proof
theorem hasProfiniteTestPullbackProperty_of_bijective_toConcretePullback
    {G H H₁ H₂ : Type u}
    [Group G] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    [IsTopologicalGroup H₁] [IsTopologicalGroup H₂]
    (α₁ : G →ₜ* H₁) (α₂ : G →ₜ* H₂)
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (hG : IsProfiniteGroup G) (hH₁ : IsProfiniteGroup H₁)
    (hH₂ : IsProfiniteGroup H₂) (hH : IsProfiniteGroup H)
    (τ : G →ₜ* TopologicalFiberProduct.carrier β₁ β₂)
    (hτ : Function.Bijective τ)
    (h₁ : (TopologicalFiberProduct.fst β₁ β₂).comp τ = α₁)
    (h₂ : (TopologicalFiberProduct.snd β₁ β₂).comp τ = α₂) :
    HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂

A profinite square with a bijective continuous comparison map to the concrete pullback is a continuous pullback square.

Show proof
theorem hasProfiniteTestPullbackProperty_of_equiv_toConcretePullback
    [Group G] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace G] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (α₁ : G →ₜ* H₁) (α₂ : G →ₜ* H₂)
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (e : G ≃ₜ* TopologicalFiberProduct.carrier β₁ β₂)
    (h₁ : (TopologicalFiberProduct.fst β₁ β₂).comp e.toContinuousMonoidHom = α₁)
    (h₂ : (TopologicalFiberProduct.snd β₁ β₂).comp e.toContinuousMonoidHom = α₂) :
    HasProfiniteTestPullbackProperty α₁ α₂ β₁ β₂

Transport the continuous pullback universal property across a continuous multiplicative equivalence with the concrete pullback.

Show proof
theorem pullbackLiftCont_surjective_iff_ker_comp_le_sup_ker
    [Group A] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace A] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : A →ₜ* H₁) (φ₂ : A →ₜ* H₂)
    (hφ₁ : Function.Surjective φ₁) (hφ₂ : Function.Surjective φ₂)
    (hcomp : β₁.comp φ₁ = β₂.comp φ₂) :
    Function.Surjective (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂
        (fun a => DFunLike.congr_fun hcomp a)) ↔
      ((β₁.comp φ₁ : A →ₜ* H).toMonoidHom).ker ≤
        ((φ₁ : A →ₜ* H₁).toMonoidHom).ker ⊔
          ((φ₂ : A →ₜ* H₂).toMonoidHom).ker

Surjectivity of the continuous pullback lift is equivalent to the required kernel equality.

Show proof
theorem pullbackLiftCont_surjective_iff_ker_eq
    [Group A] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace A] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : A →ₜ* H₁) (φ₂ : A →ₜ* H₂)
    (hφ₁ : Function.Surjective φ₁) (hφ₂ : Function.Surjective φ₂)
    (hcomp : β₁.comp φ₁ = β₂.comp φ₂) :
    Function.Surjective (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂
        (fun a => DFunLike.congr_fun hcomp a)) ↔
      ((β₁.comp φ₁ : A →ₜ* H).toMonoidHom).ker =
        ((φ₁ : A →ₜ* H₁).toMonoidHom).ker ⊔
          ((φ₂ : A →ₜ* H₂).toMonoidHom).ker

Surjectivity of the continuous pullback lift is equivalent to the required kernel equality.

Show proof
theorem surjective_pullbackLiftCont_of_ker_eq
    [Group A] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace A] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : A →ₜ* H₁) (φ₂ : A →ₜ* H₂)
    (hφ₁ : Function.Surjective φ₁) (hφ₂ : Function.Surjective φ₂)
    (hcomp : β₁.comp φ₁ = β₂.comp φ₂)
    (hker : ((β₁.comp φ₁ : A →ₜ* H).toMonoidHom).ker =
      ((φ₁ : A →ₜ* H₁).toMonoidHom).ker ⊔ ((φ₂ : A →ₜ* H₂).toMonoidHom).ker) :
    Function.Surjective (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂ (fun a => by
      exact DFunLike.congr_fun hcomp a))

Surjectivity of the continuous pullback lift is equivalent to the required kernel equality.

Show proof
theorem bijective_pullbackLiftCont_of_left_injective_of_ker_eq
    [Group A] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace A] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : A →ₜ* H₁) (φ₂ : A →ₜ* H₂)
    (hφ₁surj : Function.Surjective φ₁) (hφ₂surj : Function.Surjective φ₂)
    (hcomp : β₁.comp φ₁ = β₂.comp φ₂)
    (hker : ((β₁.comp φ₁ : A →ₜ* H).toMonoidHom).ker =
      ((φ₁ : A →ₜ* H₁).toMonoidHom).ker ⊔ ((φ₂ : A →ₜ* H₂).toMonoidHom).ker)
    (hφ₁inj : Function.Injective φ₁) :
    Function.Bijective (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂ (fun a => by
      exact DFunLike.congr_fun hcomp a))

The continuous pullback lift is bijective when the left map is injective and the required kernel equality holds.

Show proof
theorem bijective_pullbackLiftCont_of_right_injective_of_ker_eq
    [Group A] [Group H] [Group H₁] [Group H₂]
    [TopologicalSpace A] [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : A →ₜ* H₁) (φ₂ : A →ₜ* H₂)
    (hφ₁surj : Function.Surjective φ₁) (hφ₂surj : Function.Surjective φ₂)
    (hcomp : β₁.comp φ₁ = β₂.comp φ₂)
    (hker : ((β₁.comp φ₁ : A →ₜ* H).toMonoidHom).ker =
      ((φ₁ : A →ₜ* H₁).toMonoidHom).ker ⊔ ((φ₂ : A →ₜ* H₂).toMonoidHom).ker)
    (hφ₂inj : Function.Injective φ₂) :
    Function.Bijective (TopologicalFiberProduct.lift β₁ β₂ φ₁ φ₂ (fun a => by
      exact DFunLike.congr_fun hcomp a))

The continuous pullback lift is bijective when the right map is injective and the required kernel equality holds.

Show proof
@[simp] theorem fst_lift
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k)) :
    (fst β₁ β₂).comp (lift β₁ β₂ φ₁ φ₂ h) = φ₁

Composing the first projection with a topological fiber-product lift gives the left map.

Show proof
@[simp] theorem snd_lift
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k)) :
    (snd β₁ β₂).comp (lift β₁ β₂ φ₁ φ₂ h) = φ₂

Composing the second projection with a topological fiber-product lift gives the right map.

Show proof
@[simp] theorem fst_lift_apply
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k)) (k : K) :
    fst β₁ β₂ (lift β₁ β₂ φ₁ φ₂ h k) = φ₁ k

The map is evaluated on an element by its defining coordinate formula.

Show proof
@[simp] theorem snd_lift_apply
    [Group H] [Group H₁] [Group H₂] [Group K]
    [TopologicalSpace H] [TopologicalSpace H₁] [TopologicalSpace H₂] [TopologicalSpace K]
    (β₁ : H₁ →ₜ* H) (β₂ : H₂ →ₜ* H)
    (φ₁ : K →ₜ* H₁) (φ₂ : K →ₜ* H₂)
    (h : ∀ k, β₁ (φ₁ k) = β₂ (φ₂ k)) (k : K) :
    snd β₁ β₂ (lift β₁ β₂ φ₁ φ₂ h k) = φ₂ k

The map is evaluated on an element by its defining coordinate formula.

Show proof