diff --git a/src/api/python/z3/z3.py b/src/api/python/z3/z3.py index 029eea3b4..594d19d05 100644 --- a/src/api/python/z3/z3.py +++ b/src/api/python/z3/z3.py @@ -1861,15 +1861,6 @@ class QuantifierRef(BoolRef): """ return Z3_is_lambda(self.ctx_ref(), self.ast) - def __getitem__(self, arg): - """Return the Z3 expression `self[arg]`. - """ - if z3_debug(): - _z3_assert(self.is_lambda(), "quantifier should be a lambda expression") - arg = self.sort().domain().cast(arg) - return _to_expr_ref(Z3_mk_select(self.ctx_ref(), self.as_ast(), arg.as_ast()), self.ctx) - - def weight(self): """Return the weight annotation of `self`. @@ -4297,9 +4288,6 @@ def is_array(a): """ return isinstance(a, ArrayRef) -def is_array_sort(a): - return Z3_get_sort_kind(a.ctx.ref(), Z3_get_sort(a.ctx.ref(), a.ast)) == Z3_ARRAY_SORT - def is_const_array(a): """Return `True` if `a` is a Z3 constant array. @@ -4424,7 +4412,7 @@ def Update(a, i, v): proved """ if z3_debug(): - _z3_assert(is_array_sort(a), "First argument must be a Z3 array expression") + _z3_assert(is_array(a), "First argument must be a Z3 array expression") i = a.domain().cast(i) v = a.range().cast(v) ctx = a.ctx @@ -4437,7 +4425,7 @@ def Default(a): proved """ if z3_debug(): - _z3_assert(is_array_sort(a), "First argument must be a Z3 array expression") + _z3_assert(is_array(a), "First argument must be a Z3 array expression") return a.default() @@ -4468,7 +4456,7 @@ def Select(a, i): True """ if z3_debug(): - _z3_assert(is_array_sort(a), "First argument must be a Z3 array expression") + _z3_assert(is_array(a), "First argument must be a Z3 array expression") return a[i] @@ -4488,7 +4476,7 @@ def Map(f, *args): if z3_debug(): _z3_assert(len(args) > 0, "At least one Z3 array expression expected") _z3_assert(is_func_decl(f), "First argument must be a Z3 function declaration") - _z3_assert(all([is_array_sort(a) for a in args]), "Z3 array expected expected") + _z3_assert(all([is_array(a) for a in args]), "Z3 array expected expected") _z3_assert(len(args) == f.arity(), "Number of arguments mismatch") _args, sz = _to_ast_array(args) ctx = f.ctx @@ -4523,7 +4511,7 @@ def Ext(a, b): """ ctx = a.ctx if z3_debug(): - _z3_assert(is_array_sort(a) and is_array_sort(b), "arguments must be arrays") + _z3_assert(is_array(a) and is_array(b), "arguments must be arrays") return _to_expr_ref(Z3_mk_array_ext(ctx.ref(), a.as_ast(), b.as_ast()), ctx) def SetHasSize(a, k): @@ -9988,7 +9976,7 @@ class SeqRef(ExprRef): def __getitem__(self, i): if _is_int(i): i = IntVal(i, self.ctx) - return _to_expr_ref(Z3_mk_seq_nth(self.ctx_ref(), self.as_ast(), i.as_ast()), self.ctx) + return SeqRef(Z3_mk_seq_nth(self.ctx_ref(), self.as_ast(), i.as_ast()), self.ctx) def at(self, i): if _is_int(i): diff --git a/src/sat/sat_drat.cpp b/src/sat/sat_drat.cpp index 27711ebc4..77b1b6545 100644 --- a/src/sat/sat_drat.cpp +++ b/src/sat/sat_drat.cpp @@ -29,12 +29,12 @@ namespace sat { m_out(nullptr), m_bout(nullptr), m_inconsistent(false), + m_num_add(0), + m_num_del(0), m_check_unsat(false), m_check_sat(false), m_check(false), - m_activity(false), - m_num_add(0), - m_num_del(0) + m_activity(false) { if (s.get_config().m_drat && s.get_config().m_drat_file != symbol()) { auto mode = s.get_config().m_drat_binary ? (std::ios_base::binary | std::ios_base::out | std::ios_base::trunc) : std::ios_base::out; diff --git a/src/smt/smt_internalizer.cpp b/src/smt/smt_internalizer.cpp index de544445c..a4e4820a1 100644 --- a/src/smt/smt_internalizer.cpp +++ b/src/smt/smt_internalizer.cpp @@ -1311,7 +1311,7 @@ namespace smt { The deletion event handler is ignored if binary clause optimization is applicable. */ clause * context::mk_clause(unsigned num_lits, literal * lits, justification * j, clause_kind k, clause_del_eh * del_eh) { - TRACE("mk_clause", tout << "creating clause:\n"; display_literals_verbose(tout, num_lits, lits); tout << "\n";); + TRACE("mk_clause", display_literals_verbose(tout << "creating clause: " << literal_vector(num_lits, lits) << "\n", num_lits, lits) << "\n";); m_clause_proof.add(num_lits, lits, k, j); switch (k) { case CLS_AUX: diff --git a/src/smt/theory_seq.cpp b/src/smt/theory_seq.cpp index 2c496ed8d..9a8f020fa 100644 --- a/src/smt/theory_seq.cpp +++ b/src/smt/theory_seq.cpp @@ -3885,7 +3885,14 @@ std::ostream& theory_seq::display_disequation(std::ostream& out, ne const& e) co out << "\n"; } for (unsigned j = 0; j < e.ls().size(); ++j) { - out << e.ls(j) << " != " << e.rs(j) << "\n"; + for (expr* t : e.ls(j)) { + out << mk_bounded_pp(t, m) << " "; + } + out << " != "; + for (expr* t : e.rs(j)) { + out << mk_bounded_pp(t, m) << " "; + } + out << "\n"; } if (e.dep()) { display_deps(out, e.dep()); diff --git a/src/smt/theory_seq.h b/src/smt/theory_seq.h index 1b4c897a8..9d0854aa0 100644 --- a/src/smt/theory_seq.h +++ b/src/smt/theory_seq.h @@ -268,8 +268,8 @@ namespace smt { }; class replay_unit_literal : public apply { - bool m_sign; expr_ref m_e; + bool m_sign; public: replay_unit_literal(ast_manager& m, expr* e, bool sign) : m_e(e, m), m_sign(sign) {} ~replay_unit_literal() override {} diff --git a/src/smt/theory_utvpi.h b/src/smt/theory_utvpi.h index 4228ade6b..76ffba1d8 100644 --- a/src/smt/theory_utvpi.h +++ b/src/smt/theory_utvpi.h @@ -263,10 +263,10 @@ namespace smt { void enforce_parity(); - void validate_model(); - bool eval(expr* e); + void model_validate(); + rational eval_num(expr* e); bool check_z_consistency(); diff --git a/src/smt/theory_utvpi_def.h b/src/smt/theory_utvpi_def.h index fba549412..6823bcf0c 100644 --- a/src/smt/theory_utvpi_def.h +++ b/src/smt/theory_utvpi_def.h @@ -777,11 +777,11 @@ namespace smt { enforce_parity(); m_graph.set_to_zero(to_var(m_zero), neg(to_var(m_zero))); compute_delta(); - DEBUG_CODE(validate_model();); + DEBUG_CODE(model_validate();); } template - void theory_utvpi::validate_model() { + void theory_utvpi::model_validate() { context& ctx = get_context(); unsigned sz = m_atoms.size(); for (unsigned i = 0; i < sz; ++i) {