3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

theory_str data structure refactoring

This commit is contained in:
Murphy Berzish 2017-02-15 13:39:55 -05:00
parent f9b3c47bf5
commit d67f732c7c
2 changed files with 6 additions and 7 deletions

View file

@ -6606,7 +6606,7 @@ void theory_str::finite_model_test(expr * testvar, expr * str) {
}
} else {
bool map_effectively_empty = false;
if (fvar_len_count_map.find(v) == fvar_len_count_map.end()) {
if (!fvar_len_count_map.contains(v)) {
map_effectively_empty = true;
}
@ -6701,7 +6701,7 @@ void theory_str::finite_model_test(expr * testvar, expr * str) {
void theory_str::more_len_tests(expr * lenTester, std::string lenTesterValue) {
ast_manager & m = get_manager();
if (lenTester_fvar_map.find(lenTester) != lenTester_fvar_map.end()) {
if (lenTester_fvar_map.contains(lenTester)) {
expr * fVar = lenTester_fvar_map[lenTester];
expr * toAssert = gen_len_val_options_for_free_var(fVar, lenTester, lenTesterValue);
TRACE("t_str_detail", tout << "asserting more length tests for free variable " << mk_ismt2_pp(fVar, m) << std::endl;);
@ -9952,7 +9952,7 @@ expr * theory_str::gen_len_val_options_for_free_var(expr * freeVar, expr * lenTe
return binary_search_length_test(freeVar, lenTesterInCbEq, lenTesterValue);
} else {
bool map_effectively_empty = false;
if (fvar_len_count_map.find(freeVar) == fvar_len_count_map.end()) {
if (!fvar_len_count_map.contains(freeVar)) {
TRACE("t_str_detail", tout << "fvar_len_count_map is empty" << std::endl;);
map_effectively_empty = true;
}

View file

@ -195,7 +195,6 @@ namespace smt {
bool finalCheckProgressIndicator;
// TODO make sure that all generated expressions are saved into the trail
expr_ref_vector m_trail; // trail for generated terms
str_value_factory * m_factory;
@ -236,11 +235,11 @@ namespace smt {
obj_hashtable<expr> internal_valTest_vars;
obj_hashtable<expr> internal_unrollTest_vars;
std::set<expr*> input_var_in_len;
obj_hashtable<expr> input_var_in_len;
std::map<expr*, unsigned int> fvar_len_count_map;
obj_map<expr, unsigned int> fvar_len_count_map;
std::map<expr*, ptr_vector<expr> > fvar_lenTester_map;
std::map<expr*, expr*> lenTester_fvar_map;
obj_map<expr, expr*> lenTester_fvar_map;
std::map<expr*, std::map<int, svector<std::pair<int, expr*> > > > fvar_valueTester_map;
std::map<expr*, expr*> valueTester_fvar_map;