3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-05 07:23:58 +00:00

solve_concat_eq_str() case 4 WIP

This commit is contained in:
Murphy Berzish 2015-09-28 17:41:01 -04:00
parent 871b08bd8c
commit f473b92d5c
2 changed files with 177 additions and 2 deletions

View file

@ -57,6 +57,9 @@ namespace smt {
ptr_vector<enode> m_basicstr_axiom_todo;
svector<std::pair<enode*,enode*> > m_str_eq_todo;
int tmpXorVarCount;
std::map<std::pair<expr*, expr*>, std::map<int, expr*> > varForBreakConcat;
protected:
void assert_axiom(expr * e);
void assert_implication(expr * premise, expr * conclusion);
@ -64,6 +67,8 @@ namespace smt {
app * mk_strlen(app * e);
app * mk_concat(app * e1, app * e2);
app * mk_internal_xor_var();
bool is_concat(app const * a) const { return a->is_app_of(get_id(), OP_STRCAT); }
bool is_concat(enode const * n) const { return is_concat(n->get_owner()); }
bool is_string(app const * a) const { return a->is_app_of(get_id(), OP_STR); }