sig
  val vcompare : Ast.value -> Ast.value -> int
  val concat : Ast.environment -> Ast.environment -> Ast.environment
  val pattern_match : Ast.value -> Ast.pattern -> bool * Ast.environment
  val update : Ast.id -> Ast.value -> Ast.environment -> unit
  val eval : Ast.expr -> Ast.environment -> Ast.value
  val eval_arith :
    Ast.expr ->
    Ast.expr -> Ast.environment -> (int -> int -> int) -> Ast.value
  val eval_bool :
    Ast.expr ->
    Ast.expr -> Ast.environment -> (bool -> bool -> bool) -> Ast.value
  val eval_comp :
    Ast.expr ->
    Ast.expr -> Ast.environment -> (int -> int -> bool) -> Ast.value
end