namespace CVC4 {
-ProofNodeManager::ProofNodeManager(ProofChecker* pc) : d_checker(pc) {}
+ProofNodeManager::ProofNodeManager(ProofChecker* pc)
+ : d_checker(pc)
+{
+ d_true = NodeManager::currentNM()->mkConst(true);
+}
std::shared_ptr<ProofNode> ProofNodeManager::mkNode(
PfRule id,
acu.insert(a);
continue;
}
+ // trivial assumption
+ if (a == d_true)
+ {
+ Trace("pnm-scope") << "- justify trivial True assumption\n";
+ for (std::shared_ptr<ProofNode> pfs : fa.second)
+ {
+ Assert(pfs->getResult() == a);
+ updateNode(pfs.get(), PfRule::MACRO_SR_PRED_INTRO, {}, {a});
+ }
+ Trace("pnm-scope") << "...finished" << std::endl;
+ acu.insert(a);
+ continue;
+ }
Trace("pnm-scope") << "- try matching free assumption " << a << "\n";
// otherwise it may be due to symmetry?
Node aeqSym = CDProof::getSymmFact(a);
bool ensureClosed = true,
bool doMinimize = false,
Node expected = Node::null());
-
/**
* This method updates pn to be a proof of the form <id>( children, args ),
* while maintaining its d_proven field. This method returns false if this
private:
/** The (optional) proof checker */
ProofChecker* d_checker;
+ /** the true node */
+ Node d_true;
/** Check internal
*
* This returns the result of proof checking a ProofNode with the provided