; trail: discriminating_set list list
};;
+let label_of_problem {label} = label;;
+
(* exceptions *)
exception Pacman
exception Bottom
let string_of_problem label ({freshno; div; conv; ps; deltas} as p) =
Console.print_hline ();
- prerr_string ("\n(* DISPLAY PROBLEM (" ^ label ^ ") - ");
+ prerr_string ("\n(* DISPLAY PROBLEM (" ^ p.label ^ " - " ^ label ^ ") ");
let nl = "\n" in
let deltas = String.concat (nl^" ") (List.map (fun r -> String.concat " <> " (List.map (fun (i,_) -> string_of_int i) !r)) deltas) in
let l = Array.to_list (Array.init (freshno + 1) string_of_var) in
(* TODO: *)
(* replace div with bottom in problem??? *)
let all_tms = (match div with None -> [] | Some div -> [(div :> i_n_var)]) @ nums @ conv in
- if all_tms = [] then failwith "FIXME: empty problem";
+ if all_tms = [] then failwith "FIXME: empty problem";
let initialSpecialK = compute_special_k (Listx.from_list (all_tms :> nf list)) in
let freshno = List.length var_names in
let deltas =
type problem\r
\r
+val label_of_problem : problem -> string\r
+\r
type response = [\r
| `CompleteSeparable of string\r
| `CompleteUnseparable of string\r