Correspondence between cocones under sequential diagrams and certain coforks

Content created by Vojtěch Štěpančík.

Created on 2024-04-16.
Last modified on 2024-04-16.

module synthetic-homotopy-theory.coforks-cocones-under-sequential-diagrams where
Imports
open import elementary-number-theory.natural-numbers

open import foundation.commuting-prisms-of-maps
open import foundation.commuting-triangles-of-maps
open import foundation.dependent-pair-types
open import foundation.double-arrows
open import foundation.equivalences
open import foundation.equivalences-double-arrows
open import foundation.function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
open import foundation.morphisms-double-arrows
open import foundation.retractions
open import foundation.sections
open import foundation.universe-levels
open import foundation.whiskering-homotopies-composition
open import foundation.whiskering-homotopies-concatenation

open import synthetic-homotopy-theory.cocones-under-sequential-diagrams
open import synthetic-homotopy-theory.coforks
open import synthetic-homotopy-theory.dependent-cocones-under-sequential-diagrams
open import synthetic-homotopy-theory.dependent-coforks
open import synthetic-homotopy-theory.equivalences-cocones-under-equivalences-sequential-diagrams
open import synthetic-homotopy-theory.equivalences-coforks-under-equivalences-double-arrows
open import synthetic-homotopy-theory.equivalences-sequential-diagrams
open import synthetic-homotopy-theory.morphisms-cocones-under-morphisms-sequential-diagrams
open import synthetic-homotopy-theory.morphisms-coforks-under-morphisms-double-arrows
open import synthetic-homotopy-theory.morphisms-sequential-diagrams
open import synthetic-homotopy-theory.sequential-diagrams

Idea

A sequential diagram

      a₀      a₁      a₂
  A₀ ---> A₁ ---> A₂ ---> ⋯

induces a double arrow

  Σ (n : ℕ) Aₙ
      | |
   id | | tot ₍₊₁₎ a
      | |
      ∨ ∨
  Σ (n : ℕ) Aₙ

where tot ₍₊₁₎ a computes the successor on the base and applies the map aₙ : Aₙ → Aₙ₊₁ on the fiber.

Morphisms and equivalences of sequential diagrams induce morphisms and equivalences of the correseponding double arrows, respectively.

The data of a cocone under A:

        aₙ
  Aₙ ------> Aₙ₊₁
    \       /
     \  Hₙ /
   iₙ \   / iₙ₊₁
       ∨ ∨
        X

can be uncurried to get the equivalent diagram comprising of the single triangle

           tot ₍₊₁₎ a
  (Σ ℕ A) ------------> (Σ ℕ A)
         \             /
           \         /
          i  \     /  i
               ∨ ∨
                X

which is exactly a cofork of the identity map and tot ₍₊₁₎ a.

Under this mapping sequential colimits correspond to coequalizers, which is formalized in universal-property-sequential-colimits.

In the dependent setting, dependent cocones over a cocone c correspond to dependent coforks over the cofork induced by c.

Additionally, morphisms of cocones under morphisms of sequential diagrams induce morphisms of coforks under the induced morphisms of double arrows. It follows that equivalences of cocones under equivalences of sequential diagrams induce equivalences of coforks under the induced equivalences of double arrows.

Definitions

Double arrows induced by sequential diagrams

module _
  {l1 : Level} (A : sequential-diagram l1)
  where

  left-map-cofork-cocone-sequential-diagram :
    Σ  (family-sequential-diagram A)  Σ  (family-sequential-diagram A)
  left-map-cofork-cocone-sequential-diagram = id

  right-map-cofork-cocone-sequential-diagram :
    Σ  (family-sequential-diagram A)  Σ  (family-sequential-diagram A)
  right-map-cofork-cocone-sequential-diagram (n , a) =
    (succ-ℕ n , map-sequential-diagram A n a)

  double-arrow-sequential-diagram : double-arrow l1 l1
  double-arrow-sequential-diagram =
    make-double-arrow
      ( left-map-cofork-cocone-sequential-diagram)
      ( right-map-cofork-cocone-sequential-diagram)

Morphisms of double arrows induced by morphisms of sequential diagrams

module _
  {l1 l2 : Level} (A : sequential-diagram l1) (B : sequential-diagram l2)
  where

  hom-double-arrow-hom-sequential-diagram :
    hom-sequential-diagram A B 
    hom-double-arrow
      ( double-arrow-sequential-diagram A)
      ( double-arrow-sequential-diagram B)
  pr1 (hom-double-arrow-hom-sequential-diagram h) =
    tot (map-hom-sequential-diagram B h)
  pr1 (pr2 (hom-double-arrow-hom-sequential-diagram h)) =
    tot (map-hom-sequential-diagram B h)
  pr1 (pr2 (pr2 (hom-double-arrow-hom-sequential-diagram h))) =
    refl-htpy
  pr2 (pr2 (pr2 (hom-double-arrow-hom-sequential-diagram h))) =
    coherence-square-maps-Σ
      ( family-sequential-diagram B)
      ( map-hom-sequential-diagram B h)
      ( map-sequential-diagram A)
      ( map-sequential-diagram B)
      ( map-hom-sequential-diagram B h)
      ( λ n  inv-htpy (naturality-map-hom-sequential-diagram B h n))

Equivalences of double arrows induced by equivalences of sequential diagrams

module _
  {l1 l2 : Level} (A : sequential-diagram l1) (B : sequential-diagram l2)
  where

  equiv-double-arrow-equiv-sequential-diagram :
    equiv-sequential-diagram A B 
    equiv-double-arrow
      ( double-arrow-sequential-diagram A)
      ( double-arrow-sequential-diagram B)
  equiv-double-arrow-equiv-sequential-diagram e =
    equiv-hom-double-arrow
      ( double-arrow-sequential-diagram A)
      ( double-arrow-sequential-diagram B)
      ( hom-double-arrow-hom-sequential-diagram A B
        ( hom-equiv-sequential-diagram B e))
      ( is-equiv-tot-is-fiberwise-equiv
        ( is-equiv-map-equiv-sequential-diagram B e))
      ( is-equiv-tot-is-fiberwise-equiv
        ( is-equiv-map-equiv-sequential-diagram B e))

Coforks induced by cocones under sequential diagrams

Further down we show that there is an inverse map, giving an equivalence between cocones under a sequential diagram and coforks under the induced double arrow.

module _
  {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2}
  where

  cofork-cocone-sequential-diagram :
    cocone-sequential-diagram A X 
    cofork (double-arrow-sequential-diagram A) X
  pr1 (cofork-cocone-sequential-diagram c) =
    ind-Σ (map-cocone-sequential-diagram c)
  pr2 (cofork-cocone-sequential-diagram c) =
    ind-Σ (coherence-cocone-sequential-diagram c)

Dependent coforks induced by dependent cocones under sequential diagrams

Further down we show that there is an inverse map, giving an equivalence between dependent cocones over a cocone under a sequential diagram and dependent coforks over the cofork induced by the base cocone.

module _
  {l1 l2 l3 : Level} {A : sequential-diagram l1}
  {X : UU l2} {c : cocone-sequential-diagram A X}
  (P : X  UU l3)
  where

  dependent-cofork-dependent-cocone-sequential-diagram :
    dependent-cocone-sequential-diagram c P 
    dependent-cofork
      ( double-arrow-sequential-diagram A)
      ( cofork-cocone-sequential-diagram c)
      ( P)
  pr1 (dependent-cofork-dependent-cocone-sequential-diagram d) =
    ind-Σ (map-dependent-cocone-sequential-diagram P d)
  pr2 (dependent-cofork-dependent-cocone-sequential-diagram d) =
    ind-Σ (coherence-triangle-dependent-cocone-sequential-diagram P d)

Morphisms of coforks under morphisms of double arrows induced by morphisms of cocones under morphisms of sequential diagrams

module _
  {l1 l2 l3 l4 : Level}
  {A : sequential-diagram l1} {X : UU l2} (c : cocone-sequential-diagram A X)
  {B : sequential-diagram l3} {Y : UU l4} (c' : cocone-sequential-diagram B Y)
  (h : hom-sequential-diagram A B)
  where

  coh-map-hom-cofork-hom-cocone-hom-sequential-diagram :
    (u : X  Y) 
    coherence-map-cocone-hom-cocone-hom-sequential-diagram c c' h u 
    coherence-map-cofork-hom-cofork-hom-double-arrow
      ( cofork-cocone-sequential-diagram c)
      ( cofork-cocone-sequential-diagram c')
      ( hom-double-arrow-hom-sequential-diagram A B h)
      ( u)
  coh-map-hom-cofork-hom-cocone-hom-sequential-diagram u H =
    inv-htpy (ind-Σ H)

  coh-hom-cofork-hom-cocone-hom-sequential-diagram :
    (u : X  Y) 
    (H : coherence-map-cocone-hom-cocone-hom-sequential-diagram c c' h u) 
    coherence-hom-cocone-hom-sequential-diagram c c' h u H 
    coherence-hom-cofork-hom-double-arrow
      ( cofork-cocone-sequential-diagram c)
      ( cofork-cocone-sequential-diagram c')
      ( hom-double-arrow-hom-sequential-diagram A B h)
      ( u)
      ( coh-map-hom-cofork-hom-cocone-hom-sequential-diagram u H)
  coh-hom-cofork-hom-cocone-hom-sequential-diagram u H K =
    ( right-whisker-concat-htpy
      ( right-unit-htpy)
      ( λ (n , a) 
        coherence-cocone-sequential-diagram c' n
          ( map-hom-sequential-diagram B h n a))) ∙h
    ( ind-Σ
      ( λ n 
        ( vertical-coherence-prism-inv-squares-maps-vertical-coherence-prism-maps
          ( map-cocone-sequential-diagram c n)
          ( map-cocone-sequential-diagram c (succ-ℕ n))
          ( map-sequential-diagram A n)
          ( map-cocone-sequential-diagram c' n)
          ( map-cocone-sequential-diagram c' (succ-ℕ n))
          ( map-sequential-diagram B n)
          ( map-hom-sequential-diagram B h n)
          ( map-hom-sequential-diagram B h (succ-ℕ n))
          ( u)
          ( coherence-cocone-sequential-diagram c n)
          ( H n)
          ( H (succ-ℕ n))
          ( naturality-map-hom-sequential-diagram B h n)
          ( coherence-cocone-sequential-diagram c' n)
          ( K n)) ∙h
        ( inv-htpy-assoc-htpy
          ( u ·l coherence-cocone-sequential-diagram c n)
          ( inv-htpy (H (succ-ℕ n) ·r map-sequential-diagram A n))
          ( ( map-cocone-sequential-diagram c' (succ-ℕ n)) ·l
            ( inv-htpy (naturality-map-hom-sequential-diagram B h n)))) ∙h
        ( left-whisker-concat-htpy _
          ( inv-htpy
            ( λ a 
              compute-ap-ind-Σ-eq-pair-eq-fiber
                ( map-cocone-sequential-diagram c')
                ( inv-htpy (naturality-map-hom-sequential-diagram B h n) a))))))

  hom-cofork-hom-cocone-hom-sequential-diagram :
    hom-cocone-hom-sequential-diagram c c' h 
    hom-cofork-hom-double-arrow
      ( cofork-cocone-sequential-diagram c)
      ( cofork-cocone-sequential-diagram c')
      ( hom-double-arrow-hom-sequential-diagram A B h)
  hom-cofork-hom-cocone-hom-sequential-diagram =
    tot
      ( λ u 
        map-Σ _
          ( coh-map-hom-cofork-hom-cocone-hom-sequential-diagram u)
          ( coh-hom-cofork-hom-cocone-hom-sequential-diagram u))

Equivalences of coforks under equivalences of double arrows induced by equivalences of cocones under equivalences of sequential diagrams

module _
  {l1 l2 l3 l4 : Level}
  {A : sequential-diagram l1} {X : UU l2} (c : cocone-sequential-diagram A X)
  {B : sequential-diagram l3} {Y : UU l4} (c' : cocone-sequential-diagram B Y)
  (e : equiv-sequential-diagram A B)
  where

  equiv-cofork-equiv-cocone-equiv-sequential-diagram :
    equiv-cocone-equiv-sequential-diagram c c' e 
    equiv-cofork-equiv-double-arrow
      ( cofork-cocone-sequential-diagram c)
      ( cofork-cocone-sequential-diagram c')
      ( equiv-double-arrow-equiv-sequential-diagram A B e)
  equiv-cofork-equiv-cocone-equiv-sequential-diagram e' =
    equiv-hom-cofork-equiv-double-arrow
      ( cofork-cocone-sequential-diagram c)
      ( cofork-cocone-sequential-diagram c')
      ( equiv-double-arrow-equiv-sequential-diagram A B e)
      ( hom-cofork-hom-cocone-hom-sequential-diagram c c'
        ( hom-equiv-sequential-diagram B e)
        ( hom-equiv-cocone-equiv-sequential-diagram c c' e e'))
      ( is-equiv-map-equiv-cocone-equiv-sequential-diagram c c' e e')

Properties

The type of cocones under a sequential diagram is equivalent to the type of coforks under the induced double arrow

Furthermore, for every cocone c under A with vertex X there is a commuting triangle

              cofork-map
      (X → Y) ----------> cofork (double-arrow A) Y
            \             /
  cocone-map  \         /  cocone-cofork
                \     /
                 ∨   ∨
               cocone A Y .
module _
  {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2}
  where

  cocone-sequential-diagram-cofork :
    cofork (double-arrow-sequential-diagram A) X 
    cocone-sequential-diagram A X
  pr1 (cocone-sequential-diagram-cofork e) =
    ev-pair (map-cofork (double-arrow-sequential-diagram A) e)
  pr2 (cocone-sequential-diagram-cofork e) =
    ev-pair (coh-cofork (double-arrow-sequential-diagram A) e)

  abstract
    is-section-cocone-sequential-diagram-cofork :
      is-section
        ( cofork-cocone-sequential-diagram)
        ( cocone-sequential-diagram-cofork)
    is-section-cocone-sequential-diagram-cofork e =
      eq-htpy-cofork
        ( double-arrow-sequential-diagram A)
        ( cofork-cocone-sequential-diagram
          ( cocone-sequential-diagram-cofork e))
        ( e)
        ( refl-htpy-cofork _ _)

    is-retraction-cocone-sequential-diagram-cofork :
      is-retraction
        ( cofork-cocone-sequential-diagram)
        ( cocone-sequential-diagram-cofork)
    is-retraction-cocone-sequential-diagram-cofork c =
      eq-htpy-cocone-sequential-diagram A
        ( cocone-sequential-diagram-cofork
          ( cofork-cocone-sequential-diagram c))
        ( c)
        ( refl-htpy-cocone-sequential-diagram _ _)

  is-equiv-cocone-sequential-diagram-cofork :
    is-equiv cocone-sequential-diagram-cofork
  is-equiv-cocone-sequential-diagram-cofork =
    is-equiv-is-invertible
      ( cofork-cocone-sequential-diagram)
      ( is-retraction-cocone-sequential-diagram-cofork)
      ( is-section-cocone-sequential-diagram-cofork)

  equiv-cocone-sequential-diagram-cofork :
    cofork (double-arrow-sequential-diagram A) X 
    cocone-sequential-diagram A X
  pr1 equiv-cocone-sequential-diagram-cofork =
    cocone-sequential-diagram-cofork
  pr2 equiv-cocone-sequential-diagram-cofork =
    is-equiv-cocone-sequential-diagram-cofork

module _
  {l1 l2 : Level} {A : sequential-diagram l1}
  {X : UU l2} (c : cocone-sequential-diagram A X)
  where

  triangle-cocone-sequential-diagram-cofork :
    {l3 : Level} {Y : UU l3} 
    coherence-triangle-maps
      ( cocone-map-sequential-diagram c {Y = Y})
      ( cocone-sequential-diagram-cofork)
      ( cofork-map
        ( double-arrow-sequential-diagram A)
        ( cofork-cocone-sequential-diagram c))
  triangle-cocone-sequential-diagram-cofork h =
    eq-htpy-cocone-sequential-diagram A
      ( cocone-map-sequential-diagram c h)
      ( cocone-sequential-diagram-cofork
        ( cofork-map
          ( double-arrow-sequential-diagram A)
          ( cofork-cocone-sequential-diagram c)
          ( h)))
      ( refl-htpy-cocone-sequential-diagram _ _)

The type of dependent cocones over a cocone is equivalent to the type of dependent coforks over the induced cofork

Furthermore, for every cocone c under A with vertex X there is a commuting triangle

                      dependent-cofork-map
      ((x : X) → P x) -------------------> dependent-cofork (cofork-cocone c) Y
                      \                  /
  dependent-cocone-map  \              /  dependent-cocone-dependent-cofork
                          \          /
                           ∨        ∨
                      dependent-cocone c P .
module _
  {l1 l2 l3 : Level} {A : sequential-diagram l1}
  {X : UU l2} {c : cocone-sequential-diagram A X}
  (P : X  UU l3)
  where

  dependent-cocone-sequential-diagram-dependent-cofork :
    dependent-cofork
      ( double-arrow-sequential-diagram A)
      ( cofork-cocone-sequential-diagram c)
      ( P) 
    dependent-cocone-sequential-diagram c P
  pr1 (dependent-cocone-sequential-diagram-dependent-cofork e) =
    ev-pair
      ( map-dependent-cofork
        ( double-arrow-sequential-diagram A)
        ( P)
        ( e))
  pr2 (dependent-cocone-sequential-diagram-dependent-cofork e) =
    ev-pair
      ( coherence-dependent-cofork
        ( double-arrow-sequential-diagram A)
        ( P)
        ( e))

  abstract
    is-section-dependent-cocone-sequential-diagram-dependent-cofork :
      is-section
        ( dependent-cofork-dependent-cocone-sequential-diagram P)
        ( dependent-cocone-sequential-diagram-dependent-cofork)
    is-section-dependent-cocone-sequential-diagram-dependent-cofork e =
      eq-htpy-dependent-cofork
        ( double-arrow-sequential-diagram A)
        ( P)
        ( dependent-cofork-dependent-cocone-sequential-diagram P
          ( dependent-cocone-sequential-diagram-dependent-cofork e))
        ( e)
        ( refl-htpy-dependent-cofork _ _ _)

    is-retraction-dependent-cocone-sequential-diagram-dependent-cofork :
      is-retraction
        ( dependent-cofork-dependent-cocone-sequential-diagram P)
        ( dependent-cocone-sequential-diagram-dependent-cofork)
    is-retraction-dependent-cocone-sequential-diagram-dependent-cofork d =
      eq-htpy-dependent-cocone-sequential-diagram P
        ( dependent-cocone-sequential-diagram-dependent-cofork
          ( dependent-cofork-dependent-cocone-sequential-diagram P d))
        ( d)
        ( refl-htpy-dependent-cocone-sequential-diagram _ _)

  is-equiv-dependent-cocone-sequential-diagram-dependent-cofork :
    is-equiv dependent-cocone-sequential-diagram-dependent-cofork
  is-equiv-dependent-cocone-sequential-diagram-dependent-cofork =
    is-equiv-is-invertible
      ( dependent-cofork-dependent-cocone-sequential-diagram P)
      ( is-retraction-dependent-cocone-sequential-diagram-dependent-cofork)
      ( is-section-dependent-cocone-sequential-diagram-dependent-cofork)

  equiv-dependent-cocone-sequential-diagram-dependent-cofork :
    dependent-cofork
      ( double-arrow-sequential-diagram A)
      ( cofork-cocone-sequential-diagram c)
      ( P) 
    dependent-cocone-sequential-diagram c P
  pr1 equiv-dependent-cocone-sequential-diagram-dependent-cofork =
    dependent-cocone-sequential-diagram-dependent-cofork
  pr2 equiv-dependent-cocone-sequential-diagram-dependent-cofork =
    is-equiv-dependent-cocone-sequential-diagram-dependent-cofork

module _
  {l1 l2 l3 : Level} {A : sequential-diagram l1}
  {X : UU l2} {c : cocone-sequential-diagram A X}
  (P : X  UU l3)
  where

  triangle-dependent-cocone-sequential-diagram-dependent-cofork :
    coherence-triangle-maps
      ( dependent-cocone-map-sequential-diagram c P)
      ( dependent-cocone-sequential-diagram-dependent-cofork P)
      ( dependent-cofork-map
        ( double-arrow-sequential-diagram A)
        ( cofork-cocone-sequential-diagram c))
  triangle-dependent-cocone-sequential-diagram-dependent-cofork h =
    eq-htpy-dependent-cocone-sequential-diagram P
      ( dependent-cocone-map-sequential-diagram c P h)
      ( dependent-cocone-sequential-diagram-dependent-cofork P
        ( dependent-cofork-map
          ( double-arrow-sequential-diagram A)
          ( cofork-cocone-sequential-diagram c)
          ( h)))
      ( refl-htpy-dependent-cocone-sequential-diagram _ _)

Recent changes