Pare down is used as a step in the LUB computation. It edits the
candidates array in place by removing any element j for which
there exists an earlier element i<j such that i -> j. That is,
after you run
pare_down, you know that for all elements that
remain in candidates, they cannot reach any of the elements that
come after them.