mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
q
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ee909b6374
commit
5df2715064
10 changed files with 458 additions and 15 deletions
56
src/sat/smt/q_mbi.h
Normal file
56
src/sat/smt/q_mbi.h
Normal file
|
@ -0,0 +1,56 @@
|
|||
/*++
|
||||
Copyright (c) 2020 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
q_mbi.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Model-based quantifier instantiation plugin
|
||||
|
||||
Author:
|
||||
|
||||
Nikolaj Bjorner (nbjorner) 2020-09-29
|
||||
|
||||
--*/
|
||||
#pragma once
|
||||
|
||||
#include "sat/smt/sat_th.h"
|
||||
#include "solver/solver.h"
|
||||
|
||||
namespace euf {
|
||||
class solver;
|
||||
}
|
||||
|
||||
namespace q {
|
||||
|
||||
class solver;
|
||||
|
||||
class mbqi {
|
||||
euf::solver& ctx;
|
||||
solver& qs;
|
||||
ast_manager& m;
|
||||
model_ref m_model;
|
||||
ref<::solver> m_solver;
|
||||
obj_map<sort, obj_hashtable<expr>*> m_fresh;
|
||||
scoped_ptr_vector<obj_hashtable<expr>> m_values;
|
||||
|
||||
void restrict_to_universe(expr * sk, ptr_vector<expr> const & universe);
|
||||
void register_value(expr* e);
|
||||
expr_ref replace_model_value(expr* e);
|
||||
lbool check_forall(quantifier* q);
|
||||
expr_ref specialize(quantifier* q, expr_ref_vector& vars);
|
||||
expr_ref project(model& mdl, quantifier* q, expr_ref_vector& vars);
|
||||
expr_ref basic_project(model& mdl, quantifier* q, expr_ref_vector& vars);
|
||||
void init_model();
|
||||
void init_solver();
|
||||
|
||||
public:
|
||||
|
||||
mbqi(euf::solver& ctx, solver& s);
|
||||
|
||||
lbool operator()();
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue