Equivalences of descent data for pushouts
Content created by Vojtěch Štěpančík.
Created on 2024-05-31.
Last modified on 2024-06-05.
module synthetic-homotopy-theory.equivalences-descent-data-pushouts where
Imports
open import foundation.commuting-squares-of-maps open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types open import foundation.equivalence-extensionality open import foundation.equivalences open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies open import foundation.homotopy-induction open import foundation.identity-types open import foundation.span-diagrams open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.univalence open import foundation.universe-levels open import synthetic-homotopy-theory.descent-data-pushouts open import synthetic-homotopy-theory.morphisms-descent-data-pushouts
Idea
Given descent data for
pushouts (PA, PB, PS)
and
(QA, QB, QS)
, an
equivalence¶
between them is a pair of fiberwise equivalences
eA : (a : A) → PA a ≃ QA a
eB : (b : B) → PB b ≃ QB b
equipped with a family of homotopies making
eA(fs)
PA(fs) --------> QA(fs)
| |
PS s | | QS s
| |
∨ ∨
PB(gs) --------> QB(gs)
eB(gs)
commute for every s : S
.
We show that equivalences characterize the identity types of descent data for pushouts.
By forgetting that the fiberwise maps are equivalences, we get the underlying morphism of descent data. We define homotopies of equivalences of descent data to be homotopies of the underlying morphisms, and show that homotopies characterize the identity type of equivalences of descent data.
Definitions
Equivalences of descent data for pushouts
Note that the descent data arguments cannot be inferred when calling
left-equiv-equiv-descent-data-pushout
and the like, since Agda cannot infer
the proofs of is-equiv
of their gluing maps.
module _ {l1 l2 l3 l4 l5 : Level} {𝒮 : span-diagram l1 l2 l3} (P : descent-data-pushout 𝒮 l4) (Q : descent-data-pushout 𝒮 l5) where equiv-descent-data-pushout : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5) equiv-descent-data-pushout = Σ ( (a : domain-span-diagram 𝒮) → left-family-descent-data-pushout P a ≃ left-family-descent-data-pushout Q a) ( λ eA → Σ ( (b : codomain-span-diagram 𝒮) → right-family-descent-data-pushout P b ≃ right-family-descent-data-pushout Q b) ( λ eB → (s : spanning-type-span-diagram 𝒮) → coherence-square-maps ( map-equiv (eA (left-map-span-diagram 𝒮 s))) ( map-family-descent-data-pushout P s) ( map-family-descent-data-pushout Q s) ( map-equiv (eB (right-map-span-diagram 𝒮 s))))) module _ (e : equiv-descent-data-pushout) where left-equiv-equiv-descent-data-pushout : (a : domain-span-diagram 𝒮) → left-family-descent-data-pushout P a ≃ left-family-descent-data-pushout Q a left-equiv-equiv-descent-data-pushout = pr1 e left-map-equiv-descent-data-pushout : (a : domain-span-diagram 𝒮) → left-family-descent-data-pushout P a → left-family-descent-data-pushout Q a left-map-equiv-descent-data-pushout a = map-equiv (left-equiv-equiv-descent-data-pushout a) is-equiv-left-map-equiv-descent-data-pushout : (a : domain-span-diagram 𝒮) → is-equiv (left-map-equiv-descent-data-pushout a) is-equiv-left-map-equiv-descent-data-pushout a = is-equiv-map-equiv (left-equiv-equiv-descent-data-pushout a) inv-left-map-equiv-descent-data-pushout : (a : domain-span-diagram 𝒮) → left-family-descent-data-pushout Q a → left-family-descent-data-pushout P a inv-left-map-equiv-descent-data-pushout a = map-inv-equiv (left-equiv-equiv-descent-data-pushout a) right-equiv-equiv-descent-data-pushout : (b : codomain-span-diagram 𝒮) → right-family-descent-data-pushout P b ≃ right-family-descent-data-pushout Q b right-equiv-equiv-descent-data-pushout = pr1 (pr2 e) right-map-equiv-descent-data-pushout : (b : codomain-span-diagram 𝒮) → right-family-descent-data-pushout P b → right-family-descent-data-pushout Q b right-map-equiv-descent-data-pushout b = map-equiv (right-equiv-equiv-descent-data-pushout b) is-equiv-right-map-equiv-descent-data-pushout : (b : codomain-span-diagram 𝒮) → is-equiv (right-map-equiv-descent-data-pushout b) is-equiv-right-map-equiv-descent-data-pushout b = is-equiv-map-equiv (right-equiv-equiv-descent-data-pushout b) inv-right-map-equiv-descent-data-pushout : (b : codomain-span-diagram 𝒮) → right-family-descent-data-pushout Q b → right-family-descent-data-pushout P b inv-right-map-equiv-descent-data-pushout b = map-inv-equiv (right-equiv-equiv-descent-data-pushout b) coherence-equiv-descent-data-pushout : (s : spanning-type-span-diagram 𝒮) → coherence-square-maps ( left-map-equiv-descent-data-pushout (left-map-span-diagram 𝒮 s)) ( map-family-descent-data-pushout P s) ( map-family-descent-data-pushout Q s) ( right-map-equiv-descent-data-pushout (right-map-span-diagram 𝒮 s)) coherence-equiv-descent-data-pushout = pr2 (pr2 e) hom-equiv-descent-data-pushout : hom-descent-data-pushout P Q pr1 hom-equiv-descent-data-pushout = left-map-equiv-descent-data-pushout pr1 (pr2 hom-equiv-descent-data-pushout) = right-map-equiv-descent-data-pushout pr2 (pr2 hom-equiv-descent-data-pushout) = coherence-equiv-descent-data-pushout
The identity equivalence of descent data for pushouts
module _ {l1 l2 l3 l4 : Level} {𝒮 : span-diagram l1 l2 l3} (P : descent-data-pushout 𝒮 l4) where id-equiv-descent-data-pushout : equiv-descent-data-pushout P P pr1 id-equiv-descent-data-pushout a = id-equiv pr1 (pr2 id-equiv-descent-data-pushout) b = id-equiv pr2 (pr2 id-equiv-descent-data-pushout) s = refl-htpy
Inverses of equivalences of descent data for pushouts
Taking an inverse of an equivalence (eA, eB, eS)
of descent data amounts to
taking the inverses of the fiberwise maps
a : A ⊢ eA(a)⁻¹ : QA a ≃ PA a
b : B ⊢ eB(b)⁻¹ : QB b ≃ PB b
and mirroring the coherence squares vertically to get
eA(a)⁻¹
QA(fs) --------> PA(fs)
| |
QS s | | PS s
| |
∨ ∨
QB(gs) --------> PB(gs).
eB(a)⁻¹
module _ {l1 l2 l3 l4 l5 : Level} {𝒮 : span-diagram l1 l2 l3} (P : descent-data-pushout 𝒮 l4) (Q : descent-data-pushout 𝒮 l5) where inv-equiv-descent-data-pushout : equiv-descent-data-pushout P Q → equiv-descent-data-pushout Q P pr1 (inv-equiv-descent-data-pushout e) a = inv-equiv (left-equiv-equiv-descent-data-pushout P Q e a) pr1 (pr2 (inv-equiv-descent-data-pushout e)) b = inv-equiv (right-equiv-equiv-descent-data-pushout P Q e b) pr2 (pr2 (inv-equiv-descent-data-pushout e)) s = horizontal-inv-equiv-coherence-square-maps ( left-equiv-equiv-descent-data-pushout P Q e (left-map-span-diagram 𝒮 s)) ( map-family-descent-data-pushout P s) ( map-family-descent-data-pushout Q s) ( right-equiv-equiv-descent-data-pushout P Q e ( right-map-span-diagram 𝒮 s)) ( coherence-equiv-descent-data-pushout P Q e s)
Homotopies of equivalences of descent data for pushouts
module _ {l1 l2 l3 l4 l5 : Level} {𝒮 : span-diagram l1 l2 l3} (P : descent-data-pushout 𝒮 l4) (Q : descent-data-pushout 𝒮 l5) where htpy-equiv-descent-data-pushout : (e f : equiv-descent-data-pushout P Q) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5) htpy-equiv-descent-data-pushout e f = htpy-hom-descent-data-pushout P Q ( hom-equiv-descent-data-pushout P Q e) ( hom-equiv-descent-data-pushout P Q f)
Properties
Characterization of identity types of descent data for pushouts
module _ {l1 l2 l3 l4 : Level} {𝒮 : span-diagram l1 l2 l3} (P : descent-data-pushout 𝒮 l4) where equiv-eq-descent-data-pushout : (Q : descent-data-pushout 𝒮 l4) → P = Q → equiv-descent-data-pushout P Q equiv-eq-descent-data-pushout .P refl = id-equiv-descent-data-pushout P abstract is-torsorial-equiv-descent-data-pushout : is-torsorial (equiv-descent-data-pushout {l5 = l4} P) is-torsorial-equiv-descent-data-pushout = is-torsorial-Eq-structure ( is-torsorial-Eq-Π ( λ a → is-torsorial-equiv (left-family-descent-data-pushout P a))) ( left-family-descent-data-pushout P , λ a → id-equiv) ( is-torsorial-Eq-structure ( is-torsorial-Eq-Π ( λ b → is-torsorial-equiv (right-family-descent-data-pushout P b))) ( right-family-descent-data-pushout P , λ b → id-equiv) ( is-torsorial-Eq-Π ( λ s → is-torsorial-htpy-equiv (equiv-family-descent-data-pushout P s)))) is-equiv-equiv-eq-descent-data-pushout : (Q : descent-data-pushout 𝒮 l4) → is-equiv (equiv-eq-descent-data-pushout Q) is-equiv-equiv-eq-descent-data-pushout = fundamental-theorem-id ( is-torsorial-equiv-descent-data-pushout) ( equiv-eq-descent-data-pushout) extensionality-descent-data-pushout : (Q : descent-data-pushout 𝒮 l4) → (P = Q) ≃ equiv-descent-data-pushout P Q pr1 (extensionality-descent-data-pushout Q) = equiv-eq-descent-data-pushout Q pr2 (extensionality-descent-data-pushout Q) = is-equiv-equiv-eq-descent-data-pushout Q eq-equiv-descent-data-pushout : (Q : descent-data-pushout 𝒮 l4) → equiv-descent-data-pushout P Q → P = Q eq-equiv-descent-data-pushout Q = map-inv-equiv (extensionality-descent-data-pushout Q)
Characterization of identity types of equivalences of descent data of pushouts
module _ {l1 l2 l3 l4 l5 : Level} {𝒮 : span-diagram l1 l2 l3} {P : descent-data-pushout 𝒮 l4} {Q : descent-data-pushout 𝒮 l5} (e : equiv-descent-data-pushout P Q) where htpy-eq-equiv-descent-data-pushout : (f : equiv-descent-data-pushout P Q) → (e = f) → htpy-equiv-descent-data-pushout P Q e f htpy-eq-equiv-descent-data-pushout .e refl = refl-htpy-hom-descent-data-pushout P Q ( hom-equiv-descent-data-pushout P Q e) abstract is-torsorial-htpy-equiv-descent-data-pushout : is-torsorial (htpy-equiv-descent-data-pushout P Q e) is-torsorial-htpy-equiv-descent-data-pushout = is-torsorial-Eq-structure ( is-torsorial-Eq-Π ( λ a → is-torsorial-htpy-equiv ( left-equiv-equiv-descent-data-pushout P Q e a))) ( left-equiv-equiv-descent-data-pushout P Q e , λ a → refl-htpy) ( is-torsorial-Eq-structure ( is-torsorial-Eq-Π ( λ b → is-torsorial-htpy-equiv ( right-equiv-equiv-descent-data-pushout P Q e b))) ( right-equiv-equiv-descent-data-pushout P Q e , λ b → refl-htpy) ( is-torsorial-Eq-Π ( λ s → is-torsorial-htpy ( coherence-equiv-descent-data-pushout P Q e s ∙h refl-htpy)))) is-equiv-htpy-eq-equiv-descent-data-pushout : (f : equiv-descent-data-pushout P Q) → is-equiv (htpy-eq-equiv-descent-data-pushout f) is-equiv-htpy-eq-equiv-descent-data-pushout = fundamental-theorem-id ( is-torsorial-htpy-equiv-descent-data-pushout) ( htpy-eq-equiv-descent-data-pushout) extensionality-equiv-descent-data-pushout : (f : equiv-descent-data-pushout P Q) → (e = f) ≃ htpy-hom-descent-data-pushout P Q ( hom-equiv-descent-data-pushout P Q e) ( hom-equiv-descent-data-pushout P Q f) pr1 (extensionality-equiv-descent-data-pushout f) = htpy-eq-equiv-descent-data-pushout f pr2 (extensionality-equiv-descent-data-pushout f) = is-equiv-htpy-eq-equiv-descent-data-pushout f
Recent changes
- 2024-06-05. Vojtěch Štěpančík. Characterization of various families over pushouts (#1148).
- 2024-05-31. Vojtěch Štěpančík. Refactor the descent property of pushouts (#1145).