3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-07 18:05:21 +00:00

Move tbv to util

This commit is contained in:
Jakob Rath 2022-08-01 11:59:18 +02:00 committed by Nikolaj Bjorner
parent a89be68050
commit 79ee543d25
9 changed files with 39 additions and 40 deletions

View file

@ -25,7 +25,7 @@ Revision History:
#include "muz/base/dl_context.h"
#include "ast/scoped_proof.h"
#include "ast/bv_decl_plugin.h"
#include "muz/rel/tbv.h"
#include "util/tbv.h"
#include <iostream>
namespace datalog {

View file

@ -23,7 +23,6 @@ z3_add_component(rel
doc.cpp
karr_relation.cpp
rel_context.cpp
tbv.cpp
udoc_relation.cpp
COMPONENT_DEPENDENCIES
muz

View file

@ -695,12 +695,36 @@ void doc_manager::check_equiv(ast_manager& m, expr* fml1, expr* fml2) {
SASSERT(res == l_false);
}
expr_ref doc_manager::to_formula(ast_manager & m, tbv const& src) {
expr_ref result(m);
expr_ref_vector conj(m);
for (unsigned i = 0; i < num_tbits(); ++i) {
switch (src[i]) {
case BIT_0:
conj.push_back(m.mk_not(m.mk_const(symbol(i), m.mk_bool_sort())));
break;
case BIT_1:
conj.push_back(m.mk_const(symbol(i), m.mk_bool_sort()));
break;
default:
break;
}
}
result = mk_and(m, conj.size(), conj.data());
return result;
}
expr_ref doc_manager::mk_var(ast_manager & m, unsigned i) {
return expr_ref(m.mk_const(symbol(i), m.mk_bool_sort()), m);
}
expr_ref doc_manager::to_formula(ast_manager& m, doc const& src) {
expr_ref result(m);
expr_ref_vector conj(m);
conj.push_back(tbvm().to_formula(m, src.pos()));
conj.push_back(to_formula(m, src.pos()));
for (unsigned i = 0; i < src.neg().size(); ++i) {
conj.push_back(m.mk_not(tbvm().to_formula(m, src.neg()[i])));
conj.push_back(m.mk_not(to_formula(m, src.neg()[i])));
}
result = mk_and(m, conj.size(), conj.data());
return result;
@ -712,9 +736,9 @@ void doc_manager::project_expand(expr_ref& fml, bit_vector const& to_delete) {
for (unsigned i = 0; i < num_tbits(); ++i) {
if (to_delete.get(i)) {
expr_safe_replace rep1(m), rep2(m);
rep1.insert(tbvm().mk_var(m, i), m.mk_true());
rep1.insert(mk_var(m, i), m.mk_true());
rep1(fml, tmp1);
rep2.insert(tbvm().mk_var(m, i), m.mk_false());
rep2.insert(mk_var(m, i), m.mk_false());
rep2(fml, tmp2);
if (tmp1 == tmp2) {
fml = tmp1;
@ -731,7 +755,7 @@ void doc_manager::project_rename(expr_ref& fml, bit_vector const& to_delete) {
expr_safe_replace rep(m);
for (unsigned i = 0, j = 0; i < num_tbits(); ++i) {
if (!to_delete.get(i)) {
rep.insert(tbvm().mk_var(m, j), tbvm().mk_var(m, i));
rep.insert(mk_var(m, j), mk_var(m, i));
++j;
}
}

View file

@ -22,10 +22,10 @@ Revision History:
#pragma once
#include "muz/rel/tbv.h"
#include "util/tbv.h"
#include "util/union_find.h"
#include "util/buffer.h"
#include "ast/ast.h"
class doc;
template<typename M, typename T> class union_bvec;
@ -101,6 +101,8 @@ private:
void project_rename(expr_ref& fml, bit_vector const& to_delete);
void project_expand(expr_ref& fml, bit_vector const& to_delete);
expr_ref to_formula(ast_manager& m, doc const& src);
expr_ref to_formula(ast_manager& m, tbv const& src);
expr_ref mk_var(ast_manager& m, unsigned i);
void check_equiv(ast_manager& m, expr* fml1, expr* fml2);
};

View file

@ -4,7 +4,7 @@ Copyright (c) 2015 Microsoft Corporation
--*/
#include "muz/ddnf/ddnf.h"
#include "muz/rel/tbv.h"
#include "util/tbv.h"
#include <iostream>
#include <fstream>
#include <list>

View file

@ -4,7 +4,7 @@ Copyright (c) 2015 Microsoft Corporation
--*/
#include "muz/rel/tbv.h"
#include "util/tbv.h"
#include <iostream>
static void tst1(unsigned num_bits) {

View file

@ -54,6 +54,7 @@ z3_add_component(util
state_graph.cpp
statistics.cpp
symbol.cpp
tbv.cpp
timeit.cpp
timeout.cpp
trace.cpp

View file

@ -18,9 +18,8 @@ Revision History:
--*/
#include "muz/rel/tbv.h"
#include "util/tbv.h"
#include "util/hashtable.h"
#include "ast/ast_util.h"
static bool s_debug_alloc = false;
@ -301,26 +300,3 @@ std::ostream& tbv_manager::display(std::ostream& out, tbv const& b) const {
if (num_tbits() == 0) return out << "[]";
return display(out, b, num_tbits()-1, 0);
}
expr_ref tbv_manager::to_formula(ast_manager& m, tbv const& src) {
expr_ref result(m);
expr_ref_vector conj(m);
for (unsigned i = 0; i < num_tbits(); ++i) {
switch (src[i]) {
case BIT_0:
conj.push_back(m.mk_not(m.mk_const(symbol(i), m.mk_bool_sort())));
break;
case BIT_1:
conj.push_back(m.mk_const(symbol(i), m.mk_bool_sort()));
break;
default:
break;
}
}
result = mk_and(m, conj.size(), conj.data());
return result;
}
expr_ref tbv_manager::mk_var(ast_manager& m, unsigned i) {
return expr_ref(m.mk_const(symbol(i), m.mk_bool_sort()), m);
}

View file

@ -21,8 +21,8 @@ Revision History:
#pragma once
#include "util/fixed_bit_vector.h"
#include "util/bit_vector.h"
#include "util/rational.h"
#include "ast/ast.h"
class tbv;
@ -84,10 +84,7 @@ public:
void set(tbv& dst, tbv const& other, unsigned hi, unsigned lo);
void set(tbv& dst, unsigned index, tbit value);
static void debug_alloc();
expr_ref to_formula(ast_manager& m, tbv const& src);
expr_ref mk_var(ast_manager& m, unsigned i);
};
class tbv: private fixed_bit_vector {