mirror of
https://github.com/Z3Prover/z3
synced 2025-05-08 16:25:48 +00:00
checkpoint
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
142bf71b35
commit
9359ab7ce5
124 changed files with 2 additions and 0 deletions
|
@ -1,123 +0,0 @@
|
|||
/*++
|
||||
Copyright (c) 2006 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
bit_blaster.cpp
|
||||
|
||||
Abstract:
|
||||
|
||||
<abstract>
|
||||
|
||||
Author:
|
||||
|
||||
Leonardo de Moura (leonardo) 2008-06-05.
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
|
||||
#include"bit_blaster.h"
|
||||
#include"ast_pp.h"
|
||||
#include"ast_ll_pp.h"
|
||||
|
||||
void mk_bits(ast_manager & m, char const * prefix, unsigned sz, expr_ref_vector & r) {
|
||||
sort_ref b(m);
|
||||
b = m.mk_bool_sort();
|
||||
for (unsigned i = 0; i < sz; ++i) {
|
||||
char buffer[128];
|
||||
#ifdef _WINDOWS
|
||||
sprintf_s(buffer, ARRAYSIZE(buffer), "%s%d.smt", prefix, i);
|
||||
#else
|
||||
sprintf(buffer, "%s%d.smt", prefix, i);
|
||||
#endif
|
||||
r.push_back(m.mk_const(symbol(buffer), b));
|
||||
}
|
||||
}
|
||||
|
||||
void display(std::ostream & out, expr_ref_vector & r, bool ll=true) {
|
||||
ast_mark v;
|
||||
for (unsigned i = 0; i < r.size(); i++) {
|
||||
if (ll)
|
||||
ast_ll_pp(out, r.get_manager(), r.get(i), v);
|
||||
else
|
||||
out << mk_pp(r.get(i), r.get_manager());
|
||||
out << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
void tst_adder(ast_manager & m, unsigned sz) {
|
||||
// expr_ref_vector a(m);
|
||||
// expr_ref_vector b(m);
|
||||
// expr_ref_vector c(m);
|
||||
// mk_bits(m, "a", sz, a);
|
||||
// mk_bits(m, "b", sz, b);
|
||||
// bool t = true;
|
||||
// bit_blaster blaster(m, t);
|
||||
// blaster.mk_adder(sz, a.c_ptr(), b.c_ptr(), c);
|
||||
// TRACE("bit_blaster", display(tout, c););
|
||||
}
|
||||
|
||||
void tst_multiplier(ast_manager & m, unsigned sz) {
|
||||
// expr_ref_vector a(m);
|
||||
// expr_ref_vector b(m);
|
||||
// expr_ref_vector c(m);
|
||||
// mk_bits(m, "a", sz, a);
|
||||
// mk_bits(m, "b", sz, b);
|
||||
// bool t = true;
|
||||
// bit_blaster blaster(m, t);
|
||||
// blaster.mk_multiplier(sz, a.c_ptr(), b.c_ptr(), c);
|
||||
// TRACE("bit_blaster", display(tout, c););
|
||||
}
|
||||
|
||||
void tst_le(ast_manager & m, unsigned sz) {
|
||||
// expr_ref_vector a(m);
|
||||
// expr_ref_vector b(m);
|
||||
// expr_ref out(m);
|
||||
// mk_bits(m, "a", sz, a);
|
||||
// mk_bits(m, "b", sz, b);
|
||||
// bool t = true;
|
||||
// bit_blaster blaster(m, t);
|
||||
// blaster.mk_ule(sz, a.c_ptr(), b.c_ptr(), out);
|
||||
// TRACE("bit_blaster", tout << mk_pp(out, m) << "\n";);
|
||||
// blaster.mk_sle(sz, a.c_ptr(), b.c_ptr(), out);
|
||||
// TRACE("bit_blaster", tout << mk_pp(out, m) << "\n";);
|
||||
}
|
||||
|
||||
void tst_eqs(ast_manager & m, unsigned sz) {
|
||||
// expr_ref_vector a(m);
|
||||
// expr_ref_vector b(m);
|
||||
// expr_ref out(m);
|
||||
// mk_bits(m, "a", sz, a);
|
||||
// bool t = true;
|
||||
// bit_blaster blaster(m, t);
|
||||
// blaster.mk_eqs(sz, a.c_ptr(), b);
|
||||
// TRACE("bit_blaster", display(tout, b, false););
|
||||
}
|
||||
|
||||
void tst_sh(ast_manager & m, unsigned sz) {
|
||||
// expr_ref_vector a(m);
|
||||
// expr_ref_vector b(m);
|
||||
// expr_ref_vector c(m);
|
||||
// mk_bits(m, "a", sz, a);
|
||||
// mk_bits(m, "b", sz, b);
|
||||
// bool t = true;
|
||||
// bit_blaster blaster(m, t);
|
||||
// blaster.mk_shl(sz, a.c_ptr(), b.c_ptr(), c);
|
||||
// TRACE("bit_blaster", tout << "shl\n"; display(tout, c););
|
||||
// c.reset();
|
||||
// blaster.mk_lshr(sz, a.c_ptr(), b.c_ptr(), c);
|
||||
// TRACE("bit_blaster", tout << "lshr\n"; display(tout, c););
|
||||
// c.reset();
|
||||
// blaster.mk_ashr(sz, a.c_ptr(), b.c_ptr(), c);
|
||||
// TRACE("bit_blaster", tout << "ashr " << c.size() << "\n"; display(tout, c, false););
|
||||
}
|
||||
|
||||
void tst_bit_blaster() {
|
||||
ast_manager m;
|
||||
tst_adder(m, 4);
|
||||
tst_multiplier(m, 4);
|
||||
tst_le(m, 4);
|
||||
tst_eqs(m, 8);
|
||||
tst_sh(m, 4);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue