-val problem_of: div:(string option) -> conv:string list -> nums:string list -> problem\r
-val solve: problem -> unit\r
-val should_fail: (unit -> problem) -> unit\r
+\r
+val label_of_problem : problem -> string\r
+\r
+type response = [\r
+ | `CompleteSeparable of string\r
+ | `CompleteUnseparable of string\r
+ | `Uncomplete\r
+]\r
+\r
+type result = [\r
+ `Complete | `Uncomplete\r
+] * [\r
+ | `Separable of (int * Num.nf) list\r
+ | `Unseparable of string\r
+]\r
+\r
+val problem_of: (string (* problem label *)\r
+* Num.i_var option (* div *)\r
+* Num.i_n_var list (* conv *)\r
+* Num.i_n_var list (* ps *)\r
+* string list (* names of free variables *)) -> problem * response\r
+val solve: problem * response -> result\r