3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-19 20:33:38 +00:00

Workaround for theory vars without unassigned atoms

This commit is contained in:
Anh-Dung Phan 2013-12-11 11:49:40 -08:00
parent caba15d6b3
commit 1c0442ea31

View file

@ -1067,12 +1067,15 @@ namespace smt {
*/
template<typename Ext>
expr* theory_arith<Ext>::mk_ge(theory_var v, inf_numeral const& val) {
SASSERT(m_objective_theory_vars.contains(v));
ast_manager& m = get_manager();
context& ctx = get_context();
std::ostringstream strm;
strm << val << " <= v" << v;
expr* b = m.mk_const(symbol(strm.str().c_str()), m.mk_bool_sort());
if (!ctx.b_internalized(b)) {
// NB: For some reason, v has been internalized however it has no entry in m_unassigned_atoms
SASSERT(m_unassigned_atoms.size() == m_var_occs.size());
if (!ctx.b_internalized(b) && ((unsigned)v < m_unassigned_atoms.size())) {
bool_var bv = ctx.mk_bool_var(b);
ctx.set_var_theory(bv, get_id());
// ctx.set_enode_flag(bv, true);