\begin{code}
{-# OPTIONS --rewriting --confluence-check #-}
module PCF.Types where
open import Data.Bool.Base
using (Bool)
open import Agda.Builtin.Nat
using (Nat)
open import PCF.Domain-Notation
using (Domain; ⟪_⟫; _→ᶜ_; _+⊥)
-- Syntax
data Types : Set where
ι : Types -- natural numbers
o : Types -- Boolean truthvalues
_⇒_ : Types → Types → Types -- functions
variable σ τ : Types
infixr 1 _⇒_
-- Semantics 𝒟
𝒟 : Types → Domain
𝒟 ι = Nat +⊥
𝒟 o = Bool +⊥
𝒟 (σ ⇒ τ) = 𝒟 σ →ᶜ 𝒟 τ
variable x y z : ⟪ 𝒟 σ ⟫
\end{code}