# Sequential limits
```agda
module foundation.sequential-limits where
```
<details><summary>Imports</summary>
```agda
open import elementary-number-theory.natural-numbers
open import foundation.action-on-identifications-functions
open import foundation.cones-over-inverse-sequential-diagrams
open import foundation.dependent-pair-types
open import foundation.equality-dependent-function-types
open import foundation.equivalences
open import foundation.fundamental-theorem-of-identity-types
open import foundation.homotopy-induction
open import foundation.inverse-sequential-diagrams
open import foundation.structure-identity-principle
open import foundation.universal-property-sequential-limits
open import foundation.universe-levels
open import foundation-core.commuting-squares-of-homotopies
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.propositions
open import foundation-core.retractions
open import foundation-core.sections
open import foundation-core.torsorial-type-families
```
</details>
## Idea
Given an
[inverse sequential diagram of types](foundation.inverse-sequential-diagrams.md)
```text
fₙ f₁ f₀
⋯ ---> Aₙ₊₁ ---> Aₙ ---> ⋯ ---> A₂ ---> A₁ ---> A₀
```
we can form the **standard sequential limit** `limₙ Aₙ` satisfying
[the universal property of the sequential limit](foundation.universal-property-sequential-limits.md)
of `Aₙ` thus completing the diagram
```text
fₙ f₁ f₀
limₙ Aₙ ---> ⋯ ---> Aₙ₊₁ ---> Aₙ ---> ⋯ ---> A₂ ---> A₁ ---> A₀.
```
The standard sequential limit consists of "points at infinity", which can be
recorded as [sequences](foundation.dependent-sequences.md) of terms whose images
under `f` agree:
```text
⋯ ↦ xₙ₊₁ ↦ xₙ ↦ ⋯ ↦ x₂ ↦ x₁ ↦ x₀
⫙ ⫙ ⫙ ⫙ ⫙
⋯ ---> Aₙ₊₁ ---> Aₙ ---> ⋯ ---> A₂ ---> A₁ ---> A₀.
```
## Definitions
### The standard sequential limit
```agda
module _
{l : Level} (A : inverse-sequential-diagram l)
where
standard-sequential-limit : UU l
standard-sequential-limit =
Σ ( (n : ℕ) → family-inverse-sequential-diagram A n)
( λ a → (n : ℕ) → a n = map-inverse-sequential-diagram A n (a (succ-ℕ n)))
module _
{l : Level} (A : inverse-sequential-diagram l)
where
sequence-standard-sequential-limit :
standard-sequential-limit A → (n : ℕ) →
family-inverse-sequential-diagram A n
sequence-standard-sequential-limit = pr1
coherence-standard-sequential-limit :
(x : standard-sequential-limit A) (n : ℕ) →
sequence-standard-sequential-limit x n =
map-inverse-sequential-diagram A n
( sequence-standard-sequential-limit x (succ-ℕ n))
coherence-standard-sequential-limit = pr2
```
### The cone at the standard sequential limit
```agda
module _
{l : Level} (A : inverse-sequential-diagram l)
where
cone-standard-sequential-limit :
cone-inverse-sequential-diagram A (standard-sequential-limit A)
pr1 cone-standard-sequential-limit n x =
sequence-standard-sequential-limit A x n
pr2 cone-standard-sequential-limit n x =
coherence-standard-sequential-limit A x n
```
### The gap map into the standard sequential limit
The **gap map** of a
[cone over an inverse sequential diagram](foundation.cones-over-inverse-sequential-diagrams.md)
is the map from the domain of the cone into the standard sequential limit.
```agda
module _
{l1 l2 : Level} (A : inverse-sequential-diagram l1) {X : UU l2}
where
gap-inverse-sequential-diagram :
cone-inverse-sequential-diagram A X → X → standard-sequential-limit A
pr1 (gap-inverse-sequential-diagram c x) n =
map-cone-inverse-sequential-diagram A c n x
pr2 (gap-inverse-sequential-diagram c x) n =
coherence-cone-inverse-sequential-diagram A c n x
```
### The property of being a sequential limit
The [proposition](foundation-core.propositions.md) `is-sequential-limit` is the
assertion that the gap map is an [equivalence](foundation-core.equivalences.md).
Note that this proposition is [small](foundation-core.small-types.md), whereas
[the universal property](foundation.universal-property-sequential-limits.md) is
a large proposition.
```agda
module _
{l1 l2 : Level} (A : inverse-sequential-diagram l1) {X : UU l2}
where
is-sequential-limit : cone-inverse-sequential-diagram A X → UU (l1 ⊔ l2)
is-sequential-limit c = is-equiv (gap-inverse-sequential-diagram A c)
is-property-is-sequential-limit :
(c : cone-inverse-sequential-diagram A X) → is-prop (is-sequential-limit c)
is-property-is-sequential-limit c =
is-property-is-equiv (gap-inverse-sequential-diagram A c)
is-sequential-limit-Prop :
(c : cone-inverse-sequential-diagram A X) → Prop (l1 ⊔ l2)
pr1 (is-sequential-limit-Prop c) = is-sequential-limit c
pr2 (is-sequential-limit-Prop c) = is-property-is-sequential-limit c
```
## Properties
### Characterization of equality in the standard sequential limit
```agda
module _
{l : Level} (A : inverse-sequential-diagram l)
where
coherence-Eq-standard-sequential-limit :
(s t : standard-sequential-limit A)
(H :
sequence-standard-sequential-limit A s ~
sequence-standard-sequential-limit A t) → UU l
coherence-Eq-standard-sequential-limit s t H =
coherence-square-homotopies
( H)
( coherence-standard-sequential-limit A s)
( coherence-standard-sequential-limit A t)
( λ n → ap (map-inverse-sequential-diagram A n) (H (succ-ℕ n)))
Eq-standard-sequential-limit : (s t : standard-sequential-limit A) → UU l
Eq-standard-sequential-limit s t =
Σ ( sequence-standard-sequential-limit A s ~
sequence-standard-sequential-limit A t)
( coherence-Eq-standard-sequential-limit s t)
refl-Eq-standard-sequential-limit :
(s : standard-sequential-limit A) → Eq-standard-sequential-limit s s
pr1 (refl-Eq-standard-sequential-limit s) = refl-htpy
pr2 (refl-Eq-standard-sequential-limit s) = right-unit-htpy
Eq-eq-standard-sequential-limit :
(s t : standard-sequential-limit A) →
s = t → Eq-standard-sequential-limit s t
Eq-eq-standard-sequential-limit s .s refl =
refl-Eq-standard-sequential-limit s
is-torsorial-Eq-standard-sequential-limit :
(s : standard-sequential-limit A) →
is-torsorial (Eq-standard-sequential-limit s)
is-torsorial-Eq-standard-sequential-limit s =
is-torsorial-Eq-structure
( is-torsorial-htpy (pr1 s))
( pr1 s , refl-htpy)
( is-torsorial-Eq-Π (λ n → is-torsorial-Id (pr2 s n ∙ refl)))
is-equiv-Eq-eq-standard-sequential-limit :
(s t : standard-sequential-limit A) →
is-equiv (Eq-eq-standard-sequential-limit s t)
is-equiv-Eq-eq-standard-sequential-limit s =
fundamental-theorem-id
( is-torsorial-Eq-standard-sequential-limit s)
( Eq-eq-standard-sequential-limit s)
extensionality-standard-sequential-limit :
(s t : standard-sequential-limit A) →
(s = t) ≃ Eq-standard-sequential-limit s t
pr1 (extensionality-standard-sequential-limit s t) =
Eq-eq-standard-sequential-limit s t
pr2 (extensionality-standard-sequential-limit s t) =
is-equiv-Eq-eq-standard-sequential-limit s t
eq-Eq-standard-sequential-limit :
(s t : standard-sequential-limit A) →
Eq-standard-sequential-limit s t → s = t
eq-Eq-standard-sequential-limit s t =
map-inv-equiv (extensionality-standard-sequential-limit s t)
```
### The standard sequential limit satisfies the universal property of a sequential limit
```agda
module _
{l1 : Level} (A : inverse-sequential-diagram l1)
where
cone-map-standard-sequential-limit :
{l : Level} {Y : UU l} →
(Y → standard-sequential-limit A) → cone-inverse-sequential-diagram A Y
cone-map-standard-sequential-limit {Y = Y} =
cone-map-inverse-sequential-diagram A {Y = Y}
( cone-standard-sequential-limit A)
is-retraction-gap-inverse-sequential-diagram :
{l : Level} {Y : UU l} →
is-retraction
( cone-map-standard-sequential-limit {Y = Y})
( gap-inverse-sequential-diagram A)
is-retraction-gap-inverse-sequential-diagram = refl-htpy
is-section-gap-inverse-sequential-diagram :
{l : Level} {Y : UU l} →
is-section
( cone-map-standard-sequential-limit {Y = Y})
( gap-inverse-sequential-diagram A)
is-section-gap-inverse-sequential-diagram = refl-htpy
up-standard-sequential-limit :
universal-property-sequential-limit A (cone-standard-sequential-limit A)
pr1 (pr1 (up-standard-sequential-limit X)) =
gap-inverse-sequential-diagram A
pr2 (pr1 (up-standard-sequential-limit X)) =
is-section-gap-inverse-sequential-diagram
pr1 (pr2 (up-standard-sequential-limit X)) =
gap-inverse-sequential-diagram A
pr2 (pr2 (up-standard-sequential-limit X)) =
is-retraction-gap-inverse-sequential-diagram
```
### A cone over an inverse sequential diagram is equal to the value of `cone-map-inverse-sequential-diagram` at its own gap map
```agda
module _
{l1 l2 : Level} (A : inverse-sequential-diagram l1) {X : UU l2}
(c : cone-inverse-sequential-diagram A X)
where
htpy-cone-up-sequential-limit-standard-sequential-limit :
htpy-cone-inverse-sequential-diagram A
( cone-map-inverse-sequential-diagram A
( cone-standard-sequential-limit A)
( gap-inverse-sequential-diagram A c))
( c)
pr1 htpy-cone-up-sequential-limit-standard-sequential-limit n = refl-htpy
pr2 htpy-cone-up-sequential-limit-standard-sequential-limit n =
right-unit-htpy
```
### A cone satisfies the universal property of the sequential limit if and only if the gap map is an equivalence
```agda
module _
{l1 l2 : Level} (A : inverse-sequential-diagram l1) {X : UU l2}
(c : cone-inverse-sequential-diagram A X)
where
is-sequential-limit-universal-property-sequential-limit :
universal-property-sequential-limit A c → is-sequential-limit A c
is-sequential-limit-universal-property-sequential-limit =
is-equiv-universal-property-sequential-limit-universal-property-sequential-limit
( cone-standard-sequential-limit A)
( c)
( gap-inverse-sequential-diagram A c)
( htpy-cone-up-sequential-limit-standard-sequential-limit A c)
( up-standard-sequential-limit A)
universal-property-is-sequential-limit :
is-sequential-limit A c → universal-property-sequential-limit A c
universal-property-is-sequential-limit is-lim-c =
universal-property-sequential-limit-universal-property-sequential-limit-is-equiv
( cone-standard-sequential-limit A)
( c)
( gap-inverse-sequential-diagram A c)
( htpy-cone-up-sequential-limit-standard-sequential-limit A c)
( is-lim-c)
( up-standard-sequential-limit A)
```
## 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}}