X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Feval.ml;fp=src%2Feval.ml;h=76d9153fb969e915c04c927642fd92ad1805558c;hp=206debe84ce4489e69131a939bdad2f6dc1634de;hb=974dacbf4f625bfd8ea83db69d6b346050141fea;hpb=b00bff88c7902e828804c06b7f9dc55222fdc84e diff --git a/src/eval.ml b/src/eval.ml index 206debe..76d9153 100644 --- a/src/eval.ml +++ b/src/eval.ml @@ -14,7 +14,7 @@ (***********************************************************************) (* - Time-stamp: + Time-stamp: *) INCLUDE "utils.ml" @@ -95,7 +95,12 @@ END TRACE(Html.trace (T.preorder tree node) _i "Right BU States: %a
Right BU Trans: %a
" StateSet.print states3 (Ata.TransList.print ~sep:"
") _trans3) in if states3 != states2 then set cache tree node states3; - if states0 != states3 && (not !redo) then redo := true + (*if states0 != states3 && (not !redo) then redo := true *) + if (not !redo) + && not (Ata.TransList.nil == _trans3) + && (states1 != states3) + && not (StateSet.intersect states3 auto.Ata.selection_states) + then redo := true end in loop node; @@ -121,9 +126,11 @@ END let iter = ref 0 in Ata.reset auto; while !redo do + redo := false; redo := top_down_run auto tree node cache !iter; incr iter; done; + at_exit (fun () -> eprintf "INFO: %i iterations\n" !iter); let r = get_results auto tree node cache in TRACE(Html.gen_trace (module T : Tree.Sig.S with type t = T.t) (tree)); r