3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 20:05:51 +00:00

z3str3: add bitvector model construction algorithm

This commit is contained in:
Murphy Berzish 2020-01-16 15:27:32 -05:00 committed by Nikolaj Bjorner
parent ff6b3304f8
commit faf3934749
6 changed files with 1427 additions and 35 deletions

View file

@ -116,6 +116,19 @@ struct theory_str_params {
* before which we begin checking unsatisfiability of a regex term.
*/
unsigned m_RegexAutomata_LengthAttemptThreshold;
/*
* If FixedLengthModels is true, Z3str3 will use a fixed-length equation solver to construct models in final_check.
* If false, Z3str3 will use the legacy length tester and value tester procedure.
*/
bool m_FixedLengthModels;
/*
* If FixedLengthRefinement is true and the fixed-length equation solver is enabled,
* Z3str3 will use abstraction refinement to handle formulas that would result in disjunctions or expensive
* reductions to fixed-length formulas.
*/
bool m_FixedLengthRefinement;
theory_str_params(params_ref const & p = params_ref()):
m_StrongArrangements(true),
@ -134,12 +147,15 @@ struct theory_str_params {
m_RegexAutomata_IntersectionDifficultyThreshold(1000),
m_RegexAutomata_FailedAutomatonThreshold(10),
m_RegexAutomata_FailedIntersectionThreshold(10),
m_RegexAutomata_LengthAttemptThreshold(10)
m_RegexAutomata_LengthAttemptThreshold(10),
m_FixedLengthModels(true),
m_FixedLengthRefinement(false)
{
updt_params(p);
}
void updt_params(params_ref const & p);
void display(std::ostream & out) const;
};
#endif /* THEORY_STR_PARAMS_H */