(* Generate a fresh variable from a given prefix, e.g. "counter" -> "counter$1" *) val fresh_var : string -> string (* Default transformation traversal for AST nodes *) val transform : (Ast.node -> Ast.node) -> Ast.node -> Ast.node (* Extract location from node *) val locof : Ast.node -> Ast.loc