3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-22 16:45:31 +00:00

enhance model validation to invoke rewriter if result isn't true using the simplify-based model evaluator

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2016-01-15 03:40:33 +05:30
parent 01fd3c919b
commit 7cbd59bf06

View file

@ -43,6 +43,7 @@ Notes:
#include"model_smt2_pp.h"
#include"model_v2_pp.h"
#include"model_params.hpp"
#include"th_rewriter.h"
func_decls::func_decls(ast_manager & m, func_decl * f):
m_decls(TAG(func_decl*, f, 0)) {
@ -1624,6 +1625,11 @@ void cmd_context::validate_model() {
TRACE("model_validate", tout << "checking\n" << mk_ismt2_pp(a, m()) << "\nresult:\n" << mk_ismt2_pp(r, m()) << "\n";);
if (m().is_true(r))
continue;
th_rewriter thr(m());
thr(r);
if (m().is_true(r))
continue;
// The evaluator for array expressions is not complete
// If r contains as_array/store/map/const expressions, then we do not generate the error.
// TODO: improve evaluator for model expressions.