Descent data for type families of equivalence types over pushouts

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

Created on 2024-06-05.
Last modified on 2024-06-05.

{-# OPTIONS --lossy-unification #-}

module synthetic-homotopy-theory.descent-data-equivalence-types-over-pushouts where
Imports
open import foundation.commuting-squares-of-maps
open import foundation.commuting-triangles-of-maps
open import foundation.contractible-maps
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalence-extensionality
open import foundation.equivalences
open import foundation.fibers-of-maps
open import foundation.function-types
open import foundation.functoriality-dependent-function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
open import foundation.homotopy-algebra
open import foundation.postcomposition-functions
open import foundation.span-diagrams
open import foundation.transport-along-identifications
open import foundation.universal-property-equivalences
open import foundation.universe-levels
open import foundation.whiskering-homotopies-composition

open import synthetic-homotopy-theory.cocones-under-spans
open import synthetic-homotopy-theory.descent-data-pushouts
open import synthetic-homotopy-theory.equivalences-descent-data-pushouts
open import synthetic-homotopy-theory.families-descent-data-pushouts
open import synthetic-homotopy-theory.morphisms-descent-data-pushouts
open import synthetic-homotopy-theory.sections-descent-data-pushouts
open import synthetic-homotopy-theory.universal-property-pushouts

Idea

Given two families with descent data for pushouts P ≈ (PA, PB, PS) and R ≈ (RA, RB, RS), we show that fiberwise equivalences (x : X) → P x ≃ R x correspond to equivalences (PA, PB, PS) ≃ (RA, RB, RS).

Proof: The proof follows exactly the same pattern as the one in descent-data-function-types-over-pushouts.

Definitions

The type family of fiberwise equivalences with corresponding descent data for pushouts

module _
  {l1 l2 l3 l4 l5 l6 : Level} {𝒮 : span-diagram l1 l2 l3}
  {X : UU l4} {c : cocone-span-diagram 𝒮 X}
  (P : family-with-descent-data-pushout c l5)
  (R : family-with-descent-data-pushout c l6)
  where

  family-cocone-equivalence-type-pushout : X  UU (l5  l6)
  family-cocone-equivalence-type-pushout x =
    family-cocone-family-with-descent-data-pushout P x 
    family-cocone-family-with-descent-data-pushout R x

  descent-data-equivalence-type-pushout : descent-data-pushout 𝒮 (l5  l6)
  pr1 descent-data-equivalence-type-pushout a =
    left-family-family-with-descent-data-pushout P a 
    left-family-family-with-descent-data-pushout R a
  pr1 (pr2 descent-data-equivalence-type-pushout) b =
    right-family-family-with-descent-data-pushout P b 
    right-family-family-with-descent-data-pushout R b
  pr2 (pr2 descent-data-equivalence-type-pushout) s =
    ( equiv-postcomp-equiv
      ( equiv-family-family-with-descent-data-pushout R s)
      ( _)) ∘e
    ( equiv-precomp-equiv
      ( inv-equiv (equiv-family-family-with-descent-data-pushout P s))
      ( _))

  left-equiv-equiv-descent-data-equivalence-type-pushout :
    (a : domain-span-diagram 𝒮) 
    ( family-cocone-family-with-descent-data-pushout P
        ( horizontal-map-cocone _ _ c a) 
      family-cocone-family-with-descent-data-pushout R
        ( horizontal-map-cocone _ _ c a)) 
    ( left-family-family-with-descent-data-pushout P a 
      left-family-family-with-descent-data-pushout R a)
  left-equiv-equiv-descent-data-equivalence-type-pushout a =
    ( equiv-postcomp-equiv
      ( left-equiv-family-with-descent-data-pushout R a)
      ( _)) ∘e
    ( equiv-precomp-equiv
      ( inv-equiv (left-equiv-family-with-descent-data-pushout P a))
      ( _))

  right-equiv-equiv-descent-data-equivalence-type-pushout :
    (b : codomain-span-diagram 𝒮) 
    ( family-cocone-family-with-descent-data-pushout P
        ( vertical-map-cocone _ _ c b) 
      family-cocone-family-with-descent-data-pushout R
        ( vertical-map-cocone _ _ c b)) 
    ( right-family-family-with-descent-data-pushout P b 
      right-family-family-with-descent-data-pushout R b)
  right-equiv-equiv-descent-data-equivalence-type-pushout b =
    ( equiv-postcomp-equiv
      ( right-equiv-family-with-descent-data-pushout R b)
      ( _)) ∘e
    ( equiv-precomp-equiv
      ( inv-equiv (right-equiv-family-with-descent-data-pushout P b))
      ( _))

  coherence-equiv-descent-data-equivalence-type-pushout :
    (s : spanning-type-span-diagram 𝒮) 
    coherence-square-maps
      ( map-equiv
        ( left-equiv-equiv-descent-data-equivalence-type-pushout
          ( left-map-span-diagram 𝒮 s)))
      ( tr
        ( family-cocone-equivalence-type-pushout)
        ( coherence-square-cocone _ _ c s))
      ( map-family-descent-data-pushout
        ( descent-data-equivalence-type-pushout)
        ( s))
      ( map-equiv
        ( right-equiv-equiv-descent-data-equivalence-type-pushout
          ( right-map-span-diagram 𝒮 s)))
  coherence-equiv-descent-data-equivalence-type-pushout s =
    ( ( map-equiv
      ( right-equiv-equiv-descent-data-equivalence-type-pushout
        ( right-map-span-diagram 𝒮 s))) ·l
      ( tr-equiv-type
        ( family-cocone-family-with-descent-data-pushout P)
        ( family-cocone-family-with-descent-data-pushout R)
        ( coherence-square-cocone _ _ c s))) ∙h
    ( λ e 
      eq-htpy-equiv
        ( horizontal-concat-htpy
          ( coherence-family-with-descent-data-pushout R s ·r map-equiv e)
          ( coherence-square-maps-inv-equiv
            ( equiv-tr
              ( family-cocone-family-with-descent-data-pushout P)
              ( coherence-square-cocone _ _ c s))
            ( left-equiv-family-with-descent-data-pushout P
              ( left-map-span-diagram 𝒮 s))
            ( right-equiv-family-with-descent-data-pushout P
              ( right-map-span-diagram 𝒮 s))
            ( equiv-family-family-with-descent-data-pushout P s)
            ( inv-htpy (coherence-family-with-descent-data-pushout P s)))))

  equiv-descent-data-equivalence-type-pushout :
    equiv-descent-data-pushout
      ( descent-data-family-cocone-span-diagram c
        ( family-cocone-equivalence-type-pushout))
      ( descent-data-equivalence-type-pushout)
  pr1 equiv-descent-data-equivalence-type-pushout =
    left-equiv-equiv-descent-data-equivalence-type-pushout
  pr1 (pr2 equiv-descent-data-equivalence-type-pushout) =
    right-equiv-equiv-descent-data-equivalence-type-pushout
  pr2 (pr2 equiv-descent-data-equivalence-type-pushout) =
    coherence-equiv-descent-data-equivalence-type-pushout

  family-with-descent-data-equivalence-type-pushout :
    family-with-descent-data-pushout c (l5  l6)
  pr1 family-with-descent-data-equivalence-type-pushout =
    family-cocone-equivalence-type-pushout
  pr1 (pr2 family-with-descent-data-equivalence-type-pushout) =
    descent-data-equivalence-type-pushout
  pr2 (pr2 family-with-descent-data-equivalence-type-pushout) =
    equiv-descent-data-equivalence-type-pushout

Properties

Sections of descent data for families of equivalences correspond to equivalences of descent data

module _
  {l1 l2 l3 l4 l5 l6 : Level} {𝒮 : span-diagram l1 l2 l3}
  {X : UU l4} {c : cocone-span-diagram 𝒮 X}
  (P : family-with-descent-data-pushout c l5)
  (R : family-with-descent-data-pushout c l6)
  where

  equiv-section-descent-data-equivalence-type-pushout :
    section-descent-data-pushout
      ( descent-data-equivalence-type-pushout P R) 
    equiv-descent-data-pushout
      ( descent-data-family-with-descent-data-pushout P)
      ( descent-data-family-with-descent-data-pushout R)
  equiv-section-descent-data-equivalence-type-pushout =
    tot
      ( λ tA 
        tot
          ( λ tB tS s 
            inv-htpy
              ( map-inv-equiv
                ( equiv-coherence-triangle-maps-inv-top'
                  ( ( map-family-family-with-descent-data-pushout R s) 
                    ( map-equiv (tA (left-map-span-diagram 𝒮 s))))
                  ( map-equiv (tB (right-map-span-diagram 𝒮 s)))
                  ( equiv-family-family-with-descent-data-pushout P s))
                ( htpy-eq-equiv (tS s)))))

  abstract
    is-equiv-equiv-section-descent-data-equivalence-type-pushout :
      is-equiv equiv-section-descent-data-equivalence-type-pushout
    is-equiv-equiv-section-descent-data-equivalence-type-pushout =
      is-equiv-tot-is-fiberwise-equiv
        ( λ tA 
          is-equiv-tot-is-fiberwise-equiv
            ( λ tB 
              is-equiv-map-Π-is-fiberwise-equiv
                ( λ s 
                  is-equiv-comp _ _
                    ( is-equiv-map-equiv (extensionality-equiv _ _))
                    ( is-equiv-comp _ _
                      ( is-equiv-map-inv-equiv
                        ( equiv-coherence-triangle-maps-inv-top'
                          ( (map-family-family-with-descent-data-pushout R s) 
                            ( map-equiv (tA (left-map-span-diagram 𝒮 s))))
                          ( map-equiv (tB (right-map-span-diagram 𝒮 s)))
                          ( equiv-family-family-with-descent-data-pushout P s)))
                      ( is-equiv-inv-htpy _ _)))))

  equiv-descent-data-equiv-family-cocone-span-diagram :
    ( (x : X) 
      family-cocone-family-with-descent-data-pushout P x 
      family-cocone-family-with-descent-data-pushout R x) 
    equiv-descent-data-pushout
      ( descent-data-family-with-descent-data-pushout P)
      ( descent-data-family-with-descent-data-pushout R)
  equiv-descent-data-equiv-family-cocone-span-diagram =
    ( equiv-section-descent-data-equivalence-type-pushout) 
    ( section-descent-data-section-family-cocone-span-diagram
      ( family-with-descent-data-equivalence-type-pushout P R))

  abstract
    is-equiv-equiv-descent-data-equiv-family-cocone-span-diagram :
      universal-property-pushout _ _ c 
      is-equiv equiv-descent-data-equiv-family-cocone-span-diagram
    is-equiv-equiv-descent-data-equiv-family-cocone-span-diagram up-c =
      is-equiv-comp _ _
        ( is-equiv-section-descent-data-section-family-cocone-span-diagram _
          ( up-c))
        ( is-equiv-equiv-section-descent-data-equivalence-type-pushout)

As a corollary, given an equivalence (hA, hB, hS) : (PA, PB, PS) ≃ (RA, RB, RS), there is a unique family of equivalences h : (x : X) → P x → R x such that its induced equivalence is homotopic to (hA, hB, hS). The homotopy provides us in particular with the component-wise homotopies

                 hA a                               hB a
          PA a --------> RA a                PB b --------> RB b
            |              ∧                   |              ∧
  (eᴾA a)⁻¹ |              | eᴿA a   (eᴾB b)⁻¹ |              | eᴿB b
            |              |                   |              |
            ∨              |                   ∨              |
         P (ia) ------> R (ia)              P (jb) ------> R (jb)
                h (ia)                             h (jb)

which we can turn into the computation rules

              eᴾA a                           eᴾB a
      P (ia) -------> PA a            P (jb) -------> PB b
         |              |                |              |
  h (ia) |              | hA a    h (jb) |              | hB b
         |              |                |              |
         ∨              ∨                ∨              ∨
      R (ia) -------> RA a            R (jb) -------> RB b
              eᴿA a                           eᴿB b

by inverting the inverted equivalences.

module _
  {l1 l2 l3 l4 l5 l6 : Level} {𝒮 : span-diagram l1 l2 l3}
  {X : UU l4} {c : cocone-span-diagram 𝒮 X}
  (up-c : universal-property-pushout _ _ c)
  (P : family-with-descent-data-pushout c l5)
  (R : family-with-descent-data-pushout c l6)
  (e :
    equiv-descent-data-pushout
      ( descent-data-family-with-descent-data-pushout P)
      ( descent-data-family-with-descent-data-pushout R))
  where

  abstract
    uniqueness-equiv-equiv-descent-data-pushout :
      is-contr
        ( Σ ( (x : X) 
              family-cocone-family-with-descent-data-pushout P x 
              family-cocone-family-with-descent-data-pushout R x)
            ( λ h 
              htpy-equiv-descent-data-pushout
                ( descent-data-family-with-descent-data-pushout P)
                ( descent-data-family-with-descent-data-pushout R)
                ( equiv-descent-data-equiv-family-cocone-span-diagram P R h)
                ( e)))
    uniqueness-equiv-equiv-descent-data-pushout =
      is-contr-equiv'
        ( fiber (equiv-descent-data-equiv-family-cocone-span-diagram P R) e)
        ( equiv-tot
          ( λ f  extensionality-equiv-descent-data-pushout _ e))
        ( is-contr-map-is-equiv
          ( is-equiv-equiv-descent-data-equiv-family-cocone-span-diagram P R
            ( up-c))
          ( e))

  equiv-equiv-descent-data-pushout :
    (x : X) 
    family-cocone-family-with-descent-data-pushout P x 
    family-cocone-family-with-descent-data-pushout R x
  equiv-equiv-descent-data-pushout =
    pr1 (center uniqueness-equiv-equiv-descent-data-pushout)

  map-equiv-descent-data-pushout :
    (x : X) 
    family-cocone-family-with-descent-data-pushout P x 
    family-cocone-family-with-descent-data-pushout R x
  map-equiv-descent-data-pushout x =
    map-equiv (equiv-equiv-descent-data-pushout x)

  compute-left-map-equiv-equiv-descent-data-pushout :
    (a : domain-span-diagram 𝒮) 
    coherence-square-maps
      ( left-map-family-with-descent-data-pushout P a)
      ( map-equiv-descent-data-pushout (horizontal-map-cocone _ _ c a))
      ( left-map-equiv-descent-data-pushout
        ( descent-data-family-with-descent-data-pushout P)
        ( descent-data-family-with-descent-data-pushout R)
        ( e)
        ( a))
      ( left-map-family-with-descent-data-pushout R a)
  compute-left-map-equiv-equiv-descent-data-pushout a =
    map-inv-equiv
      ( equiv-coherence-triangle-maps-inv-top'
        ( left-map-family-with-descent-data-pushout R a 
          map-equiv-descent-data-pushout (horizontal-map-cocone _ _ c a))
        ( left-map-equiv-descent-data-pushout
          ( descent-data-family-with-descent-data-pushout P)
          ( descent-data-family-with-descent-data-pushout R)
          ( e)
          ( a))
        ( left-equiv-family-with-descent-data-pushout P a))
      ( pr1 (pr2 (center uniqueness-equiv-equiv-descent-data-pushout)) a)

  compute-right-map-equiv-equiv-descent-data-pushout :
    (b : codomain-span-diagram 𝒮) 
    coherence-square-maps
      ( right-map-family-with-descent-data-pushout P b)
      ( map-equiv-descent-data-pushout (vertical-map-cocone _ _ c b))
      ( right-map-equiv-descent-data-pushout
        ( descent-data-family-with-descent-data-pushout P)
        ( descent-data-family-with-descent-data-pushout R)
        ( e)
        ( b))
      ( right-map-family-with-descent-data-pushout R b)
  compute-right-map-equiv-equiv-descent-data-pushout b =
    map-inv-equiv
      ( equiv-coherence-triangle-maps-inv-top'
        ( right-map-family-with-descent-data-pushout R b 
          map-equiv-descent-data-pushout (vertical-map-cocone _ _ c b))
        ( right-map-equiv-descent-data-pushout
          ( descent-data-family-with-descent-data-pushout P)
          ( descent-data-family-with-descent-data-pushout R)
          ( e)
          ( b))
        ( right-equiv-family-with-descent-data-pushout P b))
      ( pr1 (pr2 (pr2 (center uniqueness-equiv-equiv-descent-data-pushout))) b)

Recent changes