misc
{-# OPTIONS --cubical #-}
module agda.intrinsical where
open import Agda.Primitive
open import Cubical.Foundations.Prelude
open import Cubical.Data.List
data Ty : Type where
bool : Ty
_β_ : Ty β Ty β Ty
variable S T : Ty
Ctx = List Ty
_,,_ : Ctx β Ty β Ctx
Ξ ,, T = T β· Ξ
infix 10 _,,_
variable Ξ : Ctx
Intrinsically-scoped de Brujin indices
data _β_ : Ctx β Ty β Type where
zero : Ξ ,, T β T
suc : Ξ β T β Ξ ,, S β T
infix 5 _β_
variable x : Ξ β T
Intrinsically-typed terms
data _β’_ : Ctx β Ty β Type where
true false : Ξ β’ bool
var : Ξ β T β Ξ β’ T
lam_ : Ξ ,, S β’ T β Ξ β’ S β T
_Β·_ : Ξ β’ S β T β Ξ β’ S β Ξ β’ T
if_then_else_ : Ξ β’ bool β Ξ β’ T β Ξ β’ T β Ξ β’ T
infix 9 _β’_