{-# OPTIONS --cubical --safe #-}
import Bijection
open import Equality
import Erased
open import Prelude hiding (zero; suc; _+_)
module Nat.Wrapper.Cubical
{e⁺}
(eq : ∀ {a p} → Equality-with-J a p e⁺)
(open Erased eq)
(ax : ∀ {a} → []-cong-axiomatisation a)
(Nat′ : Set)
(open Bijection eq using (_↔_))
(Nat′↔ℕ : Nat′ ↔ ℕ)
where
open Derived-definitions-and-properties eq
open import Logical-equivalence using (_⇔_)
open import Prelude
open import Equality.Path.Isomorphisms eq
open import Function-universe eq as F hiding (_∘_)
open import H-level eq
open import H-level.Closure eq
open import H-level.Truncation.Propositional eq as Trunc
open import Nat eq
open import Univalence-axiom eq
open import Nat.Wrapper eq ax Nat′ Nat′↔ℕ
Nat-[]′ : ∥ ℕ ∥ → ∃ λ (A : Set) → Contractible A
Nat-[]′ = Trunc.rec
(∃-H-level-H-level-1+ ext univ 0)
(λ n → Nat-[ n ]
, propositional⇒inhabited⇒contractible
Nat-[]-propositional
( _↔_.from Nat′↔ℕ n
, [ _↔_.right-inverse-of Nat′↔ℕ n ]
))
Nat-[_]′ : ∥ ℕ ∥ → Set
Nat-[ n ]′ = proj₁ (Nat-[]′ n)
Nat-with-∥∥ : Set
Nat-with-∥∥ = Σ ∥ ℕ ∥ Nat-[_]′
Nat-with-∥∥↔⊤ : Nat-with-∥∥ ↔ ⊤
Nat-with-∥∥↔⊤ =
_⇔_.to contractible⇔↔⊤ $
Σ-closure 0
(propositional⇒inhabited⇒contractible
truncation-is-proposition ∣ 0 ∣)
(proj₂ ∘ Nat-[]′)
¬-Nat-with-∥∥↔ℕ : ¬ (Nat-with-∥∥ ↔ ℕ)
¬-Nat-with-∥∥↔ℕ =
Nat-with-∥∥ ↔ ℕ ↝⟨ F._∘ inverse Nat-with-∥∥↔⊤ ⟩
⊤ ↔ ℕ ↝⟨ (λ hyp → _↔_.injective (inverse hyp) (refl _)) ⟩
0 ≡ 1 ↝⟨ 0≢+ ⟩□
⊥ □