diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-12-03 16:14:59 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-03 16:14:59 -0600 |
commit | 01d8991ad7059fff4807c2c597c04959d39ab176 (patch) | |
tree | c18ef1c577c8470927f3beddfb254f0c166edfe0 /src/smt/smt_engine.h | |
parent | 5e79f55ac4a2e21834b094f44a344f333f74e8b0 (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.h | 19 |
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(); |