ProCGroups.ProC.Category.Pushouts

11 Theorem | 4 Definition

This module proves the universal-property part of the construction. It packages finite-stage data into completed maps and shows the required extension and uniqueness statements.

import
Imported by

Declarations

def IsPushoutSquare
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (α₁ : H₁ ⟶ G) (α₂ : H₂ ⟶ G) : Prop :=
  β₁ ≫ α₁ = β₂ ≫ α₂ ∧
    ∀ ⦃K : ProCGrp ProC⦄ (φ₁ : H₁ ⟶ K) (φ₂ : H₂ ⟶ K),
      β₁ ≫ φ₁ = β₂ ≫ φ₂ →
        ∃! φ : G ⟶ K, α₁ ≫ φ = φ₁ ∧ α₂ ≫ φ = φ₂

A pushout square in the bundled category pro-\(C\) groups.

noncomputable def pushoutDesc
    {β₁ : H ⟶ H₁} {β₂ : H ⟶ H₂}
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {K : ProCGrp ProC}
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (φ₁ : H₁ ⟶ K) (φ₂ : H₂ ⟶ K)
    (hφ : β₁ ≫ φ₁ = β₂ ≫ φ₂) : G ⟶ K :=
  Classical.choose (ExistsUnique.exists (hpo.2 φ₁ φ₂ hφ))

The pushout universal property supplies the induced morphism.

theorem pushoutDesc_spec
    {β₁ : H ⟶ H₁} {β₂ : H ⟶ H₂}
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {K : ProCGrp ProC}
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (φ₁ : H₁ ⟶ K) (φ₂ : H₂ ⟶ K)
    (hφ : β₁ ≫ φ₁ = β₂ ≫ φ₂) :
    α₁ ≫ pushoutDesc hpo φ₁ φ₂ hφ = φ₁ ∧
      α₂ ≫ pushoutDesc hpo φ₁ φ₂ hφ = φ₂

The chosen pushout descent map has the prescribed composites.

Show proof
@[simp] theorem pushoutDesc_left
    {β₁ : H ⟶ H₁} {β₂ : H ⟶ H₂}
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {K : ProCGrp ProC}
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (φ₁ : H₁ ⟶ K) (φ₂ : H₂ ⟶ K)
    (hφ : β₁ ≫ φ₁ = β₂ ≫ φ₂) :
    α₁ ≫ pushoutDesc hpo φ₁ φ₂ hφ = φ₁

The pushout descent map has the prescribed left composite.

Show proof
@[simp] theorem pushoutDesc_right
    {β₁ : H ⟶ H₁} {β₂ : H ⟶ H₂}
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {K : ProCGrp ProC}
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (φ₁ : H₁ ⟶ K) (φ₂ : H₂ ⟶ K)
    (hφ : β₁ ≫ φ₁ = β₂ ≫ φ₂) :
    α₂ ≫ pushoutDesc hpo φ₁ φ₂ hφ = φ₂

The pushout descent map has the prescribed right composite.

Show proof
theorem pushoutDesc_unique
    {β₁ : H ⟶ H₁} {β₂ : H ⟶ H₂}
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {K : ProCGrp ProC}
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (φ₁ : H₁ ⟶ K) (φ₂ : H₂ ⟶ K)
    (hφ : β₁ ≫ φ₁ = β₂ ≫ φ₂)
    {ψ : G ⟶ K}
    (hψ : α₁ ≫ ψ = φ₁ ∧ α₂ ≫ ψ = φ₂) :
    ψ = pushoutDesc hpo φ₁ φ₂ hφ

Uniqueness of the chosen pushout descent map.

Show proof
@[simp] theorem pushoutDesc_self
    {β₁ : H ⟶ H₁} {β₂ : H ⟶ H₂}
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂) :
    pushoutDesc hpo α₁ α₂ hpo.1 = 𝟙 G

The self-descent map of a pushout object is the identity.

Show proof
theorem pushout_hom_ext
    {β₁ : H ⟶ H₁} {β₂ : H ⟶ H₂}
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {K : ProCGrp ProC}
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    {ψ ψ' : G ⟶ K}
    (h₁ : α₁ ≫ ψ = α₁ ≫ ψ')
    (h₂ : α₂ ≫ ψ = α₂ ≫ ψ') :
    ψ = ψ'

Extensionality of morphisms out of a pro-\(C\) pushout object.

Show proof
noncomputable def pushoutMapOfIsPushout
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {α₁' : H₁ ⟶ G'} {α₂' : H₂ ⟶ G'}
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (hpo' : IsPushoutSquare β₁ β₂ α₁' α₂') :
    G ⟶ G' :=
  pushoutDesc hpo α₁' α₂' hpo'.1

The canonical comparison map between two pro-\(C\) pushout objects of the same cospan.

@[simp] theorem pushoutMapOfIsPushout_self
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂) :
    pushoutMapOfIsPushout β₁ β₂ hpo hpo = 𝟙 G

The comparison map from a pushout object to itself is the identity.

Show proof
@[simp] theorem pushoutMapOfIsPushout_left
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {α₁' : H₁ ⟶ G'} {α₂' : H₂ ⟶ G'}
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (hpo' : IsPushoutSquare β₁ β₂ α₁' α₂') :
    α₁ ≫ pushoutMapOfIsPushout β₁ β₂ hpo hpo' = α₁'

The left composite of the canonical comparison map between pushout objects is the prescribed left leg.

Show proof
@[simp] theorem pushoutMapOfIsPushout_right
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {α₁' : H₁ ⟶ G'} {α₂' : H₂ ⟶ G'}
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (hpo' : IsPushoutSquare β₁ β₂ α₁' α₂') :
    α₂ ≫ pushoutMapOfIsPushout β₁ β₂ hpo hpo' = α₂'

The right composite of the canonical comparison map between pushout objects is the prescribed right leg.

Show proof
noncomputable def pushoutIsoOfIsPushout
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {α₁' : H₁ ⟶ G'} {α₂' : H₂ ⟶ G'}
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (hpo' : IsPushoutSquare β₁ β₂ α₁' α₂') :
    G ≅ G' where
  hom := pushoutMapOfIsPushout β₁ β₂ hpo hpo'
  inv := pushoutMapOfIsPushout β₁ β₂ hpo' hpo
  hom_inv_id := by
    apply pushout_hom_ext hpo
    · calc
        α₁ ≫ pushoutMapOfIsPushout β₁ β₂ hpo hpo' ≫
            pushoutMapOfIsPushout β₁ β₂ hpo' hpo =
              α₁' ≫ pushoutMapOfIsPushout β₁ β₂ hpo' hpo := by
          rw [← Category.assoc, pushoutMapOfIsPushout_left]
        _ = α₁ := pushoutMapOfIsPushout_left β₁ β₂ hpo' hpo
    · calc
        α₂ ≫ pushoutMapOfIsPushout β₁ β₂ hpo hpo' ≫
            pushoutMapOfIsPushout β₁ β₂ hpo' hpo =
              α₂' ≫ pushoutMapOfIsPushout β₁ β₂ hpo' hpo := by
          rw [← Category.assoc, pushoutMapOfIsPushout_right]
        _ = α₂ := pushoutMapOfIsPushout_right β₁ β₂ hpo' hpo
  inv_hom_id := by
    apply pushout_hom_ext hpo'
    · calc
        α₁' ≫ pushoutMapOfIsPushout β₁ β₂ hpo' hpo ≫
            pushoutMapOfIsPushout β₁ β₂ hpo hpo' =
              α₁ ≫ pushoutMapOfIsPushout β₁ β₂ hpo hpo' := by
          rw [← Category.assoc, pushoutMapOfIsPushout_left]
        _ = α₁' := pushoutMapOfIsPushout_left β₁ β₂ hpo hpo'
    · calc
        α₂' ≫ pushoutMapOfIsPushout β₁ β₂ hpo' hpo ≫
            pushoutMapOfIsPushout β₁ β₂ hpo hpo' =
              α₂ ≫ pushoutMapOfIsPushout β₁ β₂ hpo hpo' := by
          rw [← Category.assoc, pushoutMapOfIsPushout_right]
        _ = α₂' := pushoutMapOfIsPushout_right β₁ β₂ hpo hpo'

Any two pro-\(C\) pushout objects of the same cospan are canonically isomorphic.

@[simp] theorem pushoutIsoOfIsPushout_hom_left
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {α₁' : H₁ ⟶ G'} {α₂' : H₂ ⟶ G'}
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (hpo' : IsPushoutSquare β₁ β₂ α₁' α₂') :
    α₁ ≫ (pushoutIsoOfIsPushout β₁ β₂ hpo hpo').hom = α₁'

The pro-\(C\) pushout statement is verified by composing with the canonical maps and using the universal property.

Show proof
@[simp] theorem pushoutIsoOfIsPushout_hom_right
    {α₁ : H₁ ⟶ G} {α₂ : H₂ ⟶ G}
    {α₁' : H₁ ⟶ G'} {α₂' : H₂ ⟶ G'}
    (β₁ : H ⟶ H₁) (β₂ : H ⟶ H₂)
    (hpo : IsPushoutSquare β₁ β₂ α₁ α₂)
    (hpo' : IsPushoutSquare β₁ β₂ α₁' α₂') :
    α₂ ≫ (pushoutIsoOfIsPushout β₁ β₂ hpo hpo').hom = α₂'

The pro-\(C\) pushout statement is verified by composing with the canonical maps and using the universal property.

Show proof