+ let prepare_run run list =
+ let tree = run.tree in
+ let auto = run.auto in
+ let status = run.status in
+ let cache2 = run.cache2 in
+ List.iter (fun node ->
+ let parent = T.parent tree node in
+ let fc = T.first_child tree node in
+ let ns = T.next_sibling tree node in
+ let tag = T.tag tree node in
+
+ let status0 =
+ NodeStatus.make
+ { sat = Ata.get_starting_states auto;
+ unsat = StateSet.empty;
+ todo = get_trans cache2 auto tag (Ata.get_states auto);
+ summary = NodeSummary.make
+ (node == T.first_child tree parent) (* is_left *)
+ (node == T.next_sibling tree parent) (* is_right *)
+ (fc != T.nil) (* has_left *)
+ (ns != T.nil) (* has_right *)
+ (T.kind tree node) (* kind *)
+ }
+ in
+ let node_id = T.preorder tree node in
+ status.(node_id) <- status0) list
+