mirror of
https://github.com/Z3Prover/z3
synced 2025-07-19 10:52:02 +00:00
fix #1330. Interpolation transformation needs to handle TRANSITIVITY_STAR
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e7aa6455bc
commit
c886b6d500
3 changed files with 30 additions and 13 deletions
|
@ -29,6 +29,7 @@
|
|||
#include "interp/iz3profiling.h"
|
||||
#include "interp/iz3interp.h"
|
||||
#include "interp/iz3proof_itp.h"
|
||||
#include "ast/ast_pp.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <algorithm>
|
||||
|
@ -1851,6 +1852,21 @@ public:
|
|||
}
|
||||
break;
|
||||
}
|
||||
case PR_TRANSITIVITY_STAR: {
|
||||
// assume the premises are x = y, y = z, z = u, u = v, ..
|
||||
|
||||
ast x = arg(conc(prem(proof,0)),0);
|
||||
ast y = arg(conc(prem(proof,0)),1);
|
||||
ast z = arg(conc(prem(proof,1)),1);
|
||||
res = iproof->make_transitivity(x,y,z,args[0],args[1]);
|
||||
|
||||
for (unsigned i = 2; i < nprems; ++i) {
|
||||
y = z;
|
||||
z = arg(conc(prem(proof,i)),1);
|
||||
res = iproof->make_transitivity(x,y,z,res,args[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PR_QUANT_INTRO:
|
||||
case PR_MONOTONICITY:
|
||||
{
|
||||
|
@ -2029,6 +2045,7 @@ public:
|
|||
break;
|
||||
}
|
||||
default:
|
||||
IF_VERBOSE(0, verbose_stream() << "Unsupported proof rule: " << expr_ref((expr*)proof.raw(), *proof.mgr()) << "\n";);
|
||||
// pfgoto(proof);
|
||||
// SASSERT(0 && "translate_main: unsupported proof rule");
|
||||
throw unsupported();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue