3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

fix unit test build

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2024-07-15 14:23:47 -07:00
parent 428361b22e
commit 04ad63c732
6 changed files with 40 additions and 415 deletions

View file

@ -1,10 +1,32 @@
#include "ast/sls/bv_sls_eval.h"
#include "ast/sls/bv_sls_terms.h"
#include "ast/rewriter/th_rewriter.h"
#include "ast/reg_decl_plugins.h"
#include "ast/ast_pp.h"
namespace bv {
class my_sat_solver_context : public sls::sat_solver_context {
vector<sat::clause_info> m_clauses;
indexed_uint_set s;
public:
my_sat_solver_context() {}
vector<sat::clause_info> const& clauses() const override { return m_clauses; }
sat::clause_info const& get_clause(unsigned idx) const override { return m_clauses[idx]; }
ptr_iterator<unsigned> get_use_list(sat::literal lit) override { return ptr_iterator<unsigned>(nullptr, nullptr); }
void flip(sat::bool_var v) override {}
double reward(sat::bool_var v) override { return 0; }
double get_weigth(unsigned clause_idx) override { return 0; }
bool is_true(sat::literal lit) override { return true; }
unsigned num_vars() const override { return 0; }
indexed_uint_set const& unsat() const override { return s; }
void on_model(model_ref& mdl) override {}
sat::bool_var add_var() override { return sat::null_bool_var;}
void add_clause(unsigned n, sat::literal const* lits) override {}
};
class sls_test {
ast_manager& m;
bv_util bv;
@ -28,9 +50,11 @@ namespace bv {
expr_ref_vector es(m);
bv_util bv(m);
es.push_back(e);
sls_eval ev(m);
ev.init_eval(es, value);
ev.tighten_range(es);
my_sat_solver_context solver;
sls::context ctx(m, solver);
sls_terms terms(ctx);
sls_eval ev(terms, ctx);
th_rewriter rw(m);
expr_ref r(e, m);
rw(r);
@ -142,9 +166,11 @@ namespace bv {
rw(r);
es.push_back(m.is_false(r) ? m.mk_not(e1) : e1);
es.push_back(m.is_false(r) ? m.mk_not(e2) : e2);
sls_eval ev(m);
ev.init_eval(es, value);
ev.tighten_range(es);
my_sat_solver_context solver;
sls::context ctx(m, solver);
sls_terms terms(ctx);
sls_eval ev(terms, ctx);
if (m.is_bool(e1)) {
SASSERT(m.is_true(r) || m.is_false(r));
@ -159,7 +185,7 @@ namespace bv {
auto val3 = ev.bval0(e2);
if (val3 != val) {
verbose_stream() << "Repaired but not corrected " << mk_pp(e2, m) << "\n";
ev.display(std::cout, es);
ev.display(std::cout);
exit(0);
}
//SASSERT(rep1);