3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-27 10:55:50 +00:00

integrate lambda expressions

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-06-26 07:23:04 -07:00
parent bf4edef761
commit 520ce9a5ee
139 changed files with 2243 additions and 1506 deletions

View file

@ -30,12 +30,28 @@ typedef ref<model> model_ref;
class model : public model_core {
protected:
typedef obj_map<sort, ptr_vector<expr>*> sort2universe;
typedef obj_hashtable<func_decl> func_decl_set;
ptr_vector<sort> m_usorts;
sort2universe m_usort2universe;
model_evaluator m_mev;
bool m_cleaned;
struct value_proc;
struct deps_collector;
struct occs_collector;
struct top_sort;
func_decl_set* collect_deps(top_sort& ts, expr * e);
func_decl_set* collect_deps(top_sort& ts, func_interp* fi);
void collect_deps(top_sort& ts);
void collect_occs(top_sort& ts, func_decl* f);
void collect_occs(top_sort& ts, expr* e);
void cleanup_interp(top_sort& ts, func_decl * f);
expr_ref cleanup_expr(top_sort& ts, expr* e, unsigned current_partition);
void remove_decls(ptr_vector<func_decl> & decls, func_decl_set const & s);
bool can_inline_def(top_sort& ts, func_decl* f);
public:
model(ast_manager & m);
~model() override;
@ -54,6 +70,8 @@ public:
sort * get_uninterpreted_sort(unsigned idx) const override;
bool has_uninterpreted_sort(sort * s) const;
expr_ref get_inlined_const_interp(func_decl* f);
//
// Primitives for building models
//
@ -63,6 +81,8 @@ public:
//
model * translate(ast_translation & translator) const;
void compress();
void set_model_completion(bool f) { m_mev.set_model_completion(f); }
void updt_params(params_ref const & p) { m_mev.updt_params(p); }
@ -94,7 +114,5 @@ public:
};
};
std::ostream& operator<<(std::ostream& out, model_core const& m);
#endif /* MODEL_H_ */