Derivatives for Containers in Univalent Foundations
Cubical.Data.NatMinusOne.Base
Initializing search
    phijor/derivatives
    • Overview
    • Library
    phijor/derivatives
    • Overview
      • Derivative.Bag
      • Derivative.Adjunction
      • Derivative.Basics.Sum
      • Derivative.Basics.Unit
      • Derivative.Basics.W
      • Derivative.Basics.Decidable
      • Derivative.Basics.Embedding
      • Derivative.Basics.Equiv
      • Derivative.Basics.Maybe
      • Derivative.Basics.Sigma
      • Derivative.Category
      • Derivative.ChainRule
      • Derivative.Container
      • Derivative.Derivative
      • Derivative.Indexed.Mu
      • Derivative.Indexed.ChainRule
      • Derivative.Indexed.Container
      • Derivative.Indexed.Derivative
      • Derivative.Indexed.MuRule
      • Derivative.Indexed.Univalence
      • Derivative.Isolated.Base
      • Derivative.Isolated
      • Derivative.Isolated.S1
      • Derivative.Isolated.Sum
      • Derivative.Isolated.W
      • Derivative.Isolated.DependentGrafting
      • Derivative.Isolated.Grafting
      • Derivative.Isolated.Maybe
      • Derivative.Isolated.Sigma
      • Derivative.Prelude
      • Derivative.Properties
      • Derivative.Remove

    Cubical.Data.NatMinusOne.Base

    {-# OPTIONS --no-exact-split #-}
    module Cubical.Data.NatMinusOne.Base where
    
    open import Cubical.Core.Primitives
    open import Cubical.Data.Nat
    open import Cubical.Data.Empty
    
    record ℕ₋₁ : Type₀ where
      constructor -1+_
      field
        n : ℕ
    
    pattern neg1 = -1+ zero
    pattern ℕ→ℕ₋₁ n = -1+ (suc n)
    
    1+_ : ℕ₋₁ → ℕ
    1+_ (-1+ n) = n
    
    suc₋₁ : ℕ₋₁ → ℕ₋₁
    suc₋₁ (-1+ n) = -1+ (suc n)
    
    -- Natural number and negative integer literals for ℕ₋₁
    
    open import Cubical.Data.Nat.Literals public
    
    instance
      fromNatℕ₋₁ : HasFromNat ℕ₋₁
      fromNatℕ₋₁ = record { Constraint = λ _ → Unit ; fromNat = ℕ→ℕ₋₁ }
    
    instance
      fromNegℕ₋₁ : HasFromNeg ℕ₋₁
      fromNegℕ₋₁ = record { Constraint = λ { (suc (suc _)) → ⊥ ; _ → Unit }
                           ; fromNeg = λ { zero → 0 ; (suc zero) → neg1 } }
    
    Made with Material for MkDocs