open Num;; open Lambda4;; (* type var = int;; type state = { terms : nf list; arities : (var * int) list; freshno : int; apps : (var * (var list)) list; } let replace = function | `Var _ | `Lam _ as t -> t | `I(v,tms) -> try let apps = List.assoc v p.apps in let hd, tl = ... in let s, freshvar = mk_freshvar s [] aux (mk_apps v (Listx.map )) with | Not_found -> `I(v, Listx.map (replace s) tms) | _ -> assert false ;; let iteration : state -> state = fun s -> let terms = Util.concat_map (replace s) s.terms in s;; *)