3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-04 23:13:57 +00:00

WIP add axioms

This commit is contained in:
Murphy Berzish 2015-09-26 18:51:02 -04:00
parent 992fff8ba8
commit 4d5a0ea53f
4 changed files with 120 additions and 40 deletions

View file

@ -36,6 +36,18 @@ namespace smt {
bool search_started;
arith_util m_autil;
str_util m_strutil;
protected:
void assert_axiom(ast * e);
app * mk_strlen(app * e);
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()); }
void instantiate_concat_axiom(enode * cat);
void instantiate_basic_string_axioms(enode * str);
public:
theory_str(ast_manager & m);
virtual ~theory_str();
protected:
virtual bool internalize_atom(app * atom, bool gate_ctx);
virtual bool internalize_term(app * term);
@ -51,19 +63,6 @@ namespace smt {
virtual void push_scope_eh();
virtual final_check_status final_check_eh();
void assert_axiom(unsigned num_lits, literal * lits);
void assert_axiom(literal l);
app * mk_strlen(app * e);
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()); }
void instantiate_concat_axiom(enode * cat);
public:
theory_str(ast_manager & m);
virtual ~theory_str();
protected:
void attach_new_th_var(enode * n);
};