mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 11:55:51 +00:00
#6319 - fix incompleteness in propagation of default to all array terms in the equivalence class. Fix bug with q_mbi where domain restrictions are not using values because the current model does not evaluate certain bound variables to values. Set model completion when adding these bound variables to the model to ensure their values are not missed. Add better propagation of diagnostics when tactics and the new solver return unknown. The reason for unknown can now be traced to what theory was culprit (currently no additional information)
This commit is contained in:
parent
6226875283
commit
1f150ecd52
16 changed files with 70 additions and 24 deletions
|
@ -50,7 +50,8 @@ namespace array {
|
|||
// void log_drat(array_justification const& c);
|
||||
|
||||
struct var_data {
|
||||
bool m_prop_upward{ false };
|
||||
bool m_prop_upward = false ;
|
||||
bool m_has_default = false;
|
||||
euf::enode_vector m_lambdas; // equivalent nodes that have beta reduction properties
|
||||
euf::enode_vector m_parent_lambdas; // parents that have beta reduction properties
|
||||
euf::enode_vector m_parent_selects; // parents that use array in select position
|
||||
|
@ -202,7 +203,7 @@ namespace array {
|
|||
|
||||
// solving
|
||||
void add_parent_select(theory_var v_child, euf::enode* select);
|
||||
void add_parent_default(theory_var v_child, euf::enode* def);
|
||||
void add_parent_default(theory_var v_child);
|
||||
void add_lambda(theory_var v, euf::enode* lambda);
|
||||
void add_parent_lambda(theory_var v_child, euf::enode* lambda);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue