open import Data.Fin using (Fin) open import Data.Nat using (ℕ; suc) module CBV.Base.Terms where variable n : ℕ variable m : Fin n mutual data Value (n : ℕ) : Set where unit : Value n ƛ_ : Exp (suc n) → Value n #_ : Fin n → Value n inl : Value n → Value n inr : Value n → Value n ⟨_,_⟩ : Value n → Value n → Value n data Exp (n : ℕ) : Set where val : Value n → Exp n _·_ : Exp n → Exp n → Exp n _»_ : Exp n → Exp n → Exp n inl : Exp n → Exp n inr : Exp n → Exp n ⟨_,_⟩ : Exp n → Exp n → Exp n case_inl⇒_inr⇒_ : Exp n → Exp (suc n) → Exp (suc n) → Exp n $≔_⋯_ : Exp n → Exp (suc (suc n)) → Exp n variable v v₁ v₂ : Value n variable e e₁ e₂ : Exp n infix 5 ƛ_ infixl 7 _»_ infixl 7 _·_ infix 9 #_ infixl 5 case_inl⇒_inr⇒_ infixr 5 $≔_⋯_