Jon Sterling, started 5th Oct 2022

This file contains some lemmas about precomposing embeddings onto homotopies.

\begin{code}

{-# OPTIONS --safe --without-K #-}

module Modal.Homotopy where

open import MLTT.Spartan
open import UF.Base
open import UF.Embeddings
open import UF.Equiv
open import UF.FunExt

homotopy-precomp
  : {𝓤 𝓥 𝓦 : Universe}
   {U : 𝓤 ̇ } {X : 𝓥 ̇ } {Y : 𝓦 ̇ }
   (f g : X  Y)
   (i : U  X)
   f  g
   f  i  g  i
homotopy-precomp f g i h =
 h  i

\end{code}

The following is a slight generalization of Lemma 5.1.18 of Egbert Rijke's
doctoral dissertation.

\begin{code}
homotopy-precomp-by-embedding-is-equiv
 : {𝓤 𝓥 𝓦 : Universe}
  (fe0 : funext 𝓥 𝓦)
  (fe1 : funext 𝓤 𝓦)
  (fe2 : funext (𝓥  𝓦) (𝓤  𝓦))
  (fe3 : funext (𝓥  𝓦) (𝓥  𝓦))
  {U : 𝓤 ̇ } {X : 𝓥 ̇ } {Y : 𝓦 ̇ }
  (f g : X  Y)
  (i : U  X)
  (precomp-i-is-emb : is-embedding λ (- : X  Y)  -  i)
  is-equiv (homotopy-precomp f g i)
homotopy-precomp-by-embedding-is-equiv fe0 fe1 fe2 fe3 f g i precomp-i-is-emb =
 transport is-equiv composite-is-precomp (eqtofun- composite)

 where
  composite : f  g  (f  i  g  i)
  composite =
   ≃-sym (≃-funext fe0 f g)
     (ap (_∘ i) , embedding-gives-embedding' _ precomp-i-is-emb _ _)
     ≃-funext fe1 (f  i) (g  i)

  composite-is-precomp : eqtofun composite  homotopy-precomp f g i
  composite-is-precomp =
   dfunext fe2 λ h 
   eqtofun composite h =⟨ ap happly (aux h) 
   happly (dfunext fe1 (h  i)) =⟨ happly-funext fe1 _ _ (h  i) 
   homotopy-precomp f g i h 

   where
    aux : (h : f  g)  ap (_∘ i) (inverse _ (fe0 f g) h)  dfunext fe1 (h  i)
    aux h =
     ap (_∘ i) (inverse (happly' f g) (fe0 f g) h)
      =⟨ ap  -  ap (_∘ i) (- h)) (inverse-of-happly-is-dfunext fe0 fe3 f g) 
     ap (_∘ i) (dfunext fe0 h)
      =⟨ ap-precomp-funext _ _ i h fe0 fe1 
     dfunext fe1 (h  i) 

\end{code}