------------------------------------------------------------------------
-- Evaluating terms
------------------------------------------------------------------------

open import Data.Nat

module HOAS.SimplyTyped.Evaluation
         -- Semantic domains of all the base types.
         (Base :   Set)
         where

open import HOAS.SimplyTyped.TypeSystem

-- Semantic domains for types.

⟦_⟧⋆ : Ty  Set
 base n ⟧⋆ = Base n
 σ  τ  ⟧⋆ =  σ ⟧⋆   τ ⟧⋆

-- Evaluation.

⟦_⟧' :  {τ}  Tm' ⟦_⟧⋆ τ   τ ⟧⋆
 var x   ⟧' = x
 ƛ t     ⟧' = λ x   t x ⟧'
 t₁ · t₂ ⟧' =  t₁ ⟧'  t₂ ⟧'

⟦_⟧ :  {τ}  Tm τ   τ ⟧⋆
 t  =  t ⟧'