# The universal property of sequential limits ```agda module foundation.universal-property-sequential-limits where ``` <details><summary>Imports</summary> ```agda open import foundation.action-on-identifications-functions open import foundation.cones-over-inverse-sequential-diagrams open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.inverse-sequential-diagrams open import foundation.postcomposition-functions open import foundation.subtype-identity-principle open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.propositions ``` </details> ## Idea Given an [inverse sequential diagram of types](foundation.inverse-sequential-diagrams.md) ```text fₙ f₁ f₀ ⋯ ---> Aₙ₊₁ ---> Aₙ ---> ⋯ ---> A₂ ---> A₁ ---> A₀ ``` the **sequential limit** `limₙ Aₙ` is a universal type completing the diagram ```text fₙ f₁ f₀ limₙ Aₙ ---> ⋯ ---> Aₙ₊₁ ---> Aₙ ---> ⋯ ---> A₂ ---> A₁ ---> A₀. ``` The **universal property of the sequential limit** states that `limₙ Aₙ` is the terminal such type, by which we mean that given any [cone](foundation.cones-over-inverse-sequential-diagrams.md) over `A` with domain `X`, there is a [unique](foundation-core.contractible-types.md) map `g : X → limₙ Aₙ` exhibiting that cone as a composite of `g` with the cone of `limₙ Aₙ` over `A`. ## Definition ### The universal property of sequential limits ```agda module _ {l1 l2 : Level} (A : inverse-sequential-diagram l1) {X : UU l2} (c : cone-inverse-sequential-diagram A X) where universal-property-sequential-limit : UUω universal-property-sequential-limit = {l : Level} (Y : UU l) → is-equiv (cone-map-inverse-sequential-diagram A {Y = Y} c) module _ {l1 l2 l3 : Level} (A : inverse-sequential-diagram l1) {X : UU l2} (c : cone-inverse-sequential-diagram A X) where map-universal-property-sequential-limit : universal-property-sequential-limit A c → {Y : UU l3} (c' : cone-inverse-sequential-diagram A Y) → Y → X map-universal-property-sequential-limit up-c {Y} c' = map-inv-is-equiv (up-c Y) c' compute-map-universal-property-sequential-limit : (up-c : universal-property-sequential-limit A c) → {Y : UU l3} (c' : cone-inverse-sequential-diagram A Y) → cone-map-inverse-sequential-diagram A c ( map-universal-property-sequential-limit up-c c') = c' compute-map-universal-property-sequential-limit up-c {Y} c' = is-section-map-inv-is-equiv (up-c Y) c' ``` ## Properties ### 3-for-2 property of sequential limits ```agda module _ {l1 l2 l3 : Level} {A : inverse-sequential-diagram l1} {X : UU l2} {Y : UU l3} (c : cone-inverse-sequential-diagram A X) (c' : cone-inverse-sequential-diagram A Y) (h : Y → X) (KLM : htpy-cone-inverse-sequential-diagram A ( cone-map-inverse-sequential-diagram A c h) c') where inv-triangle-cone-cone-inverse-sequential-diagram : {l6 : Level} (D : UU l6) → cone-map-inverse-sequential-diagram A c ∘ postcomp D h ~ cone-map-inverse-sequential-diagram A c' inv-triangle-cone-cone-inverse-sequential-diagram D k = ap ( λ t → cone-map-inverse-sequential-diagram A t k) ( eq-htpy-cone-inverse-sequential-diagram A ( cone-map-inverse-sequential-diagram A c h) c' KLM) triangle-cone-cone-inverse-sequential-diagram : {l6 : Level} (D : UU l6) → cone-map-inverse-sequential-diagram A c' ~ cone-map-inverse-sequential-diagram A c ∘ postcomp D h triangle-cone-cone-inverse-sequential-diagram D k = inv (inv-triangle-cone-cone-inverse-sequential-diagram D k) abstract is-equiv-universal-property-sequential-limit-universal-property-sequential-limit : universal-property-sequential-limit A c → universal-property-sequential-limit A c' → is-equiv h is-equiv-universal-property-sequential-limit-universal-property-sequential-limit up up' = is-equiv-is-equiv-postcomp h ( λ D → is-equiv-top-map-triangle ( cone-map-inverse-sequential-diagram A c') ( cone-map-inverse-sequential-diagram A c) ( postcomp D h) ( triangle-cone-cone-inverse-sequential-diagram D) ( up D) ( up' D)) abstract universal-property-sequential-limit-universal-property-sequential-limit-is-equiv : is-equiv h → universal-property-sequential-limit A c → universal-property-sequential-limit A c' universal-property-sequential-limit-universal-property-sequential-limit-is-equiv is-equiv-h up D = is-equiv-left-map-triangle ( cone-map-inverse-sequential-diagram A c') ( cone-map-inverse-sequential-diagram A c) ( postcomp D h) ( triangle-cone-cone-inverse-sequential-diagram D) ( is-equiv-postcomp-is-equiv h is-equiv-h D) ( up D) abstract universal-property-sequential-limit-is-equiv-universal-property-sequential-limit : universal-property-sequential-limit A c' → is-equiv h → universal-property-sequential-limit A c universal-property-sequential-limit-is-equiv-universal-property-sequential-limit up' is-equiv-h D = is-equiv-right-map-triangle ( cone-map-inverse-sequential-diagram A c') ( cone-map-inverse-sequential-diagram A c) ( postcomp D h) ( triangle-cone-cone-inverse-sequential-diagram D) ( up' D) ( is-equiv-postcomp-is-equiv h is-equiv-h D) ``` ### Uniqueness of maps obtained via the universal property of sequential limits ```agda module _ {l1 l2 : Level} (A : inverse-sequential-diagram l1) {X : UU l2} (c : cone-inverse-sequential-diagram A X) where abstract uniqueness-universal-property-sequential-limit : universal-property-sequential-limit A c → {l3 : Level} (Y : UU l3) (c' : cone-inverse-sequential-diagram A Y) → is-contr ( Σ ( Y → X) ( λ h → htpy-cone-inverse-sequential-diagram A ( cone-map-inverse-sequential-diagram A c h) (c'))) uniqueness-universal-property-sequential-limit up Y c' = is-contr-equiv' ( Σ (Y → X) (λ h → cone-map-inverse-sequential-diagram A c h = c')) ( equiv-tot ( λ h → extensionality-cone-inverse-sequential-diagram A ( cone-map-inverse-sequential-diagram A c h) ( c'))) ( is-contr-map-is-equiv (up Y) c') ``` ### The homotopy of cones obtained from the universal property of sequential limits ```agda module _ {l1 l2 : Level} (A : inverse-sequential-diagram l1) {X : UU l2} where htpy-cone-map-universal-property-sequential-limit : (c : cone-inverse-sequential-diagram A X) (up : universal-property-sequential-limit A c) → {l3 : Level} {Y : UU l3} (c' : cone-inverse-sequential-diagram A Y) → htpy-cone-inverse-sequential-diagram A ( cone-map-inverse-sequential-diagram A c ( map-universal-property-sequential-limit A c up c')) ( c') htpy-cone-map-universal-property-sequential-limit c up c' = htpy-eq-cone-inverse-sequential-diagram A ( cone-map-inverse-sequential-diagram A c ( map-universal-property-sequential-limit A c up c')) ( c') ( compute-map-universal-property-sequential-limit A c up c') ``` ### Unique uniqueness of sequential limits ```agda module _ {l1 l2 l3 : Level} (A : inverse-sequential-diagram l1) {X : UU l2} {Y : UU l3} where abstract uniquely-unique-sequential-limit : ( c' : cone-inverse-sequential-diagram A Y) ( c : cone-inverse-sequential-diagram A X) → ( up-c' : universal-property-sequential-limit A c') → ( up-c : universal-property-sequential-limit A c) → is-contr ( Σ (Y ≃ X) ( λ e → htpy-cone-inverse-sequential-diagram A ( cone-map-inverse-sequential-diagram A c (map-equiv e)) c')) uniquely-unique-sequential-limit c' c up-c' up-c = is-torsorial-Eq-subtype ( uniqueness-universal-property-sequential-limit A c up-c Y c') ( is-property-is-equiv) ( map-universal-property-sequential-limit A c up-c c') ( htpy-cone-map-universal-property-sequential-limit A c up-c c') ( is-equiv-universal-property-sequential-limit-universal-property-sequential-limit ( c) ( c') ( map-universal-property-sequential-limit A c up-c c') ( htpy-cone-map-universal-property-sequential-limit A c up-c c') ( up-c) ( up-c')) ``` ## Table of files about sequential limits The following table lists files that are about sequential limits as a general concept. {{#include tables/sequential-limits.md}} ## See also - For sequential colimits, see [`synthetic-homotopy-theory.universal-property-sequential-colimits`](synthetic-homotopy-theory.universal-property-sequential-colimits.md)