- let p,vars = make_fresh_vars p n in
- let p,zero = make_fresh_var p in
- let zero = Listx.Nil zero in
- let args = if n = 0 then zero else Listx.append zero (Listx.from_list vars) in
+ 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 = 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 *)
+ (* let args = if n = 0 then zero else Listx.append zero (Listx.from_list vars) in *)
+ let args = Listx.from_list (vars :> nf list) in