mirror of
https://github.com/Z3Prover/z3
synced 2025-05-11 09:44:43 +00:00
integrate lambda expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
bf4edef761
commit
520ce9a5ee
139 changed files with 2243 additions and 1506 deletions
|
@ -21,12 +21,12 @@ Revision History:
|
|||
#ifndef SMT_MODEL_CHECKER_H_
|
||||
#define SMT_MODEL_CHECKER_H_
|
||||
|
||||
#include "util/obj_hashtable.h"
|
||||
#include "ast/ast.h"
|
||||
#include "ast/array_decl_plugin.h"
|
||||
#include "util/obj_hashtable.h"
|
||||
#include "ast/normal_forms/defined_names.h"
|
||||
#include "smt/params/qi_params.h"
|
||||
#include "smt/params/smt_params.h"
|
||||
#include "util/region.h"
|
||||
|
||||
class proto_model;
|
||||
class model;
|
||||
|
@ -56,7 +56,9 @@ namespace smt {
|
|||
friend class instantiation_set;
|
||||
|
||||
void init_aux_context();
|
||||
void init_value2expr();
|
||||
expr * get_term_from_ctx(expr * val);
|
||||
expr_ref replace_value_from_ctx(expr * e);
|
||||
void restrict_to_universe(expr * sk, obj_hashtable<expr> const & universe);
|
||||
void assert_neg_q_m(quantifier * q, expr_ref_vector & sks);
|
||||
bool add_blocking_clause(model * cex, expr_ref_vector & sks);
|
||||
|
@ -67,15 +69,12 @@ namespace smt {
|
|||
struct instance {
|
||||
quantifier * m_q;
|
||||
unsigned m_generation;
|
||||
expr * m_bindings[0];
|
||||
static unsigned get_obj_size(unsigned num_bindings) { return sizeof(instance) + num_bindings * sizeof(expr*); }
|
||||
instance(quantifier * q, expr * const * bindings, unsigned gen):m_q(q), m_generation(gen) {
|
||||
memcpy(m_bindings, bindings, q->get_num_decls() * sizeof(expr*));
|
||||
}
|
||||
expr * m_def;
|
||||
unsigned m_bindings_offset;
|
||||
instance(quantifier * q, unsigned offset, expr* def, unsigned gen):m_q(q), m_generation(gen), m_def(def), m_bindings_offset(offset) {}
|
||||
};
|
||||
|
||||
region m_new_instances_region;
|
||||
ptr_vector<instance> m_new_instances;
|
||||
svector<instance> m_new_instances;
|
||||
expr_ref_vector m_pinned_exprs;
|
||||
bool add_instance(quantifier * q, model * cex, expr_ref_vector & sks, bool use_inv);
|
||||
void reset_new_instances();
|
||||
|
@ -86,7 +85,7 @@ namespace smt {
|
|||
struct is_model_value {};
|
||||
expr_mark m_visited;
|
||||
bool contains_model_value(expr * e);
|
||||
void add_instance(quantifier * q, expr_ref_vector const & bindings, unsigned max_generation);
|
||||
void add_instance(quantifier * q, expr_ref_vector const & bindings, unsigned max_generation, expr * def);
|
||||
|
||||
public:
|
||||
model_checker(ast_manager & m, qi_params const & p, model_finder & mf);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue