- type node_status = {
- rank : int;
- sat : StateSet.t; (* States that are satisfied at the current node *)
- todo : StateSet.t; (* States that remain to be proven *)
- (* For every node_status and automaton a,
- a.states - (sat U todo) = unsat *)
- summary : NodeSummary.t; (* Summary of the shape of the node *)
- }
-(* Describe what is kept at each node for a run *)
-
- module NodeStatus =
- struct
- include Hcons.Make(struct
- type t = node_status
- let equal c d =
- c == d ||
- c.rank == d.rank &&
- c.sat == d.sat &&
- c.todo == d.todo &&
- c.summary == d.summary
-
- let hash c =
- HASHINT4(c.rank,
- (c.sat.StateSet.id :> int),
- (c.todo.StateSet.id :> int),
- c.summary)
- end
- )
- let print ppf s =
- fprintf ppf
- "{ rank: %i; sat: %a; todo: %a; summary: _ }"
- s.node.rank
- StateSet.print s.node.sat
- StateSet.print s.node.todo
- end
-
- let dummy_status =
- NodeStatus.make {
- rank = -1;
- sat = StateSet.empty;
- todo = StateSet.empty;
- summary = NodeSummary.dummy;
- }
-
-