let arity_of_x = max_arity_tms x (all_terms p) in
(if arity_of_x < 0 then failwithProblem p "step on a var of negative arity");
(* AC: FIXME compute arities correctly below! *)
- let arities = Array.to_list (Array.make (n+1) 0) in
+ let arities = Num.compute_arities x (n+1) (all_terms p :> nf list) in
+ (* let arities = Array.to_list (Array.make (n+1) 0) in *)
let p,vars = make_fresh_vars p arities in
(* let p,zero = make_fresh_var p in *)
(* let zero = Listx.Nil zero in *)
1:11m42 2:14m5 3:11m16s 4:14m46s 5:12m7s 6:6m31s *)
let x =
try
- match hd_of (List.find (fun t -> compute_special_k (Listx.Nil (t :> nf)) > 0 && arity_of_hd t >= 0) (all_terms p)) with
+ match hd_of (List.find (fun t ->
+ compute_special_k (Listx.Nil (t :> nf)) > 0 && arity_of_hd t >= 0
+ ) (all_terms p)) with
None -> assert false
| Some x ->
prerr_endline ("INSTANTIATING AND HOPING " ^ string_of_var x);
(********************** problems *******************)
-let zero = `Var(0,-1);;
+let zero = `Var(0,0);;
let append_zero =
function