3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-02 05:16:08 +00:00

adding dt-solver (#4739)

* adding dt-solver

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* dt

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* move mbp to self-contained module

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* files

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* Create CMakeLists.txt

* dt

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* rename to bool_var2expr to indicate type class

* mbp

* na
This commit is contained in:
Nikolaj Bjorner 2020-10-18 15:28:21 -07:00 committed by GitHub
parent b77c57451f
commit 2f756da294
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
62 changed files with 2309 additions and 1257 deletions

View file

@ -1,54 +0,0 @@
/**
Copyright (c) 2018 Microsoft Corporation
Module Name:
qe_solve.h
Abstract:
Light-weight variable solving plugin model for qe-lite and term_graph.
Author:
Nikolaj Bjorner (nbjorner), Arie Gurfinkel 2018-6-8
Revision History:
--*/
#pragma once
#include "ast/ast.h"
#include "util/plugin_manager.h"
#include "qe/qe_vartest.h"
namespace qe {
class solve_plugin {
protected:
ast_manager& m;
family_id m_id;
is_variable_proc& m_is_var;
virtual expr_ref solve(expr* atom, bool is_pos) = 0;
bool is_variable(expr* e) const { return m_is_var(e); }
public:
solve_plugin(ast_manager& m, family_id fid, is_variable_proc& is_var) : m(m), m_id(fid), m_is_var(is_var) {}
virtual ~solve_plugin() {}
family_id get_family_id() const { return m_id; }
/// Process (and potentially augment) a literal
expr_ref operator() (expr *lit);
};
solve_plugin* mk_basic_solve_plugin(ast_manager& m, is_variable_proc& is_var);
solve_plugin* mk_arith_solve_plugin(ast_manager& m, is_variable_proc& is_var);
solve_plugin* mk_dt_solve_plugin(ast_manager& m, is_variable_proc& is_var);
solve_plugin* mk_bv_solve_plugin(ast_manager& m, is_variable_proc& is_var);
// solve_plugin* mk_array_solve_plugin(ast_manager& m, is_variable_proc& is_var);
}