mirror of
https://github.com/Z3Prover/z3
synced 2025-06-25 15:23:41 +00:00
add temporary variables to m_trail
This commit is contained in:
parent
52f0277c99
commit
953a4c5437
2 changed files with 8 additions and 3 deletions
|
@ -30,6 +30,7 @@ theory_str::theory_str(ast_manager & m):
|
||||||
m_autil(m),
|
m_autil(m),
|
||||||
m_strutil(m),
|
m_strutil(m),
|
||||||
sLevel(0),
|
sLevel(0),
|
||||||
|
m_trail(m),
|
||||||
tmpStringVarCount(0),
|
tmpStringVarCount(0),
|
||||||
tmpXorVarCount(0),
|
tmpXorVarCount(0),
|
||||||
tmpLenTestVarCount(0),
|
tmpLenTestVarCount(0),
|
||||||
|
@ -357,9 +358,8 @@ app * theory_str::mk_internal_xor_var() {
|
||||||
strcpy(new_buffer, name.c_str());
|
strcpy(new_buffer, name.c_str());
|
||||||
symbol sym(new_buffer);
|
symbol sym(new_buffer);
|
||||||
|
|
||||||
app* a = m.mk_const(m.mk_const_decl(sym, int_sort));
|
app * a = m.mk_const(m.mk_const_decl(sym, int_sort));
|
||||||
|
m_trail.push_back(a);
|
||||||
// TODO ctx.save_ast_trail(a)?
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -382,6 +382,7 @@ app * theory_str::mk_str_var(std::string name) {
|
||||||
SASSERT(ctx.e_internalized(a));
|
SASSERT(ctx.e_internalized(a));
|
||||||
m_basicstr_axiom_todo.push_back(ctx.get_enode(a));
|
m_basicstr_axiom_todo.push_back(ctx.get_enode(a));
|
||||||
|
|
||||||
|
m_trail.push_back(a);
|
||||||
variable_set.insert(a);
|
variable_set.insert(a);
|
||||||
internal_variable_set.insert(a);
|
internal_variable_set.insert(a);
|
||||||
track_variable_scope(a);
|
track_variable_scope(a);
|
||||||
|
@ -424,6 +425,7 @@ app * theory_str::mk_nonempty_str_var() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// add 'a' to variable sets, so we can keep track of it
|
// add 'a' to variable sets, so we can keep track of it
|
||||||
|
m_trail.push_back(a);
|
||||||
variable_set.insert(a);
|
variable_set.insert(a);
|
||||||
internal_variable_set.insert(a);
|
internal_variable_set.insert(a);
|
||||||
track_variable_scope(a);
|
track_variable_scope(a);
|
||||||
|
|
|
@ -67,6 +67,9 @@ namespace smt {
|
||||||
str_util m_strutil;
|
str_util m_strutil;
|
||||||
int sLevel;
|
int sLevel;
|
||||||
|
|
||||||
|
// 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;
|
str_value_factory * m_factory;
|
||||||
|
|
||||||
ptr_vector<enode> m_basicstr_axiom_todo;
|
ptr_vector<enode> m_basicstr_axiom_todo;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue