-- The Agda primitives (preloaded).
{-# OPTIONS --without-K #-}
module Agda.Primitive where
------------------------------------------------------------------------
-- Universe levels
------------------------------------------------------------------------
infixl 6 _⊔_
-- Level is the first thing we need to define.
-- The other postulates can only be checked if built-in Level is known.
postulate
Level : Set
-- MAlonzo compiles Level to (). This should be safe, because it is
-- not possible to pattern match on levels.
{-# COMPILED_TYPE Level () #-}
{-# BUILTIN LEVEL Level #-}
postulate
lzero : Level
lsuc : (ℓ : Level) → Level
_⊔_ : (ℓ₁ ℓ₂ : Level) → Level
{-# BUILTIN LEVELZERO lzero #-}
{-# BUILTIN LEVELSUC lsuc #-}
{-# BUILTIN LEVELMAX _⊔_ #-}
-- {-# BUILTIN INTERVAL I #-} -- I : Setω
-- {-# BUILTIN IZERO i0 #-}
-- {-# BUILTIN IONE i1 #-}
-- infix 30 primINeg
-- primitive
-- primIMin : I → I → I
-- primIMax : I → I → I
-- primINeg : I → I
-- {-# BUILTIN ISONE IsOne #-} -- IsOne : I → Setω
-- postulate
-- itIsOne : IsOne i1
-- IsOne1 : ∀ i j → IsOne i → IsOne (primIMax i j)
-- IsOne2 : ∀ i j → IsOne j → IsOne (primIMax i j)
-- {-# BUILTIN ITISONE itIsOne #-}
-- {-# BUILTIN ISONE1 IsOne1 #-}
-- {-# BUILTIN ISONE2 IsOne2 #-}
-- {-# BUILTIN PARTIAL Partial #-}
-- {-# BUILTIN PARTIALP PartialP #-}
-- postulate
-- isOneEmpty : ∀ {a} {A : Partial (Set a) i0} → PartialP i0 A
-- {-# BUILTIN ISONEEMPTY isOneEmpty #-}
-- primitive
-- primPFrom1 : ∀ {a} {A : I → Set a} → A i1 → ∀ i j → Partial (A (primIMax i j)) i
-- primPOr : ∀ {a} (i j : I) {A : Partial (Set a) (primIMax i j)}
-- → PartialP i (λ z → A (IsOne1 i j z)) → PartialP j (λ z → A (IsOne2 i j z))
-- → PartialP (primIMax i j) A
-- primComp : ∀ {a} (A : (i : I) → Set (a i)) (φ : I) → (∀ i → Partial (A i) φ) → (a : A i0) → A i1
-- syntax primPOr p q u t = [ p ↦ u , q ↦ t ]
-- postulate
-- Path : ∀ {a} {A : Set a} → A → A → Set a
-- PathP : ∀ {a} → (A : I → Set a) → A i0 → A i1 → Set a
-- {-# BUILTIN PATH Path #-}
-- {-# BUILTIN PATHP PathP #-}