void TheoryInferenceManager::conflict(TNode conf, InferenceId id)
{
- d_conflictIdStats << id;
- d_theoryState.notifyInConflict();
- d_out.conflict(conf);
- ++d_numConflicts;
+ TrustNode tconf = TrustNode::mkTrustConflict(conf, nullptr);
+ return trustedConflict(tconf, id);
}
void TheoryInferenceManager::trustedConflict(TrustNode tconf, InferenceId id)
{
d_conflictIdStats << id;
+ Trace("im") << "(conflict " << id << " " << tconf.getProven() << ")"
+ << std::endl;
d_theoryState.notifyInConflict();
d_out.trustedConflict(tconf);
++d_numConflicts;
}
}
d_lemmaIdStats << id;
+ Trace("im") << "(lemma " << id << " " << tlem.getProven() << ")" << std::endl;
d_numCurrentLemmas++;
d_out.trustedLemma(tlem, p);
return true;
InferenceId id,
TNode exp)
{
- d_factIdStats << id;
- return processInternalFact(atom, pol, PfRule::UNKNOWN, {exp}, {}, nullptr);
+ return processInternalFact(
+ atom, pol, id, PfRule::UNKNOWN, {exp}, {}, nullptr);
}
bool TheoryInferenceManager::assertInternalFact(TNode atom,
const std::vector<Node>& args)
{
Assert(pfr != PfRule::UNKNOWN);
- d_factIdStats << id;
- return processInternalFact(atom, pol, pfr, exp, args, nullptr);
+ return processInternalFact(atom, pol, id, pfr, exp, args, nullptr);
}
bool TheoryInferenceManager::assertInternalFact(TNode atom,
const std::vector<Node>& exp,
ProofGenerator* pg)
{
- d_factIdStats << id;
- return processInternalFact(atom, pol, PfRule::ASSUME, exp, {}, pg);
+ return processInternalFact(atom, pol, id, PfRule::ASSUME, exp, {}, pg);
}
bool TheoryInferenceManager::processInternalFact(TNode atom,
bool pol,
+ InferenceId iid,
PfRule id,
const std::vector<Node>& exp,
const std::vector<Node>& args,
ProofGenerator* pg)
{
+ d_factIdStats << iid;
+ Trace("im") << "(fact " << iid << " " << (pol ? Node(atom) : atom.notNode())
+ << ")" << std::endl;
// make the node corresponding to the explanation
Node expn = NodeManager::currentNM()->mkAnd(exp);
// call the pre-notify fact method with preReg = false, isInternal = true