clauses_persistent.push(lemma_ref);
}
attachClause(lemma_ref);
- } else {
- PROOF
- (
- Node cnf_assertion = lemmas_cnf_assertion[j].first;
- Node cnf_def = lemmas_cnf_assertion[j].second;
-
- Debug("pf::sat") << "Minisat::Solver registering a THEORY_LEMMA (3)" << std::endl;
- ClauseId id = ProofManager::getSatProof()->registerUnitClause(lemma[0], THEORY_LEMMA);
- ProofManager::getCnfProof()->setClauseAssertion(id, cnf_assertion);
- ProofManager::getCnfProof()->setClauseDefinition(id, cnf_def);
- );
}
// If the lemma is propagating enqueue its literal (or set the conflict)
if (conflict == CRef_Undef && value(lemma[0]) != l_True) {
if (lemma.size() == 1 || (value(lemma[1]) == l_False && trail_index(var(lemma[1])) < backtrack_index)) {
+ if (PROOF_ON() && lemma.size() == 1)
+ {
+ Node cnf_assertion = lemmas_cnf_assertion[j].first;
+ Node cnf_def = lemmas_cnf_assertion[j].second;
+
+ Debug("pf::sat") << "Minisat::Solver registering a THEORY_LEMMA (3) "
+ << cnf_assertion << value(lemma[0]) << std::endl;
+ ClauseId id = ProofManager::getSatProof()->registerUnitClause(
+ lemma[0], THEORY_LEMMA);
+ ProofManager::getCnfProof()->setClauseAssertion(id, cnf_assertion);
+ ProofManager::getCnfProof()->setClauseDefinition(id, cnf_def);
+ }
+
if (value(lemma[0]) == l_False) {
// We have a conflict
if (lemma.size() > 1) {
regress0/nl/issue3718.smt2
regress0/nl/issue3719.smt2
regress0/nl/issue3729-cm-solved-tf.smt2
+ regress0/nl/issue3959.smt2
regress0/nl/magnitude-wrong-1020-m.smt2
regress0/nl/mult-po.smt2
regress0/nl/nia-wrong-tl.smt2
--- /dev/null
+; REQUIRES: proof
+; COMMAND-LINE: --produce-unsat-cores --incremental
+; EXPECT: sat
+
+; Note: the logic must include UF to trigger the bug
+(set-logic QF_UFNIA)
+(declare-const v10 Bool)
+(declare-const i12 Int)
+(declare-const i16 Int)
+(push 1)
+(assert (=> (<= (mod i12 38) i16) v10))
+(check-sat)