3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 21:38:44 +00:00

fix assertions (#83)

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-09-07 11:15:23 -07:00 committed by Lev Nachmanson
parent d913a55dfb
commit 2b18627fa1
2 changed files with 11 additions and 1 deletions

View file

@ -3262,6 +3262,10 @@ public:
void init_model(model_generator & mg) {
init_variable_values();
DEBUG_CODE(
for (auto const& kv : m_variable_values) {
SASSERT(!m_solver->var_is_int(kv.first) || kv.second.is_int() || m.canceled());
});
m_factory = alloc(arith_factory, m);
mg.register_factory(m_factory);
TRACE("arith", display(tout););
@ -3322,7 +3326,7 @@ public:
else {
rational r = get_value(v);
TRACE("arith", tout << "v" << v << " := " << r << "\n";);
SASSERT(!a.is_int(o) || r.is_int());
SASSERT("integer variables should have integer values: " && (!a.is_int(o) || r.is_int() || m.canceled()));
if (a.is_int(o) && !r.is_int()) r = floor(r);
return alloc(expr_wrapper_proc, m_factory->mk_value(r, m.get_sort(o)));
}

View file

@ -60,6 +60,12 @@ struct ineq {
typedef vector<ineq> lemma;
class int_solver {
struct validate_model {
int_solver& s;
lia_move& r;
validate_model(int_solver& s, lia_move& r): s(s), r(r) {}
~validate_model();
};
public:
// fields
lar_solver *m_lar_solver;