From a2ec2dfcd06a3055e5d1798d726f8b86cb2a3f29 Mon Sep 17 00:00:00 2001 From: Hans-Peter Deifel <hans-peter.deifel@fau.de> Date: Fri, 14 Apr 2017 11:22:39 +0200 Subject: [PATCH] Set states without children to Sat early We can set states without children to Sat right after we expand them. --- src/lib/CoAlgReasoner.ml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/CoAlgReasoner.ml b/src/lib/CoAlgReasoner.ml index cae46fb..4049c1c 100644 --- a/src/lib/CoAlgReasoner.ml +++ b/src/lib/CoAlgReasoner.ml @@ -1114,14 +1114,22 @@ let rec insertAllRules state rules = List.mem true (List.map (fun (dep, children) -> insertRule state dep children) rules) let expandState state = + let setSatOrOpen () = + if CU.TList.empty (stateGetRules state) then + stateSetStatus state Sat + else + stateSetStatus state Open + in + match stateNextRule state with | MultipleElements rules -> let unsat = insertAllRules state rules in - if not unsat then stateSetStatus state Open + if not unsat then setSatOrOpen () | SingleElement (dep, chldrn) -> let unsat = insertRule state dep chldrn in if not unsat then queueInsertState state else () - | NoMoreElements -> stateSetStatus state Open + | NoMoreElements -> + setSatOrOpen () let expandCnstr cset = -- GitLab