Module Jenga_lib.Builder.Problem

type t
val reasons : t ‑> (Reason.t * Goal.t list) list

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'".

val reasons_here : t ‑> Reason.t list

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.

val create : Reason.t ‑> t
val all : t list ‑> t
val subgoal : Goal.t ‑> t ‑> t