3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 09:35:32 +00:00

adding totalizer

This commit is contained in:
Nikolaj Bjorner 2022-06-29 08:17:39 -07:00
parent fd8ee34564
commit 5afcb489e0
6 changed files with 194 additions and 0 deletions

View file

@ -120,6 +120,7 @@ add_executable(test-z3
theory_pb.cpp
timeout.cpp
total_order.cpp
totalizer.cpp
trigo.cpp
udoc_relation.cpp
uint_set.cpp

View file

@ -263,4 +263,5 @@ int main(int argc, char ** argv) {
TST(solver_pool);
//TST_ARGV(hs);
TST(finder);
TST(totalizer);
}

25
src/test/totalizer.cpp Normal file
View file

@ -0,0 +1,25 @@
#include "opt/totalizer.h"
#include "ast/ast_pp.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_totalizer() {
std::cout << "totalizer\n";
ast_manager m;
reg_decl_plugins(m);
expr_ref_vector lits(m);
for (unsigned i = 0; i < 5; ++i)
lits.push_back(m.mk_fresh_const("a", m.mk_bool_sort()));
opt::totalizer tot(lits);
for (unsigned i = 0; i <= 6; ++i) {
std::cout << "at least " << i << " ";
expr* am = tot.at_least(i);
std::cout << mk_pp(am, m) << "\n";
}
for (auto& clause : tot.clauses()) {
for (auto * l : clause)
std::cout << mk_pp(l, m) << " ";
std::cout << "\n";
}
}