# Dependent inverse sequential diagrams of types ```agda module foundation.dependent-inverse-sequential-diagrams where ``` <details><summary>Imports</summary> ```agda open import elementary-number-theory.natural-numbers open import foundation.dependent-pair-types open import foundation.inverse-sequential-diagrams open import foundation.unit-type open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies ``` </details> ## Idea A **dependent inverse sequential diagram** `B` over a base [inverse sequential diagram](foundation.inverse-sequential-diagrams.md) `A` is a [sequence](foundation.sequences.md) of families over each `Aₙ` together with maps of fibers ```text gₙ : (xₙ₊₁ : Aₙ₊₁) → Bₙ₊₁(xₙ₊₁) → Bₙ(fₙ(xₙ₊₁)), ``` where `f` is the sequence of maps of the base inverse sequential diagram, giving a dependent sequential diagram of maps that extend infinitely to the left: ```text g₃ g₂ g₁ g₀ ⋯ ---> B₃ ---> B₂ ---> B₁ ---> B₀. ``` ## Definitions ### Dependent inverse sequential diagrams of types ```agda sequence-map-dependent-inverse-sequential-diagram : {l1 l2 : Level} (A : inverse-sequential-diagram l1) → ((n : ℕ) → family-inverse-sequential-diagram A n → UU l2) → UU (l1 ⊔ l2) sequence-map-dependent-inverse-sequential-diagram A B = (n : ℕ) (x : family-inverse-sequential-diagram A (succ-ℕ n)) → B (succ-ℕ n) x → B n (map-inverse-sequential-diagram A n x) dependent-inverse-sequential-diagram : {l1 : Level} (l2 : Level) (A : inverse-sequential-diagram l1) → UU (l1 ⊔ lsuc l2) dependent-inverse-sequential-diagram l2 A = Σ ( (n : ℕ) → family-inverse-sequential-diagram A n → UU l2) ( sequence-map-dependent-inverse-sequential-diagram A) family-dependent-inverse-sequential-diagram : {l1 l2 : Level} {A : inverse-sequential-diagram l1} → dependent-inverse-sequential-diagram l2 A → (n : ℕ) → family-inverse-sequential-diagram A n → UU l2 family-dependent-inverse-sequential-diagram = pr1 map-dependent-inverse-sequential-diagram : {l1 l2 : Level} {A : inverse-sequential-diagram l1} (B : dependent-inverse-sequential-diagram l2 A) → (n : ℕ) (x : family-inverse-sequential-diagram A (succ-ℕ n)) → family-dependent-inverse-sequential-diagram B (succ-ℕ n) x → family-dependent-inverse-sequential-diagram B n ( map-inverse-sequential-diagram A n x) map-dependent-inverse-sequential-diagram = pr2 ``` ### Constant dependent inverse sequential diagrams of types ```agda const-dependent-inverse-sequential-diagram : {l1 l2 : Level} (A : inverse-sequential-diagram l1) → inverse-sequential-diagram l2 → dependent-inverse-sequential-diagram l2 A pr1 (const-dependent-inverse-sequential-diagram A B) n _ = family-inverse-sequential-diagram B n pr2 (const-dependent-inverse-sequential-diagram A B) n _ = map-inverse-sequential-diagram B n ``` ### Sections of a dependent inverse sequential diagram A **section of a dependent inverse sequential diagram `(B , g)` over `(A , f)`** is a choice of sections `hₙ` of each `Bₙ` that vary naturally over `A`, by which we mean that the diagrams ```text gₙ Bₙ₊₁ ---> Bₙ ∧ ∧ hₙ₊₁| | hₙ | | Aₙ₊₁ ---> Aₙ fₙ ``` commute for each `n : ℕ`. ```agda module _ {l1 l2 : Level} (A : inverse-sequential-diagram l1) (B : dependent-inverse-sequential-diagram l2 A) where naturality-section-dependent-inverse-sequential-diagram : (h : (n : ℕ) (x : family-inverse-sequential-diagram A n) → family-dependent-inverse-sequential-diagram B n x) (n : ℕ) → UU (l1 ⊔ l2) naturality-section-dependent-inverse-sequential-diagram h n = h n ∘ map-inverse-sequential-diagram A n ~ map-dependent-inverse-sequential-diagram B n _ ∘ h (succ-ℕ n) section-dependent-inverse-sequential-diagram : UU (l1 ⊔ l2) section-dependent-inverse-sequential-diagram = Σ ( (n : ℕ) (x : family-inverse-sequential-diagram A n) → family-dependent-inverse-sequential-diagram B n x) ( λ h → (n : ℕ) → naturality-section-dependent-inverse-sequential-diagram h n) map-section-dependent-inverse-sequential-diagram : section-dependent-inverse-sequential-diagram → (n : ℕ) (x : family-inverse-sequential-diagram A n) → family-dependent-inverse-sequential-diagram B n x map-section-dependent-inverse-sequential-diagram = pr1 naturality-map-section-dependent-inverse-sequential-diagram : (f : section-dependent-inverse-sequential-diagram) (n : ℕ) → naturality-section-dependent-inverse-sequential-diagram ( map-section-dependent-inverse-sequential-diagram f) ( n) naturality-map-section-dependent-inverse-sequential-diagram = pr2 ``` ## Operations ### Right shifting a dependent inverse sequential diagram We can **right shift** a dependent inverse sequential diagram of types by forgetting the first terms. ```agda right-shift-dependent-inverse-sequential-diagram : {l1 l2 : Level} {A : inverse-sequential-diagram l1} → dependent-inverse-sequential-diagram l2 A → dependent-inverse-sequential-diagram l2 ( right-shift-inverse-sequential-diagram A) pr1 (right-shift-dependent-inverse-sequential-diagram B) n = family-dependent-inverse-sequential-diagram B (succ-ℕ n) pr2 (right-shift-dependent-inverse-sequential-diagram B) n = map-dependent-inverse-sequential-diagram B (succ-ℕ n) ``` ### Left shifting a dependent inverse sequential diagram We can **left shift** a dependent inverse sequential diagram of types by padding it with the [terminal type](foundation.unit-type.md) `unit`. ```agda left-shift-dependent-inverse-sequential-diagram : {l1 l2 : Level} {A : inverse-sequential-diagram l1} → dependent-inverse-sequential-diagram l2 A → dependent-inverse-sequential-diagram l2 ( left-shift-inverse-sequential-diagram A) pr1 (left-shift-dependent-inverse-sequential-diagram {l2 = l2} B) 0 x = raise-unit l2 pr1 (left-shift-dependent-inverse-sequential-diagram B) (succ-ℕ n) = family-dependent-inverse-sequential-diagram B n pr2 (left-shift-dependent-inverse-sequential-diagram B) 0 x = raise-terminal-map (family-dependent-inverse-sequential-diagram B 0 x) pr2 (left-shift-dependent-inverse-sequential-diagram B) (succ-ℕ n) = map-dependent-inverse-sequential-diagram B n ``` ## 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}}