type problem\r
-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
+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: div:(string option) -> conv:string list -> nums:string list -> problem * response\r
+val solve: problem * response -> result\r