--- /dev/null
+type problem\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 (* div *)\r
+* Num.i_var list (* conv *)\r
+* string list (* names of free variables *)) -> problem * response\r
+val solve: problem * response -> result\r