diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2021-04-09 14:21:11 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-09 19:21:11 +0000 |
commit | 6923f0cb9930332a61e187d3b4d1a7ec7e65b15c (patch) | |
tree | dc6712e1b30352c60c9ca2f091b38136e2e92108 /src/theory/strings/regexp_solver.cpp | |
parent | e5358e498db6d934d0b8704cfd023b0f67b6fbc0 (diff) |
Add identifiers for extended function reductions (#6314)
This adds identifiers for extended function reductions, which are reasons for why an extended term no longer needs to be processed. The motivation is help understand check-model failures.
This PR adds identifiers to the ExtTheory utility. It also cleans up some unused parts of this utility. Some blocks of code changed indentation in this class.
Diffstat (limited to 'src/theory/strings/regexp_solver.cpp')
-rw-r--r-- | src/theory/strings/regexp_solver.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/theory/strings/regexp_solver.cpp b/src/theory/strings/regexp_solver.cpp index 85d66cd54..151761329 100644 --- a/src/theory/strings/regexp_solver.cpp +++ b/src/theory/strings/regexp_solver.cpp @@ -361,14 +361,14 @@ bool RegExpSolver::checkEqcInclusion(std::vector<Node>& mems) { // ~str.in.re(x, R1) includes ~str.in.re(x, R2) ---> // mark ~str.in.re(x, R2) as reduced - d_im.markReduced(m2Lit); + d_im.markReduced(m2Lit, ExtReducedId::STRINGS_REGEXP_INCLUDE_NEG); remove.insert(m2); } else { // str.in.re(x, R1) includes str.in.re(x, R2) ---> // mark str.in.re(x, R1) as reduced - d_im.markReduced(m1Lit); + d_im.markReduced(m1Lit, ExtReducedId::STRINGS_REGEXP_INCLUDE); remove.insert(m1); // We don't need to process m1 anymore @@ -489,12 +489,12 @@ bool RegExpSolver::checkEqcIntersect(const std::vector<Node>& mems) { // if R1 = intersect( R1, R2 ), then x in R1 ^ x in R2 is equivalent // to x in R1, hence x in R2 can be marked redundant. - d_im.markReduced(m); + d_im.markReduced(m, ExtReducedId::STRINGS_REGEXP_INTER_SUBSUME); } else if (mresr == m) { // same as above, opposite direction - d_im.markReduced(mi); + d_im.markReduced(mi, ExtReducedId::STRINGS_REGEXP_INTER_SUBSUME); } else { @@ -510,8 +510,8 @@ bool RegExpSolver::checkEqcIntersect(const std::vector<Node>& mems) d_im.sendInference( vec_nodes, mres, InferenceId::STRINGS_RE_INTER_INFER, false, true); // both are reduced - d_im.markReduced(m); - d_im.markReduced(mi); + d_im.markReduced(m, ExtReducedId::STRINGS_REGEXP_INTER); + d_im.markReduced(mi, ExtReducedId::STRINGS_REGEXP_INTER); // do not send more than one lemma for this class return true; } |