summaryrefslogtreecommitdiff
path: root/src/theory/strings/term_registry.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-09-09 15:11:01 -0500
committerGitHub <noreply@github.com>2020-09-09 15:11:01 -0500
commit9a939deab1a788b29b573ae7fb72a6088a1d7edf (patch)
treed403a57bac514c9e1320cdc171597c977b952ee0 /src/theory/strings/term_registry.cpp
parent060eedcd5fdb0316d323c4528402034629285b97 (diff)
(proof-new) Generalize single step helper in eager proof generator (#5046)
This allows single step proofs to have premises, closed by a SCOPE. This will be useful for array lemmas.
Diffstat (limited to 'src/theory/strings/term_registry.cpp')
-rw-r--r--src/theory/strings/term_registry.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/theory/strings/term_registry.cpp b/src/theory/strings/term_registry.cpp
index 3e6f66b73..080349f73 100644
--- a/src/theory/strings/term_registry.cpp
+++ b/src/theory/strings/term_registry.cpp
@@ -52,7 +52,11 @@ TermRegistry::TermRegistry(SolverState& s,
d_proxyVar(s.getUserContext()),
d_proxyVarToLength(s.getUserContext()),
d_lengthLemmaTermsCache(s.getUserContext()),
- d_epg(nullptr)
+ d_epg(pnm ? new EagerProofGenerator(
+ pnm,
+ s.getUserContext(),
+ "strings::TermRegistry::EagerProofGenerator")
+ : nullptr)
{
NodeManager* nm = NodeManager::currentNM();
d_zero = nm->mkConst(Rational(0));
@@ -282,7 +286,7 @@ void TermRegistry::registerTerm(Node n, int effort)
if (d_epg != nullptr)
{
regTermLem = d_epg->mkTrustNode(
- eagerRedLemma, PfRule::STRING_EAGER_REDUCTION, {n});
+ eagerRedLemma, PfRule::STRING_EAGER_REDUCTION, {}, {n});
}
else
{
@@ -384,7 +388,7 @@ TrustNode TermRegistry::getRegisterTermLemma(Node n)
// it is a simple rewrite to justify this
if (d_epg != nullptr)
{
- return d_epg->mkTrustNode(ret, PfRule::MACRO_SR_PRED_INTRO, {ret});
+ return d_epg->mkTrustNode(ret, PfRule::MACRO_SR_PRED_INTRO, {}, {ret});
}
return TrustNode::mkTrustLemma(ret, nullptr);
}
@@ -508,7 +512,7 @@ TrustNode TermRegistry::getRegisterTermAtomicLemma(
if (d_epg != nullptr)
{
- return d_epg->mkTrustNode(lenLemma, PfRule::STRING_LENGTH_POS, {n});
+ return d_epg->mkTrustNode(lenLemma, PfRule::STRING_LENGTH_POS, {}, {n});
}
return TrustNode::mkTrustLemma(lenLemma, nullptr);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback