# Equivalences of cospans ```agda module foundation.equivalences-cospans where ``` <details><summary>Imports</summary> ```agda open import foundation.cospans open import foundation.dependent-pair-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.morphisms-cospans open import foundation.structure-identity-principle open import foundation.univalence open import foundation.universe-levels open import foundation-core.equivalences open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families ``` </details> ## Idea An {{#concept "equivalence of cospans" Agda=equiv-cospan}} from [cospans](foundation.cospans.md) `(X , f , g)` to `(Y , h , k)` between types `A` and `B` consists of an [equivalence](foundation-core.equivalences.md) `e : X ≃ Y` such that the triangles ```text e e X ----> Y X ----> Y \ / \ / f \ / h g \ / k ∨ ∨ ∨ ∨ A B ``` both [commute](foundation.commuting-triangles-of-maps.md). ## Definitions ### Equivalences of cospans ```agda module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} where equiv-cospan : cospan l3 A B → cospan l4 A B → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) equiv-cospan c d = Σ ( codomain-cospan c ≃ codomain-cospan d) ( λ e → coherence-hom-cospan c d (map-equiv e)) ``` ### The identity equivalence of cospans ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} where id-equiv-cospan : (c : cospan l3 A B) → equiv-cospan c c pr1 (id-equiv-cospan c) = id-equiv pr1 (pr2 (id-equiv-cospan c)) = refl-htpy pr2 (pr2 (id-equiv-cospan c)) = refl-htpy ``` ## Properties ### Characterizing equality of cospans ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} where equiv-eq-cospan : (c d : cospan l3 A B) → c = d → equiv-cospan c d equiv-eq-cospan c .c refl = id-equiv-cospan c is-torsorial-equiv-cospan : (c : cospan l3 A B) → is-torsorial (equiv-cospan c) is-torsorial-equiv-cospan c = is-torsorial-Eq-structure ( is-torsorial-equiv (pr1 c)) ( codomain-cospan c , id-equiv) ( is-torsorial-Eq-structure ( is-torsorial-htpy' (left-map-cospan c)) ( left-map-cospan c , refl-htpy) ( is-torsorial-htpy' (right-map-cospan c))) is-equiv-equiv-eq-cospan : (c d : cospan l3 A B) → is-equiv (equiv-eq-cospan c d) is-equiv-equiv-eq-cospan c = fundamental-theorem-id (is-torsorial-equiv-cospan c) (equiv-eq-cospan c) extensionality-cospan : (c d : cospan l3 A B) → (c = d) ≃ (equiv-cospan c d) pr1 (extensionality-cospan c d) = equiv-eq-cospan c d pr2 (extensionality-cospan c d) = is-equiv-equiv-eq-cospan c d eq-equiv-cospan : (c d : cospan l3 A B) → equiv-cospan c d → c = d eq-equiv-cospan c d = map-inv-equiv (extensionality-cospan c d) ```