-prerr_endline "########## main ##########";;
-
-(* Commands:
- v ==> v := \a. a k1 .. kn \^m.0
- + ==> v := \^k. numero for every v such that ...
- * ==> tries v as long as possible and then +v as long as possible
-*)
-let main problems =
- let rec aux ({ps} as p) n l =
- if List.for_all (function `N _ -> true | _ -> false) ps && p.div = None then begin
- p
- end else
- let _ = prerr_endline (print_problem "main" p) in
- let x,l =
- match l with
- | cmd::l -> cmd,l
- | [] -> read_line (),[] in
- let cmd =
- if x = "+" then
- `DoneWith
- else if x = "*" then
- `Auto
- else
- `Step x in
- match cmd with
- | `DoneWith -> assert false (*aux (eat p) n l*) (* CSC: TODO *)
- | `Step x ->
- let x = var_of_string x in
- aux (instantiate p x n) n l
- | `Auto -> aux (auto p n) n l
- in
- List.iter
- (fun (p,n,cmds) ->
- Console.print_hline();
- bomb := `Var (-1,-666);
- let p_finale = aux p n cmds in
- let freshno,sigma = p_finale.freshno, p_finale.sigma in
- prerr_endline ("------- <DONE> ------\n ");
- (* prerr_endline (print_problem "Original problem" p); *)
- prerr_endline "---------------------";
- let l = Array.to_list (Array.init (freshno + 1) string_of_var) in
- prerr_endline (" BOMB == " ^ print ~l !bomb);
- prerr_endline "---------------------";
- List.iter (fun (x,inst) -> prerr_endline (string_of_var x ^ " := " ^ print ~l inst)) sigma;
+let solve p =
+ bomb := `Var(-1,-666);
+ if List.for_all (function `N _ -> true | _ -> false) p.ps && p.div = None
+ then (prerr_endline "Initial problem is already completed, nothing to do")
+ else (
+ Console.print_hline();
+ prerr_endline (string_of_problem "main" p);
+ let p_finale = auto p p.initialSpecialK in
+ let freshno,sigma = p_finale.freshno, p_finale.sigma in
+ prerr_endline ("------- <DONE> ------ measure=. \n ");
+ (* prerr_endline (string_of_problem "Original problem" p); *)
+ (* prerr_endline "---------------------"; *)
+ let l = Array.to_list (Array.init (freshno + 1) string_of_var) in
+ (* prerr_endline "---------------------"; *)
+ List.iter (fun (x,inst) -> prerr_endline (string_of_var x ^ " := " ^ print ~l inst)) sigma;