sig
  exception Unknown_id of string
  exception Illegal_expr of Expr.t
  exception Illegal_application of Expr.t
  exception Illegal_array_access of Expr.t
  exception Illegal_bit_range_access of Expr.t
  exception Invalid_array_access of string * int
  exception Illegal_record_access of Expr.t
  exception Non_static_expr of Expr.t * Expr.t
  type env = (string * Expr.value) list
  val subst : (string * Expr.value) list -> Expr.t -> Expr.t
  val eval : (string * Expr.value) list -> Expr.t -> Expr.value
end