mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-03 21:09:11 +00:00 
			
		
		
		
	interpolation fixes
This commit is contained in:
		
							parent
							
								
									75bb495585
								
							
						
					
					
						commit
						7fc011dbb8
					
				
					 2 changed files with 5 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue