{-# OPTIONS --cubical --no-import-sorts --no-exact-split --safe #-} module Cubical.Data.NatPlusOne.Properties where open import Cubical.Foundations.Prelude open import Cubical.Foundations.Isomorphism open import Cubical.Data.Nat open import Cubical.Data.NatPlusOne.Base 1+Path : ℕ ≡ ℕ₊₁ 1+Path = isoToPath (iso 1+_ -1+_ (λ _ → refl) (λ _ → refl)) ℕ₊₁→ℕ-inj : ∀ {m n} → ℕ₊₁→ℕ m ≡ ℕ₊₁→ℕ n → m ≡ n ℕ₊₁→ℕ-inj p i = 1+ (injSuc p i) infixl 7 _*₊₁_ _*₊₁_ : ℕ₊₁ → ℕ₊₁ → ℕ₊₁ (1+ m) *₊₁ (1+ n) = 1+ (n + m * (suc n)) private ℕ₊₁→ℕ-*₊₁-comm : ∀ m n → ℕ₊₁→ℕ (m *₊₁ n) ≡ (ℕ₊₁→ℕ m) * (ℕ₊₁→ℕ n) ℕ₊₁→ℕ-*₊₁-comm (1+ m) (1+ n) = refl *₊₁-comm : ∀ m n → m *₊₁ n ≡ n *₊₁ m *₊₁-comm (1+ m) (1+ n) = cong 1+_ (injSuc (*-comm (suc m) (suc n))) *₊₁-assoc : ∀ m n o → m *₊₁ (n *₊₁ o) ≡ m *₊₁ n *₊₁ o *₊₁-assoc (1+ m) (1+ n) (1+ o) = cong 1+_ (injSuc (*-assoc (suc m) (suc n) (suc o))) *₊₁-identityˡ : ∀ n → 1 *₊₁ n ≡ n *₊₁-identityˡ (1+ n) = cong 1+_ (injSuc (*-identityˡ (suc n))) *₊₁-identityʳ : ∀ n → n *₊₁ 1 ≡ n *₊₁-identityʳ (1+ n) = cong 1+_ (injSuc (*-identityʳ (suc n)))