X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fauto%2Feval.ml;h=f51e0d5d775ff2f8a9de416894363d417723bd7e;hb=7e8fa6a1fcb2f6ea9e3639e8a3f0d199836796a5;hp=4a27fa5cd8ee931242f9b293cf7141213f79fccf;hpb=09058e990c86555c9c9211f00639901bbd386730;p=tatoo.git diff --git a/src/auto/eval.ml b/src/auto/eval.ml index 4a27fa5..f51e0d5 100644 --- a/src/auto/eval.ml +++ b/src/auto/eval.ml @@ -14,7 +14,7 @@ (***********************************************************************) (* - Time-stamp: + Time-stamp: *) INCLUDE "utils.ml" @@ -96,7 +96,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; @@ -122,9 +127,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