sig
  exception Error of string
  val subst : S.Ast.t -> Var.t -> S.Ast.t -> S.Ast.t
  val evaln : S.Ast.t -> S.Ast.t
  val evalv : S.Ast.t -> S.Ast.t
end