summaryrefslogtreecommitdiff
path: root/src/expr
diff options
context:
space:
mode:
authorHaniel Barbosa <hanielbbarbosa@gmail.com>2020-09-17 18:22:21 -0300
committerGitHub <noreply@github.com>2020-09-17 16:22:21 -0500
commitd256af7a024fa09c6352fb0e7881ae39d17ae611 (patch)
tree8c9a06145ab69c33753e423c09044967e365c4a6 /src/expr
parent6cc837f99a37287bf583491649797486650f77e7 (diff)
[proof-new] Have mkScope agnostic to True assumptions (#5086)
Diffstat (limited to 'src/expr')
-rw-r--r--src/expr/proof_node_manager.cpp19
-rw-r--r--src/expr/proof_node_manager.h3
2 files changed, 20 insertions, 2 deletions
diff --git a/src/expr/proof_node_manager.cpp b/src/expr/proof_node_manager.cpp
index 54315ee05..66a8197d8 100644
--- a/src/expr/proof_node_manager.cpp
+++ b/src/expr/proof_node_manager.cpp
@@ -22,7 +22,11 @@ using namespace CVC4::kind;
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,
@@ -88,6 +92,19 @@ std::shared_ptr<ProofNode> ProofNodeManager::mkScope(
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);
diff --git a/src/expr/proof_node_manager.h b/src/expr/proof_node_manager.h
index 774177d66..799a50f2e 100644
--- a/src/expr/proof_node_manager.h
+++ b/src/expr/proof_node_manager.h
@@ -118,7 +118,6 @@ class ProofNodeManager
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
@@ -150,6 +149,8 @@ class ProofNodeManager
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
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback