diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-02-22 01:05:43 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-21 23:05:43 -0800 |
commit | 9b20af281db3e77a25540305dfb73cbe56519f75 (patch) | |
tree | 2122c9f51c7d536621a3e3d32da66216d3cde1e8 /src/theory/strings/base_solver.h | |
parent | a626d85e490256a5d872fec49910cdb43e85c16d (diff) |
Move cardinality inference scheme to base solver in strings (#3792)
Moves handling of cardinality to the base solver, refactors how cardinality is accessed.
No intended behavior change in this commit.
Diffstat (limited to 'src/theory/strings/base_solver.h')
-rw-r--r-- | src/theory/strings/base_solver.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/theory/strings/base_solver.h b/src/theory/strings/base_solver.h index c87a3af9e..3681b49a4 100644 --- a/src/theory/strings/base_solver.h +++ b/src/theory/strings/base_solver.h @@ -70,6 +70,13 @@ class BaseSolver * case, we infer the fact x ++ "c" ++ y = "acb". */ void checkConstantEquivalenceClasses(); + /** check cardinality + * + * This function checks whether a cardinality inference needs to be applied + * to a set of equivalence classes. For details, see Step 5 of the proof + * procedure from Liang et al, CAV 2014. + */ + void checkCardinality(); //-----------------------end inference steps //-----------------------query functions @@ -182,6 +189,8 @@ class BaseSolver std::vector<Node> d_stringsEqc; /** A term index for each function kind */ std::map<Kind, TermIndex> d_termIndex; + /** the cardinality of the alphabet */ + uint32_t d_cardSize; }; /* class BaseSolver */ } // namespace strings |