diff options
author | Haniel Barbosa <hanielbbarbosa@gmail.com> | 2021-04-05 15:47:40 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-05 18:47:40 +0000 |
commit | b75f48683c08e66e0d47d29c5262f32f33b36c49 (patch) | |
tree | 0a76b276add9a8d0acd3a52167747e5664f12569 /src/theory/fp | |
parent | ca5fd891038a93bd63b3863faa8c5e39fff88ed0 (diff) |
[proof-new] Registering proof checkers uniformly from the SMT solver (#6275)
Each theory has its own proof checker, responsible for checking the rules pertaining to that theory. The main proof checker uses these specialized checkers. Previously the main proof checker (of the proof node manager used across the SMT solver) was connected to these theory proof checkers during initialization of the theory. This commit adds an interface to the theories for retrieving its proof checker (analogous to how one retrieves the rewriter of a theory) which is used by a new method in the theory engine to register a theory proof checker to a given proof checker according to a theory id.
This is in preparation for the new unsat cores based on proofs.
Diffstat (limited to 'src/theory/fp')
-rw-r--r-- | src/theory/fp/theory_fp.cpp | 9 | ||||
-rw-r--r-- | src/theory/fp/theory_fp.h | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/theory/fp/theory_fp.cpp b/src/theory/fp/theory_fp.cpp index 38444c7af..f647450c0 100644 --- a/src/theory/fp/theory_fp.cpp +++ b/src/theory/fp/theory_fp.cpp @@ -132,6 +132,8 @@ TheoryFp::TheoryFp(context::Context* c, TheoryRewriter* TheoryFp::getTheoryRewriter() { return &d_rewriter; } +ProofRuleChecker* TheoryFp::getProofChecker() { return nullptr; } + bool TheoryFp::needsEqualityEngine(EeSetupInfo& esi) { esi.d_notify = &d_notification; @@ -940,12 +942,11 @@ void TheoryFp::conflictEqConstantMerge(TNode t1, TNode t2) d_im.conflictEqConstantMerge(t1, t2); } - -bool TheoryFp::needsCheckLastEffort() -{ +bool TheoryFp::needsCheckLastEffort() +{ // only need to check if we have added to the abstraction map, otherwise // postCheck below is a no-op. - return !d_abstractionMap.empty(); + return !d_abstractionMap.empty(); } void TheoryFp::postCheck(Effort level) diff --git a/src/theory/fp/theory_fp.h b/src/theory/fp/theory_fp.h index 87c63a231..6ed026567 100644 --- a/src/theory/fp/theory_fp.h +++ b/src/theory/fp/theory_fp.h @@ -51,6 +51,8 @@ class TheoryFp : public Theory //--------------------------------- initialization /** Get the official theory rewriter of this theory. */ TheoryRewriter* getTheoryRewriter() override; + /** get the proof checker of this theory */ + ProofRuleChecker* getProofChecker() override; /** * Returns true if we need an equality engine. If so, we initialize the * information regarding how it should be setup. For details, see the |