type problem type result = [ | `Separable of (int * Num.nf) list | `Unseparable of string ] val problem_of: div:(string option) -> conv:string list -> nums:string list -> problem val solve: problem -> result