mirror of
https://github.com/Z3Prover/z3
synced 2025-06-23 14:23:40 +00:00
remove branch_bool
This commit is contained in:
parent
3a34995b03
commit
ebc4df1ece
5 changed files with 6 additions and 25 deletions
|
@ -127,7 +127,6 @@ namespace polysat {
|
||||||
*
|
*
|
||||||
* We can assume that op_constraint is only asserted positive.
|
* We can assume that op_constraint is only asserted positive.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void op_constraint::narrow(solver& s, bool is_positive) {
|
void op_constraint::narrow(solver& s, bool is_positive) {
|
||||||
SASSERT(is_positive);
|
SASSERT(is_positive);
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ namespace polysat {
|
||||||
m_assignment.push_back({p, r});
|
m_assignment.push_back({p, r});
|
||||||
}
|
}
|
||||||
|
|
||||||
void search_state::pop_asssignment() {
|
void search_state::pop_assignment() {
|
||||||
m_assignment.pop_back();
|
m_assignment.pop_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ namespace polysat {
|
||||||
void push_boolean(sat::literal lit);
|
void push_boolean(sat::literal lit);
|
||||||
void pop();
|
void pop();
|
||||||
|
|
||||||
void pop_asssignment();
|
void pop_assignment();
|
||||||
|
|
||||||
void set_resolved(unsigned i) { m_items[i].set_resolved(); }
|
void set_resolved(unsigned i) { m_items[i].set_resolved(); }
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ namespace polysat {
|
||||||
|
|
||||||
void solver::updt_params(params_ref const& p) {
|
void solver::updt_params(params_ref const& p) {
|
||||||
m_params.append(p);
|
m_params.append(p);
|
||||||
m_branch_bool = m_params.get_bool("branch_bool", false);
|
|
||||||
m_max_conflicts = m_params.get_uint("max_conflicts", UINT_MAX);
|
m_max_conflicts = m_params.get_uint("max_conflicts", UINT_MAX);
|
||||||
m_max_decisions = m_params.get_uint("max_decisions", UINT_MAX);
|
m_max_decisions = m_params.get_uint("max_decisions", UINT_MAX);
|
||||||
}
|
}
|
||||||
|
@ -394,10 +393,7 @@ namespace polysat {
|
||||||
void solver::decide() {
|
void solver::decide() {
|
||||||
LOG_H2("Decide");
|
LOG_H2("Decide");
|
||||||
SASSERT(can_decide());
|
SASSERT(can_decide());
|
||||||
if (m_branch_bool && m_bvars.can_decide())
|
pdecide(m_free_pvars.next_var());
|
||||||
bdecide(m_bvars.next_var());
|
|
||||||
else
|
|
||||||
pdecide(m_free_pvars.next_var());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void solver::pdecide(pvar v) {
|
void solver::pdecide(pvar v) {
|
||||||
|
@ -423,10 +419,6 @@ namespace polysat {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void solver::bdecide(sat::bool_var b) {
|
|
||||||
decide_bool(sat::literal(b), nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void solver::assign_core(pvar v, rational const& val, justification const& j) {
|
void solver::assign_core(pvar v, rational const& val, justification const& j) {
|
||||||
if (j.is_decision())
|
if (j.is_decision())
|
||||||
++m_stats.m_num_decisions;
|
++m_stats.m_num_decisions;
|
||||||
|
@ -485,7 +477,7 @@ namespace polysat {
|
||||||
// Resolve over variable assignment
|
// Resolve over variable assignment
|
||||||
pvar v = item.var();
|
pvar v = item.var();
|
||||||
if (!m_conflict.is_pmarked(v) && !m_conflict.is_bailout()) {
|
if (!m_conflict.is_pmarked(v) && !m_conflict.is_bailout()) {
|
||||||
m_search.pop_asssignment();
|
m_search.pop_assignment();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
inc_activity(v);
|
inc_activity(v);
|
||||||
|
@ -494,7 +486,7 @@ namespace polysat {
|
||||||
revert_decision(v);
|
revert_decision(v);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_search.pop_asssignment();
|
m_search.pop_assignment();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Resolve over boolean literal
|
// Resolve over boolean literal
|
||||||
|
@ -701,13 +693,6 @@ namespace polysat {
|
||||||
decide_bool(*lemma);
|
decide_bool(*lemma);
|
||||||
}
|
}
|
||||||
|
|
||||||
void solver::decide_bool(sat::literal lit, clause* lemma) {
|
|
||||||
SASSERT(!can_propagate());
|
|
||||||
SASSERT(!is_conflict());
|
|
||||||
push_level();
|
|
||||||
assign_decision(lit, lemma);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned solver::level(sat::literal lit0, clause const& cl) {
|
unsigned solver::level(sat::literal lit0, clause const& cl) {
|
||||||
unsigned lvl = base_level();
|
unsigned lvl = base_level();
|
||||||
for (auto lit : cl) {
|
for (auto lit : cl) {
|
||||||
|
|
|
@ -94,9 +94,6 @@ namespace polysat {
|
||||||
|
|
||||||
uint64_t m_max_conflicts = std::numeric_limits<uint64_t>::max();
|
uint64_t m_max_conflicts = std::numeric_limits<uint64_t>::max();
|
||||||
uint64_t m_max_decisions = std::numeric_limits<uint64_t>::max();
|
uint64_t m_max_decisions = std::numeric_limits<uint64_t>::max();
|
||||||
bool m_branch_bool = false;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Per constraint state
|
// Per constraint state
|
||||||
constraint_manager m_constraints;
|
constraint_manager m_constraints;
|
||||||
|
@ -177,7 +174,7 @@ namespace polysat {
|
||||||
void set_conflict(clause& cl) { m_conflict.set(cl); }
|
void set_conflict(clause& cl) { m_conflict.set(cl); }
|
||||||
void set_conflict(pvar v) { m_conflict.set(v); }
|
void set_conflict(pvar v) { m_conflict.set(v); }
|
||||||
|
|
||||||
bool can_decide() const { return !m_free_pvars.empty() || (m_branch_bool && m_bvars.can_decide()); }
|
bool can_decide() const { return !m_free_pvars.empty(); }
|
||||||
void decide();
|
void decide();
|
||||||
void pdecide(pvar v);
|
void pdecide(pvar v);
|
||||||
void bdecide(sat::bool_var b);
|
void bdecide(sat::bool_var b);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue