sig
val debug : bool
val debug_print : string -> unit
val show_binop : ('a -> string) -> 'a * 'a -> string -> string
val opstring_of_binop : Ast.binary_op -> string
val opstring_of_unop : Ast.unary_op -> string
val expr_to_string : Ast.expr -> Ast.id
val pattern_to_string : Ast.pattern -> Ast.id
val string_of_list : Ast.expr -> Ast.id
val const_to_string : Ast.constant -> Ast.id
val type_to_string : Ast.typ -> string
val apattern_to_string : Ast.apattern -> Ast.id
val aexpr_to_string : Ast.aexpr -> string
val val_to_string : Ast.value -> string
val constr_to_string : Ast.constr -> string
val constraints_to_string : Ast.constr list -> string
val subst_to_string : Ast.substitution -> string
val print : ('a -> string) -> 'a -> unit
val print_list : ('a -> string) -> 'a list -> unit
val print_type : Ast.typ -> unit
val print_val : Ast.value -> unit
val print_constraint : Ast.constr -> unit
val print_substitution : Ast.substitution -> unit
end