summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolaj Bjorner <nbjorner@microsoft.com>2020-04-09 01:06:37 (GMT)
committerNikolaj Bjorner <nbjorner@microsoft.com>2020-04-09 01:06:37 (GMT)
commit56358a6b94c9648bea6007ceb05f7f7cdf5b1c44 (patch)
tree74e39d6c3583f3e24f2d051d7d77f8dc40eb4e79
parent4bfcc75ed42a81765707ec508ea2f2e40c9b19d1 (diff)
downloadz3-56358a6b94c9648bea6007ceb05f7f7cdf5b1c44.zip
z3-56358a6b94c9648bea6007ceb05f7f7cdf5b1c44.tar.gz
z3-56358a6b94c9648bea6007ceb05f7f7cdf5b1c44.tar.bz2
fix #3867
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
-rw-r--r--src/model/model_evaluator.cpp4
-rw-r--r--src/model/model_evaluator.h1
-rw-r--r--src/qe/qe_arith.cpp6
3 files changed, 10 insertions, 1 deletions
diff --git a/src/model/model_evaluator.cpp b/src/model/model_evaluator.cpp
index 9bf959c..328afad 100644
--- a/src/model/model_evaluator.cpp
+++ b/src/model/model_evaluator.cpp
@@ -744,3 +744,7 @@ void model_evaluator::set_solver(expr_solver* solver) {
bool model_evaluator::has_solver() {
return m_imp->m_cfg.m_seq_rw.has_solver();
}
+
+model_core const & model_evaluator::get_model() const {
+ return m_imp->cfg().m_model;
+}
diff --git a/src/model/model_evaluator.h b/src/model/model_evaluator.h
index 9f2320a..e57e1f3 100644
--- a/src/model/model_evaluator.h
+++ b/src/model/model_evaluator.h
@@ -37,6 +37,7 @@ public:
~model_evaluator();
ast_manager & m () const;
+ model_core const& get_model() const;
void set_model_completion(bool f);
bool get_model_completion() const;
void set_expand_array_equalities(bool f);
diff --git a/src/qe/qe_arith.cpp b/src/qe/qe_arith.cpp
index c30e77c..1fa65a1 100644
--- a/src/qe/qe_arith.cpp
+++ b/src/qe/qe_arith.cpp
@@ -564,7 +564,11 @@ namespace qe {
if (!tids.find(v, id)) {
rational r;
expr_ref val = eval(v);
- VERIFY(a.is_numeral(val, r));
+ if (!a.is_numeral(val, r)) {
+ TRACE("qe", tout << eval.get_model() << "\n";);
+
+ throw default_exception("mbp evaluation was only partial");
+ }
id = mbo.add_var(r, a.is_int(v));
tids.insert(v, id);
}