The W-type of natural numbers
Content created by Fredrik Bakke, Egbert Rijke and Jonathan Prieto-Cubides.
Created on 2023-01-26.
Last modified on 2023-09-11.
module trees.w-type-of-natural-numbers where
Imports
open import elementary-number-theory.natural-numbers open import foundation.action-on-identifications-functions open import foundation.booleans open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.function-extensionality open import foundation.function-types open import foundation.homotopies open import foundation.identity-types open import foundation.unit-type open import foundation.universal-property-empty-type open import foundation.universe-levels open import trees.w-types
Idea
Since the type of natural numbers is an initial algebra for the polynomial endofunctor
X ↦ X + 𝟙,
there is an equivalent definition of the natural numbers as a W-type.
Definition
The type of natural numbers defined as a W-type
Nat-𝕎 : UU lzero Nat-𝕎 = 𝕎 bool (Eq-bool true) zero-Nat-𝕎 : Nat-𝕎 zero-Nat-𝕎 = constant-𝕎 false id succ-Nat-𝕎 : Nat-𝕎 → Nat-𝕎 succ-Nat-𝕎 x = tree-𝕎 true (λ y → x)
Properties
The type of natural numbers is equivalent to the W-type Nat-𝕎
Nat-𝕎-ℕ : ℕ → Nat-𝕎 Nat-𝕎-ℕ zero-ℕ = zero-Nat-𝕎 Nat-𝕎-ℕ (succ-ℕ x) = succ-Nat-𝕎 (Nat-𝕎-ℕ x) ℕ-Nat-𝕎 : Nat-𝕎 → ℕ ℕ-Nat-𝕎 (tree-𝕎 true α) = succ-ℕ (ℕ-Nat-𝕎 (α star)) ℕ-Nat-𝕎 (tree-𝕎 false α) = zero-ℕ is-section-ℕ-Nat-𝕎 : (Nat-𝕎-ℕ ∘ ℕ-Nat-𝕎) ~ id is-section-ℕ-Nat-𝕎 (tree-𝕎 true α) = ap ( tree-𝕎 true) ( eq-htpy H) where H : (z : unit) → Nat-𝕎-ℕ (ℕ-Nat-𝕎 (α star)) = α z H star = is-section-ℕ-Nat-𝕎 (α star) is-section-ℕ-Nat-𝕎 (tree-𝕎 false α) = ap (tree-𝕎 false) (eq-is-contr (universal-property-empty' Nat-𝕎)) is-retraction-ℕ-Nat-𝕎 : (ℕ-Nat-𝕎 ∘ Nat-𝕎-ℕ) ~ id is-retraction-ℕ-Nat-𝕎 zero-ℕ = refl is-retraction-ℕ-Nat-𝕎 (succ-ℕ x) = ap succ-ℕ (is-retraction-ℕ-Nat-𝕎 x) is-equiv-Nat-𝕎-ℕ : is-equiv Nat-𝕎-ℕ is-equiv-Nat-𝕎-ℕ = is-equiv-is-invertible ℕ-Nat-𝕎 is-section-ℕ-Nat-𝕎 is-retraction-ℕ-Nat-𝕎 equiv-Nat-𝕎-ℕ : ℕ ≃ Nat-𝕎 equiv-Nat-𝕎-ℕ = pair Nat-𝕎-ℕ is-equiv-Nat-𝕎-ℕ is-equiv-ℕ-Nat-𝕎 : is-equiv ℕ-Nat-𝕎 is-equiv-ℕ-Nat-𝕎 = is-equiv-is-invertible Nat-𝕎-ℕ is-retraction-ℕ-Nat-𝕎 is-section-ℕ-Nat-𝕎 equiv-ℕ-Nat-𝕎 : Nat-𝕎 ≃ ℕ equiv-ℕ-Nat-𝕎 = pair ℕ-Nat-𝕎 is-equiv-ℕ-Nat-𝕎
Recent changes
- 2023-09-11. Fredrik Bakke and Egbert Rijke. Some computations for different notions of equivalence (#711).
- 2023-06-15. Egbert Rijke. Replace
isretr
withis-retraction
andissec
withis-section
(#659). - 2023-06-10. Egbert Rijke. cleaning up transport and dependent identifications files (#650).
- 2023-06-10. Egbert Rijke and Fredrik Bakke. Cleaning up synthetic homotopy theory (#649).
- 2023-05-28. Fredrik Bakke. Enforce even indentation and automate some conventions (#635).