diff options
Diffstat (limited to 'libs/ezsat/ezminisat.cc')
-rw-r--r-- | libs/ezsat/ezminisat.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/libs/ezsat/ezminisat.cc b/libs/ezsat/ezminisat.cc index a5ceb9e5..c34ad748 100644 --- a/libs/ezsat/ezminisat.cc +++ b/libs/ezsat/ezminisat.cc @@ -108,14 +108,25 @@ contradiction: return false; modelValues.clear(); - modelValues.reserve(modelIdx.size()); - for (auto idx : modelIdx) { + modelValues.resize(2 * modelIdx.size()); + + for (size_t i = 0; i < modelIdx.size(); i++) + { + int idx = modelIdx[i]; bool refvalue = true; + if (idx < 0) idx = -idx, refvalue = false; - auto value = minisatSolver->modelValue(minisatVars.at(idx-1)); - // FIXME: Undef values - modelValues.push_back(value == Minisat::lbool(refvalue)); + + using namespace Minisat; + lbool value = minisatSolver->modelValue(minisatVars.at(idx-1)); + if (value == l_Undef) { + modelValues[i] = false; + modelValues[modelIdx.size() + i] = true; + } else { + modelValues[i] = value == Minisat::lbool(refvalue); + modelValues[modelIdx.size() + i] = false; + } } return true; |