mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 11:55:51 +00:00
Merge /home/mcmillan/projects/z3_interp into interp
This commit is contained in:
commit
12533ad145
11 changed files with 2873 additions and 20 deletions
|
@ -1636,7 +1636,8 @@ namespace Duality {
|
|||
dont_cares.insert(b);
|
||||
resolve_ite_memo.clear();
|
||||
timer_start("UnderapproxFormula");
|
||||
Term eu = UnderapproxFormula(root->Outgoing->dual,dont_cares);
|
||||
Term dual = root->Outgoing->dual.null() ? ctx.bool_val(true) : root->Outgoing->dual;
|
||||
Term eu = UnderapproxFormula(dual,dont_cares);
|
||||
timer_stop("UnderapproxFormula");
|
||||
/* combine with children */
|
||||
chu.push_back(eu);
|
||||
|
@ -1944,6 +1945,8 @@ namespace Duality {
|
|||
|
||||
for(unsigned i = 0; i < clauses.size(); i++){
|
||||
Term &clause = clauses[i];
|
||||
if(clause.is_app() && clause.decl().get_decl_kind() == Uninterpreted)
|
||||
clause = implies(ctx.bool_val(true),clause);
|
||||
if(!canonical_clause(clause))
|
||||
clause = implies((!clause).simplify(),ctx.bool_val(false));
|
||||
Term head = clause.arg(1);
|
||||
|
|
|
@ -916,7 +916,7 @@ namespace Duality {
|
|||
return true;
|
||||
}
|
||||
#ifdef UNDERAPPROX_NODES
|
||||
if(0 && last_decisions > 5000){
|
||||
if(UseUnderapprox && last_decisions > 500){
|
||||
std::cout << "making an underapprox\n";
|
||||
ExpandNodeFromCoverFail(node);
|
||||
}
|
||||
|
@ -1642,7 +1642,7 @@ namespace Duality {
|
|||
std::set<Node *> old_choices;
|
||||
|
||||
void ExpansionChoices(std::set<Node *> &best, bool high_priority){
|
||||
if(!underapprox || constrained){
|
||||
if(!underapprox || constrained || high_priority){
|
||||
ExpansionChoicesFull(best, high_priority);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -515,39 +515,39 @@ namespace Duality {
|
|||
}
|
||||
|
||||
friend expr operator+(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_ADD,a,b));
|
||||
return a.ctx().make(Plus,a,b); // expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_ADD,a,b));
|
||||
}
|
||||
|
||||
friend expr operator*(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_MUL,a,b));
|
||||
return a.ctx().make(Times,a,b); // expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_MUL,a,b));
|
||||
}
|
||||
|
||||
friend expr operator/(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_DIV,a,b));
|
||||
return a.ctx().make(Div,a,b); // expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_DIV,a,b));
|
||||
}
|
||||
|
||||
friend expr operator-(expr const & a) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_UMINUS,a));
|
||||
return a.ctx().make(Uminus,a); // expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_UMINUS,a));
|
||||
}
|
||||
|
||||
friend expr operator-(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_SUB,a,b));
|
||||
return a.ctx().make(Sub,a,b); // expr(a.ctx(),a.m().mk_app(a.ctx().m_arith_fid,OP_SUB,a,b));
|
||||
}
|
||||
|
||||
friend expr operator<=(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_LE,a,b));
|
||||
return a.ctx().make(Leq,a,b); // expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_LE,a,b));
|
||||
}
|
||||
|
||||
friend expr operator>=(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_GE,a,b));
|
||||
return a.ctx().make(Geq,a,b); //expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_GE,a,b));
|
||||
}
|
||||
|
||||
friend expr operator<(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_LT,a,b));
|
||||
return a.ctx().make(Lt,a,b); expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_LT,a,b));
|
||||
}
|
||||
|
||||
friend expr operator>(expr const & a, expr const & b) {
|
||||
return expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_GT,a,b));
|
||||
return a.ctx().make(Gt,a,b); expr(a.ctx(),a.m().mk_app(a.m().get_basic_family_id(),OP_GT,a,b));
|
||||
}
|
||||
|
||||
expr simplify() const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue