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 -> 'a) -> ('a -> 'a -> 'a) -> Arithmetic.exp -> 'a
  val eval : Arithmetic.exp -> int
  val to_string : Arithmetic.exp -> string
end