Morphisms in the coslice category of types

module foundation.coslice where
Imports
open import foundation.function-extensionality
open import foundation.structure-identity-principle

open import foundation-core.dependent-pair-types
open import foundation-core.equivalences
open import foundation-core.functions
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.universe-levels

Idea

Given a span of maps

      X
     / \
  f /   \ g
   v     v
  A       B,

we define a morphism between the maps in the coslice category of types to be a map h : A → B together with a coherence triangle (h ∘ f) ~ g:

      X
     / \
  f /   \ g
   v     v
  A ----> B.
      h

Definition

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

  hom-coslice = Σ (A  B)  h  (h  f) ~ g)

module _
  {l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3} {f : X  A} {g : X  B}
  where

  map-hom-coslice : hom-coslice f g  (A  B)
  map-hom-coslice = pr1

  triangle-hom-coslice :
    (h : hom-coslice f g)  ((map-hom-coslice h)  f) ~ g
  triangle-hom-coslice = pr2

Properties

Characterizing the identity type of coslice morphisms

module _
  {l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3} {f : X  A} {g : X  B}
  where

  htpy-hom-coslice :
    (h k : hom-coslice f g)  UU (l1  l2  l3)
  htpy-hom-coslice h k =
    Σ ( map-hom-coslice h ~ map-hom-coslice k)
      ( λ H 
        (triangle-hom-coslice h) ~ ((H ·r f) ∙h (triangle-hom-coslice k)))

  extensionality-hom-coslice :
    (h k : hom-coslice f g)  (h  k)  htpy-hom-coslice h k
  extensionality-hom-coslice (pair h H) =
    extensionality-Σ
      ( λ {h' : A  B} (H' : (h'  f) ~ g) (K : h ~ h')  H ~ ((K ·r f) ∙h H'))
      ( refl-htpy)
      ( refl-htpy)
      ( λ h'  equiv-funext)
      ( λ H'  equiv-funext)

  eq-htpy-hom-coslice :
    (h k : hom-coslice f g) (H : map-hom-coslice h ~ map-hom-coslice k)
    (K : (triangle-hom-coslice h) ~ ((H ·r f) ∙h (triangle-hom-coslice k))) 
    h  k
  eq-htpy-hom-coslice h k H K =
    map-inv-equiv (extensionality-hom-coslice h k) (pair H K)