-let parse' strs =
- let fix_arity = function
- | `I((n,_),args) -> `I((n,1+Listx.length args),args)
- | _ -> assert false in
- let (tms, free) = Parser.parse_many strs in
- (* Replace pacmans and bottoms *)
- let n_bot = try Util.index_of "BOT" free with Not_found -> min_int in
- let n_pac = try Util.index_of "PAC" free with Not_found -> min_int in
- let fix lev v =
- if v = lev + n_bot then `Bottom
- else if v = lev + n_pac then `Pacman
- else `Var(v,1) in (* 1 by default when variable not applied *)
- (* Fix arity *)
- let rec aux lev = function
- | Parser.Lam t -> `Lam (true, aux (lev+1) t)
- | Parser.App (t1, t2) -> fix_arity (mk_app (aux lev t1) (aux lev t2))
- | Parser.Var v -> fix lev v in
- List.map (aux 0) tms, free
-;;
-