* unchanged.
*/
bool updateNode(ProofNode* pn, ProofNode* pnr);
+ /**
+ * Ensure that pn is checked, regardless of the proof check format.
+ */
+ void ensureChecked(ProofNode* pn);
/** Get the underlying proof checker */
ProofChecker* getChecker() const;
/**
* This throws an assertion error if we fail to check such a proof node, or
* if expected is provided (non-null) and is different what is proven by the
* other arguments.
+ *
+ * The flag didCheck is set to true if the underlying proof checker was
+ * invoked. This may be false if e.g. the proof checking mode is lazy.
*/
Node checkInternal(PfRule id,
const std::vector<std::shared_ptr<ProofNode>>& children,
const std::vector<Node>& args,
- Node expected);
+ Node expected,
+ bool& didCheck);
/**
* Update node internal, return true if successful. This is called by
* the update node methods above. The argument needsCheck is whether we