mirror of
https://github.com/Z3Prover/z3
synced 2026-03-01 11:16:54 +00:00
prepare term-graph for cc
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
14696f03f7
commit
d26609ebdd
6 changed files with 193 additions and 96 deletions
|
|
@ -39,23 +39,22 @@ namespace qe {
|
|||
};
|
||||
|
||||
class term_graph {
|
||||
ast_manager &m;
|
||||
ast_manager & m;
|
||||
ptr_vector<term> m_terms;
|
||||
app_ref_vector m_lits;
|
||||
u_map<term* > m_app2term;
|
||||
|
||||
app_ref_vector m_pinned;
|
||||
u_map<app*> m_term2app;
|
||||
app_ref_vector m_lits;
|
||||
u_map<term* > m_app2term;
|
||||
app_ref_vector m_pinned;
|
||||
u_map<expr*> m_term2app;
|
||||
|
||||
plugin_manager<term_graph_plugin> m_plugins;
|
||||
|
||||
void merge(term &t1, term &t2);
|
||||
|
||||
term *mk_term(app *t);
|
||||
term *get_term(app *t);
|
||||
term *mk_term(expr *t);
|
||||
term *get_term(expr *t);
|
||||
|
||||
term *internalize_term(app *t);
|
||||
void internalize_eq(app *a1, app *a2);
|
||||
term *internalize_term(expr *t);
|
||||
void internalize_eq(expr *a1, expr *a2);
|
||||
void internalize_lit(app *lit);
|
||||
|
||||
bool is_internalized(app *a);
|
||||
|
|
@ -66,27 +65,35 @@ namespace qe {
|
|||
|
||||
void reset_marks();
|
||||
|
||||
app *mk_app_core(app* a);
|
||||
app_ref mk_app(term const &t);
|
||||
app_ref mk_app(app *a);
|
||||
expr* mk_app_core(expr* a);
|
||||
expr_ref mk_app(term const &t);
|
||||
expr_ref mk_app(expr *a);
|
||||
void mk_equalities(term const &t, app_ref_vector &out);
|
||||
void mk_all_equalities(term const &t, app_ref_vector &out);
|
||||
void display(std::ostream &out);
|
||||
void display(std::ostream &out);
|
||||
public:
|
||||
term_graph(ast_manager &man);
|
||||
~term_graph();
|
||||
|
||||
ast_manager &get_ast_manager() const { return m;}
|
||||
ast_manager& get_ast_manager() const { return m;}
|
||||
|
||||
void add_lit(app *lit);
|
||||
void add_lits(expr_ref_vector const &lits) {
|
||||
for (expr* e : lits) add_lit(::to_app(e));
|
||||
}
|
||||
void add_eq(expr* a, expr* b);
|
||||
|
||||
void reset();
|
||||
void to_lits(app_ref_vector &lits, bool all_equalities = false);
|
||||
void to_lits(expr_ref_vector &lits, bool all_equalities = false);
|
||||
app_ref to_app();
|
||||
|
||||
/**
|
||||
* Return literals obtained by projecting added literals
|
||||
* onto the vocabulary of decls (if exclude is false) or outside the
|
||||
* vocabulary of decls (if exclude is true).
|
||||
*/
|
||||
expr_ref_vector project(func_decl_ref_vector const& decls, bool exclude);
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue