module Tactic.Nat.Exp where

open import Prelude

Var = Nat

Env : Set  Set
Env Atom = Atom  Nat

infixl 6 _⟨+⟩_
infixl 7 _⟨*⟩_
data Exp (Atom : Set) : Set where
  var : (x : Atom)  Exp Atom
  lit : (n : Nat)  Exp Atom
  _⟨+⟩_ _⟨*⟩_ : (e e₁ : Exp Atom)  Exp Atom

⟦_⟧e :  {Atom}  Exp Atom  Env Atom  Nat
 var x ⟧e   ρ = ρ x
 lit n ⟧e   ρ = n
 e₁ ⟨+⟩ e₂ ⟧e ρ =  e₁ ⟧e ρ +  e₂ ⟧e ρ
 e₁ ⟨*⟩ e₂ ⟧e ρ =  e₁ ⟧e ρ *  e₂ ⟧e ρ