sig
  type exp =
      Val of int
    | Plus of Arithmetic.exp * Arithmetic.exp
    | Times of Arithmetic.exp * Arithmetic.exp
  val exp_fold :
    (int -> 'a) ->
    ('-> '-> 'a) -> ('-> '-> 'a) -> Arithmetic.exp -> 'a
  val eval : Arithmetic.exp -> int
  val to_string : Arithmetic.exp -> string
end