mirror of
https://github.com/Z3Prover/z3
synced 2025-04-13 12:28:44 +00:00
interpolation fixes
This commit is contained in:
parent
75bb495585
commit
7fc011dbb8
|
@ -64,7 +64,7 @@ struct frame_reducer : public iz3mgr {
|
|||
: iz3mgr(other) {}
|
||||
|
||||
void get_proof_assumptions_rec(z3pf proof, hash_set<ast> &memo, std::vector<bool> &used_frames){
|
||||
if(memo.count(proof))return;
|
||||
if(memo.find(proof) != memo.end())return;
|
||||
memo.insert(proof);
|
||||
pfrule dk = pr(proof);
|
||||
if(dk == PR_ASSERTED){
|
||||
|
|
|
@ -680,7 +680,7 @@ class iz3proof_itp_impl : public iz3proof_itp {
|
|||
ast dummy1, dummy2;
|
||||
sum_cond_ineq(in1,coeff2,in2,dummy1,dummy2);
|
||||
n1 = merge_normal_chains(n1,n2, Aproves, Bproves);
|
||||
ineq = make_normal(in1,n1);
|
||||
ineq = is_true(n1) ? in1 : make_normal(in1,n1);
|
||||
}
|
||||
|
||||
bool is_ineq(const ast &ineq){
|
||||
|
@ -760,6 +760,8 @@ class iz3proof_itp_impl : public iz3proof_itp {
|
|||
}
|
||||
|
||||
ast round_ineq(const ast &ineq){
|
||||
if(sym(ineq) == normal)
|
||||
return make_normal(round_ineq(arg(ineq,0)),arg(ineq,1));
|
||||
if(!is_ineq(ineq))
|
||||
throw cannot_simplify();
|
||||
ast res = simplify_ineq(ineq);
|
||||
|
@ -1689,7 +1691,7 @@ class iz3proof_itp_impl : public iz3proof_itp {
|
|||
ast diff;
|
||||
if(comp_op == Leq) diff = make(Sub,rhs,mid);
|
||||
else diff = make(Sub,mid,rhs);
|
||||
ast foo = z3_simplify(make(Leq,make_int("0"),diff));
|
||||
ast foo = make(Leq,make_int("0"),z3_simplify(diff));
|
||||
if(is_true(cond))
|
||||
cond = foo;
|
||||
else {
|
||||
|
|
Loading…
Reference in a new issue