( O : Oracle.S ) : S = struct
let subsuming_candidate s =
let approx = approximations s in
let approx = if max_cands = -1 then approx else keep max_cands approx in
if verbose > 0 && not quiet then
eprintf "Checking %d approximations:@." (List.length approx);
O.first_good_candidate approx
let good n = match n.kind with
| Approx ->
(* It's useless to look for approximations of an approximation *)
None
| _ ->
subsuming_candidate n
end