summaryrefslogtreecommitdiff
path: root/src/smt/smt_engine.h
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-12-03 16:14:59 -0600
committerGitHub <noreply@github.com>2020-12-03 16:14:59 -0600
commit01d8991ad7059fff4807c2c597c04959d39ab176 (patch)
treec18ef1c577c8470927f3beddfb254f0c166edfe0 /src/smt/smt_engine.h
parent5e79f55ac4a2e21834b094f44a344f333f74e8b0 (diff)
(proof-new) Updates to SMT proof manager and SmtEngine (#5446)
This PR adds infrastructure in SmtEngine and ProofManager for checking and printing proofs. It updates a previous interface that used ProofGenerator in favor of ProofNode. This makes it so that it only remains to make PropEngine to be proof producing.
Diffstat (limited to 'src/smt/smt_engine.h')
-rw-r--r--src/smt/smt_engine.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/smt/smt_engine.h b/src/smt/smt_engine.h
index a55428b55..bce086202 100644
--- a/src/smt/smt_engine.h
+++ b/src/smt/smt_engine.h
@@ -534,7 +534,13 @@ class CVC4_PUBLIC SmtEngine
/** Print all instantiations made by the quantifiers module. */
void printInstantiations(std::ostream& out);
-
+ /**
+ * Print the current proof. This method should be called after an UNSAT
+ * response. It gets the proof of false from the PropEngine and passes
+ * it to the ProofManager, which post-processes the proof and prints it
+ * in the proper format.
+ */
+ void printProof();
/**
* Print solution for synthesis conjectures found by counter-example guided
* instantiation module.
@@ -870,6 +876,9 @@ class CVC4_PUBLIC SmtEngine
/** Set solver instance that owns this SmtEngine. */
void setSolver(api::Solver* solver) { d_solver = solver; }
+ /** Get a pointer to the (new) PfManager owned by this SmtEngine. */
+ smt::PfManager* getPfManager() { return d_pfManager.get(); };
+
/** Get a pointer to the StatisticsRegistry owned by this SmtEngine. */
StatisticsRegistry* getStatisticsRegistry()
{
@@ -885,6 +894,14 @@ class CVC4_PUBLIC SmtEngine
UnsatCore getUnsatCoreInternal();
/**
+ * Check that a generated proof checks. This method is the same as printProof,
+ * but does not print the proof. Like that method, it should be called
+ * after an UNSAT response. It ensures that a well-formed proof of false
+ * can be constructed by the combination of the PropEngine and ProofManager.
+ */
+ void checkProof();
+
+ /**
* Check that an unsatisfiable core is indeed unsatisfiable.
*/
void checkUnsatCore();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback