mirror of
https://github.com/Z3Prover/z3
synced 2025-08-23 19:47:52 +00:00
model refactor (#4723)
* refactor model fixing Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * missing cond macro Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * file Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * file Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add macros dependency Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * deps and debug Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add dependency to normal forms Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * build issues Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * compile Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix leal regression * complete model fixer Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fold back private functionality to model_finder Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * avoid duplicate fixed callbacks Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
6cc52e04c3
commit
fa58a36b9f
42 changed files with 2060 additions and 1494 deletions
|
@ -30,6 +30,7 @@ namespace q {
|
|||
class solver : public euf::th_euf_solver {
|
||||
|
||||
typedef obj_map<quantifier, sat::literal> skolem_table;
|
||||
typedef obj_map<quantifier, quantifier*> flat_table;
|
||||
friend class mbqi;
|
||||
|
||||
struct stats {
|
||||
|
@ -42,6 +43,7 @@ namespace q {
|
|||
mbqi m_mbqi;
|
||||
|
||||
skolem_table m_skolems;
|
||||
flat_table m_flat;
|
||||
sat::literal_vector m_universal;
|
||||
|
||||
sat::literal skolemize(quantifier* q);
|
||||
|
@ -51,7 +53,6 @@ namespace q {
|
|||
|
||||
solver(euf::solver& ctx);
|
||||
~solver() override {}
|
||||
static char const* name() { return "quant"; }
|
||||
bool is_external(sat::bool_var v) override { return false; }
|
||||
void get_antecedents(sat::literal l, sat::ext_justification_idx idx, sat::literal_vector& r, bool probing) override {}
|
||||
void asserted(sat::literal l) override;
|
||||
|
@ -67,7 +68,10 @@ namespace q {
|
|||
void internalize(expr* e, bool redundant) override { UNREACHABLE(); }
|
||||
euf::theory_var mk_var(euf::enode* n) override;
|
||||
void init_search() override;
|
||||
void finalize_model(model& mdl) override;
|
||||
|
||||
ast_manager& get_manager() { return m; }
|
||||
sat::literal_vector const& universal() const { return m_universal; }
|
||||
quantifier* flatten(quantifier* q);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue