- let status3 = eval_trans auto cache2 cache5 tag fcs1 nss1 ps status2 in
-
- TRACE(html tree node _i status3 "Updating transitions (after next-sibling)");
-
- if status3 != status2 then status.(node_id) <- status3;
-
- let unstable_self =
- (* if either our left or right child is unstable or if we still have transitions
- pending, the current node is unstable *)
- unstable_left
- || unstable_right
- || StateSet.empty != status3.NodeStatus.node.todo
+ if status2.NodeStatus.node.todo != StateSet.empty then
+ let status3 = eval_trans auto fetch_trans_cache bu_cache tag fcs1 nss1 ps status2 in
+ if status3 != status2 then status.(node_id) <- status3
+ end
+ and loop_td_only node =
+ if node == T.nil then () else begin
+ let node_id = T.preorder tree node in
+ let parent = T.parent tree node in
+ let fc = T.first_child tree node in
+ let fc_id = T.preorder tree fc in
+ let ns = T.next_sibling tree node in
+ let ns_id = T.preorder tree ns in
+ let tag = T.tag tree node in
+ (* We enter the node from its parent *)
+ let status0 =
+ let c = unsafe_get_status status node_id in
+ if c.NodeStatus.node.rank < i then
+ (* first time we visit the node during this run *)
+ NodeStatus.make
+ { rank = i;
+ sat = c.NodeStatus.node.sat;
+ todo = td_todo;
+ summary =
+ let summary = c.NodeStatus.node.summary in
+ if summary != NodeSummary.dummy then summary
+ else
+ NodeSummary.make
+ (node != T.next_sibling tree parent)
+ (fc != T.nil) (* has_left *)
+ (ns != T.nil) (* has_right *)
+ (T.kind tree node) (* kind *)
+ }
+ else c