(* 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_children : (Ast.node -> Ast.node) -> Ast.node -> Ast.node (*val visit_children : (Ast.node -> unit) -> Ast.node -> unit*) (* Extract location from node *) val locof : Ast.node -> Ast.loc