mirror of
https://github.com/Z3Prover/z3
synced 2026-06-05 00:20:50 +00:00
move closure conversion to solver internalization
- only the internalizer performs closure conversion - theory_array treats propagation of lambdas similar to stores - ho_matcher treats top-level flex patterns as first-order - pattern-inference fix to handle quantifiers (lambdas) in patterns that are computed
This commit is contained in:
parent
2cc4422018
commit
dbe986fdf7
10 changed files with 97 additions and 87 deletions
|
|
@ -46,6 +46,10 @@ namespace smt {
|
|||
bool is_choice(expr const* n) const { return is_app(n) && to_app(n)->is_app_of(get_id(), OP_CHOICE); }
|
||||
bool is_array_sort(sort const* s) const { return s->is_sort_of(get_id(), ARRAY_SORT); }
|
||||
bool is_array_sort(expr const* n) const { return is_array_sort(n->get_sort()); }
|
||||
bool is_lambda(expr *n) const {
|
||||
return m.is_lambda_def(n) || ::is_lambda(n);
|
||||
}
|
||||
|
||||
|
||||
bool is_store(enode const * n) const { return is_store(n->get_expr()); }
|
||||
bool is_map(enode const* n) const { return is_map(n->get_expr()); }
|
||||
|
|
@ -55,6 +59,12 @@ namespace smt {
|
|||
bool is_choice(enode const* n) const { return is_choice(n->get_expr()); }
|
||||
bool is_default(enode const* n) const { return is_default(n->get_expr()); }
|
||||
bool is_array_sort(enode const* n) const { return is_array_sort(n->get_sort()); }
|
||||
bool is_lambda(enode const *n) const {
|
||||
return is_lambda(n->get_expr());
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool is_select_arg(enode* r);
|
||||
|
||||
app * mk_select(unsigned num_args, expr * const * args);
|
||||
|
|
@ -76,6 +86,7 @@ namespace smt {
|
|||
void assert_axiom(literal l);
|
||||
void assert_store_axiom1_core(enode * n);
|
||||
void assert_store_axiom2_core(enode * store, enode * select);
|
||||
void assert_lambda_axiom_core(enode *lambda, enode *select);
|
||||
void assert_store_axiom1(enode * n) { m_axiom1_todo.push_back(n); }
|
||||
bool assert_store_axiom2(enode * store, enode * select);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue