The assertion/tracking was spurious, since an eliminated term may occur in multiple contexts.
Fixes #5728 (which I could not reproduce currently). Adds a regression from a duplicate of that issue.
if (fixedPoint)
{
size_t i = 0;
- std::unordered_set<Node, NodeHashFunction> processed;
while (i < newAsserts.size())
{
theory::TrustNode trn = newAsserts[i];
- AlwaysAssert(processed.find(trn.getProven()) == processed.end());
- processed.insert(trn.getProven());
// do not run to fixed point on subcall, since we are processing all
// lemmas in this loop
newAsserts[i] = runLemma(trn, newAsserts, newSkolems, false);
regress1/issue3990-sort-inference.smt2
regress1/issue4273-ext-rew-cache.smt2
regress1/issue4335-unsat-core.smt2
+ regress1/issue5739-rtf-processed.smt2
regress1/lemmas/clocksynchro_5clocks.main_invar.base.smtv1.smt2
regress1/lemmas/pursuit-safety-8.smtv1.smt2
regress1/lemmas/simple_startup_9nodes.abstract.base.smtv1.smt2
--- /dev/null
+; COMMAND-LINE: --cegqi-full
+; EXPECT: unsat
+(set-logic ALL)
+(set-info :status unsat)
+(assert
+ (not
+ (exists
+ ((a (_ BitVec 32))
+ (b (_ BitVec 32))
+ (c (_ BitVec 32))
+ (d (_ BitVec 32))
+ (e (_ BitVec 32)))
+ (distinct (bvashr c b) (bvlshr d a) e))))
+(check-sat)