The list of individual errors together with dependency traces.
(a, b,c,d
) means
"error 'a' happened at subgoal 'd',
which was a part of subgoal 'c',
which was a part of subgoal 'b'".
The list of errors that happened at the current subgoal.
This should be true:
reasons_here t = List.filter_map (reasons t) ~f:(function
| (r, []) -> Some r
| (r, _) -> None)
val needs_in_error : t ‑> Goal.Set.t
This is a superset of the needs listed in reasons
because a single Reason.t can be reachable by multiple path,
all of needs along which are going to be in error.