From 6aa0e444937dd8b9088ef16cf7c4a696ce9d283b Mon Sep 17 00:00:00 2001
From: Christoph Egger <Christoph.Egger@fau.de>
Date: Tue, 19 Apr 2016 18:57:17 +0200
Subject: [PATCH] Only deallocate solver for unsat nodes

We want to still have the solver for naive unsat propagation
---
 src/lib/CoAlgReasoner.ml | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/lib/CoAlgReasoner.ml b/src/lib/CoAlgReasoner.ml
index 08b5b31..c2fda8b 100644
--- a/src/lib/CoAlgReasoner.ml
+++ b/src/lib/CoAlgReasoner.ml
@@ -357,6 +357,7 @@ let rec propagateUnsat = function
                 in
                 coreSetBs core mbs;
                 coreSetStatus core Unsat;
+                coreDeallocateSolver core;
                 if core == graphGetRoot () then raise (CoAlg_finished false) else ();
                 let prop acc (state, idx) =
                   let turnsUnsat =
@@ -527,7 +528,7 @@ let propagateUnsatMu () =
       (setLengthCore setPrevUnsatCores) = (setLengthCore setUnsatCores)
     then begin
         setIterState (fun state -> stateSetStatus state Unsat) setUnsatStates;
-        setIterCore (fun core -> coreSetStatus core Unsat; if core == graphGetRoot () then raise (CoAlg_finished false) else ()) setUnsatCores;
+        setIterCore (fun core -> propagateUnsat [UCore (core, false)]) setUnsatCores;
       end else
       fixpointstep setUnsatStates setUnsatCores
   in
@@ -902,9 +903,11 @@ let expandCore core =
       queueInsertCore core
   | None ->
       let isUnsat = List.for_all (fun s -> stateGetStatus s = Unsat) (coreGetChildren core) in
-      if isUnsat then propagateUnsat [UCore (core, false)]
-      else coreSetStatus core Open;
-      coreDeallocateSolver core
+      if isUnsat
+      then
+          propagateUnsat [UCore (core, false)]
+      else
+          coreSetStatus core Open
 
 
 let insertCore sort bs defer =
-- 
GitLab