type problem val label_of_problem : problem -> string type response = [ | `CompleteSeparable of string | `CompleteUnseparable of string | `Uncomplete ] type result = [ `Complete | `Uncomplete ] * [ | `Separable of (int * Num.nf) list | `Unseparable of string ] val problem_of: div:(string option) -> conv:string list -> nums:string list -> problem * response (* the following will soon replace the one above *) val tmp: (string (* problem label *) * Num.i_var option (* div *) * Num.i_n_var list (* conv *) * Num.i_n_var list (* ps *) * string list (* names of free variables *)) -> problem * response val solve: problem * response -> result