3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-28 08:58:44 +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

@ -27,7 +27,7 @@ class model_core {
protected:
typedef obj_map<func_decl, expr *> decl2expr;
typedef obj_map<func_decl, func_interp*> decl2finterp;
ast_manager & m_manager;
ast_manager & m;
unsigned m_ref_count;
decl2expr m_interp; //!< interpretation for uninterpreted constants
decl2finterp m_finterp; //!< interpretation for uninterpreted functions
@ -36,11 +36,10 @@ protected:
ptr_vector<func_decl> m_func_decls;
public:
model_core(ast_manager & m):m_manager(m), m_ref_count(0) { }
model_core(ast_manager & m):m(m), m_ref_count(0) { }
virtual ~model_core();
ast_manager & get_manager() const { return m_manager; }
ast_manager& m() const { return m_manager; }
ast_manager & get_manager() const { return m; }
unsigned get_num_decls() const { return m_decls.size(); }
func_decl * get_decl(unsigned i) const { return m_decls[i]; }
@ -65,6 +64,11 @@ public:
virtual expr * get_some_value(sort * s) = 0;
expr * get_some_const_interp(func_decl * d) {
expr * r = get_const_interp(d);
if (r) return r;
return get_some_value(d->get_range());
}
//
// Reference counting
//
@ -78,4 +82,7 @@ public:
};
std::ostream& operator<<(std::ostream& out, model_core const& m);
#endif