3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 03:15:50 +00:00

still integrating duality

This commit is contained in:
Ken McMillan 2013-04-30 13:07:49 -07:00
parent feb5360999
commit e939dd2bc5
10 changed files with 66 additions and 24 deletions

View file

@ -156,10 +156,11 @@ namespace Duality {
virtual
lbool interpolate_tree(TermTree *assumptions,
TermTree *&interpolants,
model &_model,
TermTree *goals = 0
) = 0;
TermTree *&interpolants,
model &_model,
TermTree *goals = 0,
bool weak = false
) = 0;
/** Assert a background axiom. */
virtual void assert_axiom(const expr &axiom) = 0;
@ -181,11 +182,13 @@ namespace Duality {
interpolating_solver *islvr; /** iZ3 solver */
lbool interpolate_tree(TermTree *assumptions,
TermTree *&interpolants,
model &_model,
TermTree *goals = 0)
TermTree *&interpolants,
model &_model,
TermTree *goals = 0,
bool weak = false)
{
literals _labels;
islvr->SetWeakInterpolants(weak);
return islvr->interpolate_tree(assumptions,interpolants,_model,_labels,true);
}

View file

@ -585,7 +585,7 @@ namespace Duality {
// if (dualLabels != null) dualLabels.Dispose();
timer_start("interpolate_tree");
lbool res = ls->interpolate_tree(tree, interpolant, dualModel,goals);
lbool res = ls->interpolate_tree(tree, interpolant, dualModel,goals,true);
timer_stop("interpolate_tree");
if (res == l_false)
{

View file

@ -294,7 +294,9 @@ namespace Duality {
/** Return the counterexample */
virtual Counterexample GetCounterexample(){
return cex;
Counterexample res = cex;
cex.tree = 0; // Cex now belongs to caller
return res;
}
// options
@ -879,6 +881,7 @@ namespace Duality {
#endif
if(_cex) *_cex = cex;
else delete cex.tree; // delete the cex if not required
cex.tree = 0;
node->Bound = save; // put back original bound
timer_stop("ProveConjecture");
return false;

View file

@ -467,14 +467,12 @@ expr context::make_quant(decl_kind op, const std::vector<sort> &_sorts, const st
if(res == unsat){
// TODO
#if 0
interpolation_options_struct opts;
if(weak_mode)
Z3_set_interpolation_option(options,"weak","1");
#endif
opts.set("weak","1");
::ast *proof = m_solver->get_proof();
iz3interpolate(m(),proof,_assumptions,_parents,_interpolants,_theory,0);
iz3interpolate(m(),proof,_assumptions,_parents,_interpolants,_theory,&opts);
std::vector<expr> linearized_interpolants(_interpolants.size());
for(unsigned i = 0; i < _interpolants.size(); i++)