# Cospans of types ```agda module foundation.cospans where ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.structure-identity-principle open import foundation.univalence open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.commuting-triangles-of-maps open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families ``` </details> ## Idea A {{#concept "cospan" Disambiguation="types" Agda=cospan}} from `A` to `B` consists of a type `X` and maps `f : A → X` and `g : B → X`, as indicated in the diagram ```text f g A -----> X <----- B ``` We disambiguate between cospans and [cospan diagrams](foundation.cospan-diagrams.md). We consider a cospan from `A` to `B` a morphism from `A` to `B` in the category of types and cospans between them, whereas we consider cospan diagrams to be _objects_ in the category of diagrams of types of the form `* <---- * ----> *`. Conceptually there is a subtle, but important distinction between cospans and cospan diagrams. Cospan diagrams are more suitable for functorial operations that take "cospans" as input, but for which the functorial action takes a natural transformation, i.e., a morphism of cospan diagrams, as input. Examples of this kind include [pullbacks](foundation.pullbacks.md). ## Definitions ### Cospans ```agda cospan : {l1 l2 : Level} (l : Level) (A : UU l1) (B : UU l2) → UU (l1 ⊔ l2 ⊔ lsuc l) cospan l A B = Σ (UU l) (λ X → (A → X) × (B → X)) module _ {l1 l2 : Level} {l : Level} {A : UU l1} {B : UU l2} (c : cospan l A B) where codomain-cospan : UU l codomain-cospan = pr1 c left-map-cospan : A → codomain-cospan left-map-cospan = pr1 (pr2 c) right-map-cospan : B → codomain-cospan right-map-cospan = pr2 (pr2 c) ``` ## See also - The formal dual of cospans is [spans](foundation.spans.md). - [Pullbacks](foundation-core.pullbacks.md) are limits of [cospan diagrams](foundation.cospan-diagrams.md). ### Table of files about pullbacks The following table lists files that are about pullbacks as a general concept. {{#include tables/pullbacks.md}}