summaryrefslogtreecommitdiffstats
path: root/src/sat/glucose2/Glucose2.cpp
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2022-04-24 09:29:52 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2022-04-24 09:29:52 -0700
commit1f56f20e1bcd7528b526cf6d48776a606edf61fd (patch)
tree0e0869a70ea96b90cd52fc59521bf1d82c4e2abc /src/sat/glucose2/Glucose2.cpp
parent8e13245ed06099734d10942715488ff2dc5b3186 (diff)
downloadabc-1f56f20e1bcd7528b526cf6d48776a606edf61fd.tar.gz
abc-1f56f20e1bcd7528b526cf6d48776a606edf61fd.tar.bz2
abc-1f56f20e1bcd7528b526cf6d48776a606edf61fd.zip
Experiments with SAT sweeping.
Diffstat (limited to 'src/sat/glucose2/Glucose2.cpp')
-rw-r--r--src/sat/glucose2/Glucose2.cpp27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/sat/glucose2/Glucose2.cpp b/src/sat/glucose2/Glucose2.cpp
index 4b4c28e7..d345cd0a 100644
--- a/src/sat/glucose2/Glucose2.cpp
+++ b/src/sat/glucose2/Glucose2.cpp
@@ -186,6 +186,7 @@ Solver::Solver() :
itpc = ca.alloc(tmp);
ca[itpc].shrink( ca[itpc].size() );
+ nSkipMark = 0;
#endif
}
@@ -1452,15 +1453,20 @@ printf("c ==================================[ Search Statistics (every %6d confl
if (status == l_True){
if( justUsage() ){
- JustModel.shrink_(JustModel.size());
- assert(jheap.empty());
- //JustModel.growTo(nVars());
- int i = 0, j = 0;
- JustModel.push(toLit(0));
- for (; i < trail.size(); i++)
- if( isRoundWatch(var(trail[i])) && !isTwoFanin(var(trail[i])) )
- JustModel.push(trail[i]), j++;
- JustModel[0] = toLit(j);
+ if( nSkipMark ){
+ loadJust();
+ } else {
+ JustModel.shrink_(JustModel.size());
+ assert(jheap.empty());
+ //JustModel.growTo(nVars());
+ int i = 0, j = 0;
+ JustModel.push(toLit(0));
+ for (; i < trail.size(); i++)
+ if( isRoundWatch(var(trail[i])) && !isTwoFanin(var(trail[i])) )
+ JustModel.push(trail[i]), j++;
+ JustModel[0] = toLit(j);
+ }
+
} else {
// Extend & copy model:
model.shrink_(model.size());
@@ -1743,6 +1749,9 @@ void Solver::reset()
itpc = ca.alloc(tmp);
ca[itpc].shrink( ca[itpc].size() );
}
+
+ vMarked.shrink_( vMarked.size() );
+ nSkipMark = 0;
#endif
}