From 981839ee73f9f982329f7cbf251fcb8b6d7b3441 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Sat, 17 Apr 2021 14:36:50 -0700 Subject: [PATCH] separate out search throttle Signed-off-by: Nikolaj Bjorner --- src/math/polysat/solver.cpp | 7 +++++++ src/math/polysat/solver.h | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/math/polysat/solver.cpp b/src/math/polysat/solver.cpp index 8e1a1337a..ab9590193 100644 --- a/src/math/polysat/solver.cpp +++ b/src/math/polysat/solver.cpp @@ -88,6 +88,13 @@ namespace polysat { } } #endif + + bool solver::should_search() { + return + m_lim.inc() && + (m_stats.m_num_conflicts < m_max_conflicts) && + (m_stats.m_num_decisions < m_max_decisions); + } lbool solver::check_sat() { TRACE("polysat", tout << "check\n";); diff --git a/src/math/polysat/solver.h b/src/math/polysat/solver.h index 14ad715d9..7cfe39653 100644 --- a/src/math/polysat/solver.h +++ b/src/math/polysat/solver.h @@ -17,6 +17,7 @@ Author: --*/ #pragma once +#include #include "util/statistics.h" #include "math/polysat/constraint.h" #include "math/polysat/eq_constraint.h" @@ -54,6 +55,9 @@ namespace polysat { var_queue m_free_vars; stats m_stats; + uint64_t m_max_conflicts { std::numeric_limits::max() }; + uint64_t m_max_decisions { std::numeric_limits::max() }; + // Per constraint state scoped_ptr_vector m_constraints; scoped_ptr_vector m_redundant; @@ -153,6 +157,9 @@ namespace polysat { bool is_assigned(pvar v) const { return !m_justification[v].is_unassigned(); } + + bool should_search(); + void propagate(pvar v); void propagate(pvar v, rational const& val, constraint& c); void erase_watch(pvar v, constraint& c);