3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-08 16:25:48 +00:00

other components

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
Leonardo de Moura 2012-10-02 11:48:48 -07:00
parent e9eab22e5c
commit 68269c43a6
250 changed files with 70871 additions and 0 deletions

123
test/bit_blaster.cpp Normal file
View file

@ -0,0 +1,123 @@
/*++
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);
}