const std::set<SatLiteral>& conclusionLits)
{
Trace("sat-proof") << ", " << conclusion << "\n";
+ if (d_resChains.hasGenerator(conclusion))
+ {
+ Trace("sat-proof")
+ << "SatProofManager::endResChain: skip repeated proof of " << conclusion
+ << "\n";
+ // clearing
+ d_resLinks.clear();
+ d_redundantLits.clear();
+ return;
+ }
// first process redundant literals
std::set<SatLiteral> visited;
unsigned pos = d_resLinks.size();
return;
}
}
- if (Trace.isOn("sat-proof") && d_resChains.hasGenerator(conclusion))
- {
- Trace("sat-proof") << "SatProofManager::endResChain: replacing proof of "
- << conclusion << "\n";
- }
// since the conclusion can be both reordered and without duplicates and the
// SAT solver does not record this information, we use a MACRO_RESOLUTION
// step, which bypasses these. Note that we could generate a chain resolution
// post-processing.
ProofStep ps(PfRule::MACRO_RESOLUTION_TRUST, children, args);
// note that we must tell the proof generator to overwrite if repeated
- d_resChainPg.addStep(conclusion, ps, CDPOverwrite::ALWAYS);
+ d_resChainPg.addStep(conclusion, ps);
// the premises of this resolution may not have been justified yet, so we do
// not pass assumptions to check closedness
d_resChains.addLazyStep(conclusion, &d_resChainPg);
regress0/printer/tuples_and_records.cvc
regress0/proofs/cyclic-ucp.smt2
regress0/proofs/issue277-circuit-propagator.smt2
+ regress0/proofs/open-pf-datatypes.smt2
regress0/proofs/open-pf-if-unordered-iff.smt2
+ regress0/proofs/open-pf-rederivation.smt2
regress0/proofs/scope.smt2
regress0/proofs/trust-subs-eq-open.smt2
regress0/push-pop/boolean/fuzz_12.smt2
--- /dev/null
+; COMMAND-LINE: --bv-solver=simple
+; EXPECT: unsat
+(set-logic ALL)
+(declare-const __ (_ BitVec 7))
+(assert (bvule ((_ zero_extend 31) ((_ zero_extend 16) ((_ zero_extend 8) __))) ((_ zero_extend 30) ((_ zero_extend 1) ((_ zero_extend 16) ((_ zero_extend 8) __))))))
+(check-sat-assuming ((not (bvule (bvsub ((_ zero_extend 32) ((_ zero_extend 1) ((_ zero_extend 16) ((_ zero_extend 8) __)))) (_ bv1 64)) (bvsub ((_ zero_extend 1) ((_ zero_extend 1) ((_ zero_extend 31) ((_ zero_extend 16) ((_ zero_extend 8) __))))) (_ bv1 64))))))