The universal property of pullbacks

module foundation-core.universal-property-pullbacks where
Imports
open import foundation-core.cones-over-cospans
open import foundation-core.contractible-maps
open import foundation-core.contractible-types
open import foundation-core.dependent-pair-types
open import foundation-core.equivalences
open import foundation-core.functions
open import foundation-core.functoriality-dependent-pair-types
open import foundation-core.functoriality-function-types
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.universe-levels

Definition

The universal property of pullbacks

module _
  {l1 l2 l3 l4 : Level} (l : Level) {A : UU l1} {B : UU l2} {X : UU l3}
  (f : A  X) (g : B  X) {C : UU l4}
  where

  universal-property-pullback :
    (c : cone f g C)  UU (l1  l2  l3  l4  lsuc l)
  universal-property-pullback c =
    (C' : UU l)  is-equiv (cone-map f g {C' = C'} c)

Properties

3-for-2 property of pullbacks

module _
  {l1 l2 l3 l4 l5 : Level}
  {A : UU l1} {B : UU l2} {X : UU l3} {C : UU l4} {C' : UU l5}
  {f : A  X} {g : B  X} (c : cone f g C) (c' : cone f g C')
  (h : C'  C) (KLM : htpy-cone f g (cone-map f g c h) c')
  where

  triangle-cone-cone :
    {l6 : Level} (D : UU l6) 
    (cone-map f g {C' = D} c') ~ ((cone-map f g c)   (k : D  C')  h  k))
  triangle-cone-cone D k =
    inv
      ( ap
        ( λ t  cone-map f g {C' = D} t k)
        { x = (cone-map f g c h)}
        { y = c'}
        ( eq-htpy-cone f g (cone-map f g c h) c' KLM))

  abstract
    is-equiv-up-pullback-up-pullback :
      ({l : Level}  universal-property-pullback l f g c) 
      ({l : Level}  universal-property-pullback l f g c') 
      is-equiv h
    is-equiv-up-pullback-up-pullback up up' =
      is-equiv-is-equiv-postcomp h
        ( λ D  is-equiv-right-factor-htpy
          ( cone-map f g {C' = D} c')
          ( cone-map f g c)
          ( λ (k : D  C')  h  k)
          ( triangle-cone-cone D)
          ( up D)
          ( up' D))

  abstract
    up-pullback-up-pullback-is-equiv :
      is-equiv h 
      ({l : Level}  universal-property-pullback l f g c) 
      ({l : Level}  universal-property-pullback l f g c')
    up-pullback-up-pullback-is-equiv is-equiv-h up D =
      is-equiv-comp-htpy
        ( cone-map f g c')
        ( cone-map f g c)
        ( λ k  h  k)
        ( triangle-cone-cone D)
        ( is-equiv-postcomp-is-equiv h is-equiv-h D)
        ( up D)

  abstract
    up-pullback-is-equiv-up-pullback :
      ({l : Level}  universal-property-pullback l f g c') 
      is-equiv h 
      ({l : Level}  universal-property-pullback l f g c)
    up-pullback-is-equiv-up-pullback up' is-equiv-h D =
      is-equiv-left-factor-htpy
        ( cone-map f g c')
        ( cone-map f g c)
        ( λ k  h  k)
        ( triangle-cone-cone D)
        ( up' D)
        ( is-equiv-postcomp-is-equiv h is-equiv-h D)

Uniqueness of maps obtained via the universal property of pullbacks

module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3}
  (f : A  X) (g : B  X) {C : UU l4} (c : cone f g C)
  where

  abstract
    uniqueness-universal-property-pullback :
      ({l : Level}  universal-property-pullback l f g c) 
      {l5 : Level} (C' : UU l5) (c' : cone f g C') 
      is-contr (Σ (C'  C)  h  htpy-cone f g (cone-map f g c h) c'))
    uniqueness-universal-property-pullback up C' c' =
      is-contr-equiv'
        ( Σ (C'  C)  h  cone-map f g c h  c'))
        ( equiv-tot
          ( λ h  extensionality-cone f g (cone-map f g c h) c'))
        ( is-contr-map-is-equiv (up C') c')