Commuting triangles of maps

Content created by Fredrik Bakke, Egbert Rijke, Jonathan Prieto-Cubides and Vojtěch Štěpančík.

Created on 2023-02-18.
Last modified on 2024-06-05.

module foundation.commuting-triangles-of-maps where

open import foundation-core.commuting-triangles-of-maps public
Imports
open import foundation.action-on-identifications-functions
open import foundation.functoriality-dependent-function-types
open import foundation.homotopies
open import foundation.homotopy-algebra
open import foundation.identity-types
open import foundation.postcomposition-functions
open import foundation.precomposition-functions
open import foundation.universe-levels
open import foundation.whiskering-homotopies-composition

open import foundation-core.commuting-squares-of-maps
open import foundation-core.equivalences
open import foundation-core.function-types
open import foundation-core.whiskering-identifications-concatenation

Idea

A triangle of maps

 A ----> B
  \     /
   \   /
    ∨ ∨
     X

is said to commute if there is a homotopy between the map on the left and the composite map.

Properties

Top map is an equivalence

If the top map is an equivalence, then there is an equivalence between the coherence triangle with the map of the equivalence as with the inverse map of the equivalence.

module _
  {l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
  (left : A  X) (right : B  X) (e : A  B)
  where

  equiv-coherence-triangle-maps-inv-top' :
    coherence-triangle-maps left right (map-equiv e) 
    coherence-triangle-maps' right left (map-inv-equiv e)
  equiv-coherence-triangle-maps-inv-top' =
    equiv-Π
      ( λ b  left (map-inv-equiv e b)  right b)
      ( e)
      ( λ a 
        equiv-concat
          ( ap left (is-retraction-map-inv-equiv e a))
          ( right (map-equiv e a)))

  equiv-coherence-triangle-maps-inv-top :
    coherence-triangle-maps left right (map-equiv e) 
    coherence-triangle-maps right left (map-inv-equiv e)
  equiv-coherence-triangle-maps-inv-top =
    ( equiv-inv-htpy
      ( left  (map-inv-equiv e))
      ( right)) ∘e
    ( equiv-coherence-triangle-maps-inv-top')

  coherence-triangle-maps-inv-top :
    coherence-triangle-maps left right (map-equiv e) 
    coherence-triangle-maps right left (map-inv-equiv e)
  coherence-triangle-maps-inv-top =
    map-equiv equiv-coherence-triangle-maps-inv-top

Commuting triangles of maps induce commuting triangles of precomposition maps

Given a commuting triangle of maps

       f
   A ----> B
    \  ⇗  /
   h \   / g
      ∨ ∨
       X

there is an induced commuting triangle of precomposition maps

         (- ∘ g)
  (X → S) ----> (B → S)
        \   ⇗  /
  (- ∘ h) \   / (- ∘ f)
           ∨ ∨
         (A → S).

Note the change of order of f and g.

module _
  { l1 l2 l3 l4 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
  ( left : A  X) (right : B  X) (top : A  B)
  where

  precomp-coherence-triangle-maps :
    coherence-triangle-maps left right top 
    (S : UU l4) 
    coherence-triangle-maps
      ( precomp left S)
      ( precomp top S)
      ( precomp right S)
  precomp-coherence-triangle-maps = htpy-precomp

  precomp-coherence-triangle-maps' :
    coherence-triangle-maps' left right top 
    (S : UU l4) 
    coherence-triangle-maps'
      ( precomp left S)
      ( precomp top S)
      ( precomp right S)
  precomp-coherence-triangle-maps' = htpy-precomp

Commuting triangles of maps induce commuting triangles of postcomposition maps

Given a commuting triangle of maps

       f
   A ----> B
    \  ⇗  /
   h \   / g
      ∨ ∨
       X

there is an induced commuting triangle of postcomposition maps

         (f ∘ -)
  (S → A) ----> (S → B)
        \   ⇗  /
  (h ∘ -) \   / (g ∘ -)
           ∨ ∨
         (S → X).
module _
  { l1 l2 l3 l4 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
  ( left : A  X) (right : B  X) (top : A  B)
  where

  postcomp-coherence-triangle-maps :
    (S : UU l4) 
    coherence-triangle-maps left right top 
    coherence-triangle-maps
      ( postcomp S left)
      ( postcomp S right)
      ( postcomp S top)
  postcomp-coherence-triangle-maps S = htpy-postcomp S

  postcomp-coherence-triangle-maps' :
    (S : UU l4) 
    coherence-triangle-maps' left right top 
    coherence-triangle-maps'
      ( postcomp S left)
      ( postcomp S right)
      ( postcomp S top)
  postcomp-coherence-triangle-maps' S = htpy-postcomp S

Coherences of commuting triangles of maps with fixed vertices

This or its opposite should be the coherence in the characterization of identifications of commuting triangles of maps with fixed end vertices.

module _
  {l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
  (left : A  X) (right : B  X) (top : A  B)
  (left' : A  X) (right' : B  X) (top' : A  B)
  (c : coherence-triangle-maps left right top)
  (c' : coherence-triangle-maps left' right' top')
  where

  coherence-htpy-triangle-maps :
    left ~ left'  right ~ right'  top ~ top'  UU (l1  l2)
  coherence-htpy-triangle-maps L R T =
    c ∙h horizontal-concat-htpy R T ~ L ∙h c'

Pasting commuting triangles into commuting squares along homotopic diagonals

Two commuting triangles

   A         A --> X
  | \         \    |
  |  \ H  L  K \   |
  |   \         \  |
  ∨    ∨         ∨ ∨
  B --> Y         Y

with a homotopic diagonal may be pasted into a commuting square

  A -----> X
  |        |
  |        |
  ∨        ∨
  B -----> Y.
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (top : A  X) (left : A  B) (right : X  Y) (bottom : B  Y)
  where

  horizontal-pasting-htpy-coherence-triangle-maps :
    {diagonal-left diagonal-right : A  Y} 
    diagonal-left ~ diagonal-right 
    coherence-triangle-maps' diagonal-left bottom left 
    coherence-triangle-maps diagonal-right right top 
    coherence-square-maps top left right bottom
  horizontal-pasting-htpy-coherence-triangle-maps L H K = (H ∙h L) ∙h K

  horizontal-pasting-htpy-coherence-triangle-maps' :
    {diagonal-left diagonal-right : A  Y} 
    diagonal-left ~ diagonal-right 
    coherence-triangle-maps' diagonal-left bottom left 
    coherence-triangle-maps diagonal-right right top 
    coherence-square-maps top left right bottom
  horizontal-pasting-htpy-coherence-triangle-maps' L H K = H ∙h (L ∙h K)

  horizontal-pasting-coherence-triangle-maps :
    (diagonal : A  Y) 
    coherence-triangle-maps' diagonal bottom left 
    coherence-triangle-maps diagonal right top 
    coherence-square-maps top left right bottom
  horizontal-pasting-coherence-triangle-maps diagonal H K = H ∙h K

  compute-refl-htpy-horizontal-pasting-coherence-triangle-maps :
    (diagonal : A  Y) 
    (H : coherence-triangle-maps' diagonal bottom left) 
    (K : coherence-triangle-maps diagonal right top) 
    horizontal-pasting-htpy-coherence-triangle-maps refl-htpy H K ~
    horizontal-pasting-coherence-triangle-maps diagonal H K
  compute-refl-htpy-horizontal-pasting-coherence-triangle-maps diagonal H K x =
    right-whisker-concat right-unit (K x)

We can also consider pasting triangles of the form

  A --> X      X
  |    ∧     ∧ |
  | H /     /  |
  |  /     / K |
  ∨ /     /    ∨
  B      B --> Y .
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (top : A  X) (left : A  B) (right : X  Y) (bottom : B  Y)
  {diagonal : B  X}
  where

  horizontal-pasting-up-diagonal-coherence-triangle-maps :
    coherence-triangle-maps' top diagonal left 
    coherence-triangle-maps bottom right diagonal 
    coherence-square-maps top left right bottom
  horizontal-pasting-up-diagonal-coherence-triangle-maps H K =
    (K ·r left) ∙h (right ·l H)

Recent changes