3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-11 05:30:51 +00:00

added quantifiers in new interpolation

This commit is contained in:
Ken McMillan 2013-10-25 18:40:26 -07:00
parent 79b0f83ab3
commit 81df4932fb
7 changed files with 133 additions and 81 deletions

View file

@ -2056,11 +2056,26 @@ class iz3proof_itp_impl : public iz3proof_itp {
return new_var;
}
ast add_quants(ast e){
for(int i = localization_vars.size() - 1; i >= 0; i--){
LocVar &lv = localization_vars[i];
opr quantifier = (pv->in_range(lv.frame,rng)) ? Exists : Forall;
e = apply_quant(quantifier,lv.var,e);
}
return e;
}
node make_resolution(ast pivot, node premise1, node premise2) {
std::vector<ast> lits;
return make_resolution(pivot,lits,premise1,premise2);
}
/* Return an interpolant from a proof of false */
ast interpolate(const node &pf){
// proof of false must be a formula, with quantified symbols
return add_quants(pf);
}
ast resolve_with_quantifier(const ast &pivot1, const ast &conj1,
const ast &pivot2, const ast &conj2){
if(is_not(arg(pivot1,1)))