3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-11 09:44:43 +00:00
z3/src/math/polysat/search_state.cpp
Jakob Rath d7b8ea2f7f
Polysat: minor fixes (#5364)
* update include paths

* bdd fixes

* update/fix some tests

* work around assertion failure when constraint from clause becomes unit

* Remove old code

* use clause_builder

* Verify model when returning SAT

* log

* fix
2021-06-22 09:27:18 -07:00

51 lines
1.1 KiB
C++

/*++
Copyright (c) 2021 Microsoft Corporation
Module Name:
polysat search state
Author:
Nikolaj Bjorner (nbjorner) 2021-03-19
Jakob Rath 2021-04-6
--*/
#include "math/polysat/search_state.h"
namespace polysat {
std::ostream& search_item::display(std::ostream& out) const {
switch (kind()) {
case search_item_k::assignment:
return out << "assignment(v" << var() << ")";
case search_item_k::boolean:
return out << "boolean(" << lit() << ")";
}
UNREACHABLE();
return out;
}
std::ostream& search_state::display(std::ostream& out) const {
return out << m_items;
}
void search_state::push_assignment(pvar p, rational const& r) {
m_items.push_back(search_item::assignment(p));
m_assignment.push_back({p, r});
}
void search_state::push_boolean(sat::literal lit) {
m_items.push_back(search_item::boolean(lit));
}
void search_state::pop() {
auto const& item = m_items.back();
if (item.is_assignment()) {
m_assignment.pop_back();
}
m_items.pop_back();
}
}