mirror of
https://github.com/Z3Prover/z3
synced 2025-05-11 09:44:43 +00:00
fix #1365. Filter MBQI instantiations for as-array terms that lead the array theory to return unknown and therefore block further instantiations. as-array terms are at this point almost always created from internal model values so quantifier instantiations with these have little value, other than instantiations of other paraameters that may indepdendently help
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
c5f231acdf
commit
357b4b20fd
4 changed files with 10 additions and 16 deletions
|
@ -32,6 +32,7 @@ namespace smt {
|
|||
model_checker::model_checker(ast_manager & m, qi_params const & p, model_finder & mf):
|
||||
m(m),
|
||||
m_params(p),
|
||||
m_autil(m),
|
||||
m_qm(0),
|
||||
m_context(0),
|
||||
m_root2value(0),
|
||||
|
@ -205,13 +206,13 @@ namespace smt {
|
|||
}
|
||||
|
||||
void model_checker::operator()(expr *n) {
|
||||
if (m.is_model_value(n)) {
|
||||
if (m.is_model_value(n) || m_autil.is_as_array(n)) {
|
||||
throw is_model_value();
|
||||
}
|
||||
}
|
||||
|
||||
bool model_checker::contains_model_value(expr* n) {
|
||||
if (m.is_model_value(n)) {
|
||||
if (m.is_model_value(n) || m_autil.is_as_array(n)) {
|
||||
return true;
|
||||
}
|
||||
if (is_app(n) && to_app(n)->get_num_args() == 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue