\begin{code}
module Scm.Abstract-Syntax where
open import Data.Integer.Base renaming (ℤ to Int) public
open import Data.String.Base using (String) public
data Con : Set
variable K : Con
Ide = String
variable I : Ide
data Exp : Set
variable E : Exp
data Exp⋆ : Set
variable E⋆ : Exp⋆
data Body : Set
variable B : Body
data Body⁺ : Set
variable B⁺ : Body⁺
data Prog : Set
variable Π : Prog
data Con where
int : Int → Con
#t : Con
#f : Con
data Exp where
con : Con → Exp
ide : Ide → Exp
⦅_␣_⦆ : Exp → Exp⋆ → Exp
⦅lambda_␣_⦆ : Ide → Exp → Exp
⦅if_␣_␣_⦆ : Exp → Exp → Exp → Exp
⦅set!_␣_⦆ : Ide → Exp → Exp
data Exp⋆ where
␣␣␣ : Exp⋆
_␣␣_ : Exp → Exp⋆ → Exp⋆
\end{code}
\iflatex
\clearpage
\fi
\begin{code}
data Body where
␣␣_ : Exp → Body
⦅define_␣_⦆ : Ide → Exp → Body
⦅begin_⦆ : Body⁺ → Body
data Body⁺ where
␣␣_ : Body → Body⁺
_␣␣_ : Body → Body⁺ → Body⁺
data Prog where
␣␣␣ : Prog
␣␣_ : Body⁺ → Prog
infix 30 ␣␣_
infixr 20 _␣␣_
\end{code}