d_iteRemover.run(additionalLemmas, iteSkolemMap);
additionalLemmas[0] = theory::Rewriter::rewrite(additionalLemmas[0]);
+ if(Trace.isOn("lemma-ites")) {
+ Debug("lemma-ites") << "removed ITEs from lemma: " << node << std::endl;
+ Debug("lemma-ites") << " + now have the following "
+ << additionalLemmas.size() << " lemma(s):" << std::endl;
+ for(std::vector<Node>::const_iterator i = additionalLemmas.begin();
+ i != additionalLemmas.end();
+ ++i) {
+ Debug("lemma-ites") << " + " << *i << std::endl;
+ }
+ Debug("lemma-ites") << std::endl;
+ }
+
// assert to prop engine
d_propEngine->assertLemma(additionalLemmas[0], negated, removable);
for (unsigned i = 1; i < additionalLemmas.size(); ++ i) {
{
for (unsigned i = 0, i_end = output.size(); i < i_end; ++ i) {
std::vector<Node> quantVar;
- output[i] = run(output[i], output, iteSkolemMap, quantVar);
+ // Do this in two steps to avoid Node problems(?)
+ // Appears related to bug 512, splitting this into two lines
+ // fixes the bug on clang on Mac OS
+ Node itesRemoved = run(output[i], output, iteSkolemMap, quantVar);
+ output[i] = itesRemoved;
}
}
bug484.smt2 \
bug486.cvc \
bug497.cvc \
- bug507.smt2
+ bug507.smt2 \
+ bug512.minimized.smt2
TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(TPTP_TESTS) $(BUG_TESTS)
--- /dev/null
+; EXPECT: unknown
+; EXIT: 0
+(set-logic UF)
+(declare-sort T 0)
+(declare-fun bool_2_U (Bool) T)
+(declare-fun U_2_bool (T) Bool)
+(assert (forall ((x T)) (= (bool_2_U (U_2_bool x)) x)))
+(check-sat)