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

instantiate length axiom for concatenation

This commit is contained in:
Murphy Berzish 2015-09-07 19:40:25 -04:00
parent dc86385e7f
commit 9b04f1570f
3 changed files with 94 additions and 4 deletions

View file

@ -22,6 +22,7 @@ Revision History:
#include"th_rewriter.h"
#include"value_factory.h"
#include"smt_model_generator.h"
#include"arith_decl_plugin.h"
namespace smt {
@ -31,6 +32,8 @@ namespace smt {
class theory_str : public theory {
// TODO
protected:
bool search_started;
protected:
virtual bool internalize_atom(app * atom, bool gate_ctx);
virtual bool internalize_term(app * term);
@ -46,9 +49,19 @@ 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);
theory_str(ast_manager & m);
virtual ~theory_str();
arith_util m_autil;
protected:
void attach_new_th_var(enode * n);
};