let worst_result_full result_full lst =
let worst =
List.fold_left
(fun ((_, result1, _) as result_full1)
((_, result2, _) as result_full2) ->
if worst_cmp result1 result2 < 0 then
result_full2
else
result_full1)
result_full lst
in
worst,
List.filter
(fun result_full -> not (result_full == worst))
(result_full :: lst)