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

Merge branch 'master' into polysat

This commit is contained in:
Jakob Rath 2022-07-01 16:11:17 +02:00
commit e5e79c1d4b
398 changed files with 24548 additions and 4983 deletions

View file

@ -123,6 +123,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

@ -20,6 +20,7 @@ Notes:
#include "math/polynomial/polynomial_var2value.h"
#include "util/mpbq.h"
#include "util/rlimit.h"
#include <iostream>
static void display_anums(std::ostream & out, scoped_anum_vector const & rs) {
out << "numbers in decimal:\n";

View file

@ -10,7 +10,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/rewriter/th_rewriter.h"
#include "model/model.h"
#include "parsers/smt2/smt2parser.h"
#include <iostream>
static expr_ref parse_fml(ast_manager& m, char const* str) {
expr_ref result(m);

View file

@ -6,6 +6,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "smt/arith_eq_solver.h"
#include "smt/params/smt_params.h"
#include <iostream>
typedef rational numeral;
typedef vector<numeral> row;

View file

@ -1,5 +1,6 @@
#include "math/dd/dd_bdd.h"
#include "math/dd/dd_fdd.h"
#include <iostream>
namespace dd {

View file

@ -10,6 +10,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "util/vector.h"
#include "util/mpz.h"
#include "util/bit_util.h"
#include <iostream>
static void tst_shl(unsigned src_sz, unsigned const * src, unsigned k,
unsigned dst_sz, unsigned const * dst, bool trace = true) {

View file

@ -20,6 +20,7 @@ Revision History:
#include "util/hashtable.h"
#include "util/hash.h"
#include "util/util.h"
#include <iostream>
typedef chashtable<int, int_hash, default_eq<int> > int_table;
typedef cmap<int, int, int_hash, default_eq<int> > int_map;

View file

@ -1,7 +1,7 @@
#include "ast/reg_decl_plugins.h"
#include "solver/solver_pool.h"
#include "smt/smt_solver.h"
#include <iostream>
void tst_cube_clause() {
ast_manager m;

View file

@ -11,6 +11,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "muz/fp/dl_register_engine.h"
#include "smt/params/smt_params.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
using namespace datalog;

View file

@ -22,6 +22,7 @@ Revision History:
#include "smt/smt_literal.h"
#include "util/util.h"
#include "util/debug.h"
#include <iostream>
struct diff_logic_ext {
typedef rational numeral;

View file

@ -11,6 +11,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "muz/rel/dl_finite_product_relation.h"
#include "muz/rel/dl_sparse_table.h"
#include "muz/rel/rel_context.h"
#include <iostream>
namespace datalog {

View file

@ -13,6 +13,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "util/stopwatch.h"
#include "ast/reg_decl_plugins.h"
#include "muz/rel/dl_relation_manager.h"
#include <iostream>
using namespace datalog;

View file

@ -14,6 +14,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "muz/rel/dl_bound_relation.h"
#include "muz/rel/dl_product_relation.h"
#include "util/util.h"
#include <iostream>
namespace datalog {

View file

@ -6,6 +6,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "muz/rel/dl_table.h"
#include "muz/fp/dl_register_engine.h"
#include "muz/rel/dl_relation_manager.h"
#include <iostream>
typedef datalog::table_base* (*mk_table_fn)(datalog::relation_manager& m, datalog::table_signature& sig);

View file

@ -17,7 +17,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/ast_util.h"
#include "ast/rewriter/expr_safe_replace.h"
#include "ast/rewriter/th_rewriter.h"
#include <iostream>
static void tst_doc1(unsigned n) {
doc_manager m(n);

View file

@ -9,6 +9,7 @@ Copyright (c) 2020 Microsoft Corporation
#include "ast/reg_decl_plugins.h"
#include "ast/ast_pp.h"
#include "ast/arith_decl_plugin.h"
#include <iostream>
static expr_ref mk_const(ast_manager& m, char const* name, sort* s) {
return expr_ref(m.mk_const(symbol(name), s), m);

View file

@ -17,6 +17,7 @@ Revision History:
--*/
#include "util/util.h"
#include <iostream>
void tst_escaped() {
std::cout << "[" << escaped("\"hello\"\"world\"\n\n") << "]\n";

View file

@ -13,6 +13,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/arith_decl_plugin.h"
#include "ast/reg_decl_plugins.h"
#include "ast/rewriter/th_rewriter.h"
#include <iostream>
expr* mk_bv_xor(bv_util& bv, expr* a, expr* b) {
expr* args[2];

View file

@ -18,6 +18,7 @@ Revision History:
#include "util/f2n.h"
#include "util/hwf.h"
#include "util/mpf.h"
#include <iostream>
static void tst1() {
hwf_manager hm;

View file

@ -8,6 +8,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/bv_decl_plugin.h"
#include "ast/ast_pp.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_factor_rewriter() {
ast_manager m;

View file

@ -12,6 +12,7 @@ Copyright (c) 2016 Microsoft Corporation
#include "tactic/tactic.h"
#include "model/model_smt2_pp.h"
#include "tactic/fd_solver/fd_solver.h"
#include <iostream>
static expr_ref mk_const(ast_manager& m, char const* name, sort* s) {
return expr_ref(m.mk_const(symbol(name), s), m);

View file

@ -5,6 +5,7 @@ Copyright (c) 2015 Microsoft Corporation
--*/
#include "math/hilbert/heap_trie.h"
#include <iostream>
struct unsigned_le {
static bool le(unsigned i, unsigned j) { return i <= j; }

View file

@ -15,6 +15,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "util/rlimit.h"
#include <signal.h>
#include <time.h>
#include <iostream>
#include <sstream>
static bool g_use_ordered_support = false;

View file

@ -9,6 +9,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/arith_decl_plugin.h"
#include "model/model_smt2_pp.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_horn_subsume_model_converter() {
ast_manager m;

View file

@ -19,6 +19,7 @@ Revision History:
#include "util/hwf.h"
#include "util/f2n.h"
#include "util/rational.h"
#include <iostream>
static void bug_set_double() {
hwf_manager m;

View file

@ -23,6 +23,7 @@ Revision History:
#include "ast/ast.h"
#include "util/debug.h"
#include "util/rlimit.h"
#include <iostream>
template class interval_manager<im_default_config>;
typedef im_default_config::interval interval;

View file

@ -5,6 +5,7 @@ Copyright (c) 2015 Microsoft Corporation
--*/
#include "util/rlimit.h"
#include "math/hilbert/hilbert_basis.h"
#include <iostream>
/*
Test generation of linear congruences a la Karr.

View file

@ -268,4 +268,5 @@ int main(int argc, char ** argv) {
TST(fixplex);
TST(mod_interval);
TST(viable);
TST(totalizer);
}

View file

@ -20,7 +20,7 @@ Revision History:
#include "ast/substitution/matcher.h"
#include "ast/ast_pp.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_match(ast_manager & m, app * t, app * i) {
substitution s(m);

View file

@ -9,6 +9,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/arith_decl_plugin.h"
#include "model/model_smt2_pp.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_model2expr() {
ast_manager m;

View file

@ -1,6 +1,7 @@
#include "math/simplex/model_based_opt.h"
#include "util/util.h"
#include "util/uint_set.h"
#include <iostream>
typedef opt::model_based_opt::var var;

View file

@ -4,7 +4,7 @@
#include "ast/arith_decl_plugin.h"
#include "ast/reg_decl_plugins.h"
#include "ast/ast_pp.h"
#include <iostream>
void tst_model_evaluator() {
ast_manager m;

View file

@ -13,6 +13,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/array_decl_plugin.h"
#include "model/model_v2_pp.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_model_retrieval()
{

View file

@ -17,6 +17,7 @@ Revision History:
--*/
#include "util/mpbq.h"
#include <iostream>
static void tst1() {
unsynch_mpz_manager zm;

View file

@ -18,6 +18,7 @@ Revision History:
--*/
#include <sstream>
#include <cstring>
#include <iostream>
#include "util/mpff.h"
#include "util/mpz.h"
#include "util/mpq.h"

View file

@ -17,6 +17,7 @@ Revision History:
--*/
#include "util/mpfx.h"
#include <iostream>
static void tst1() {
mpfx_manager m;

View file

@ -20,6 +20,7 @@ Revision History:
#include "util/mpq.h"
#include "util/rational.h"
#include "util/timeit.h"
#include <iostream>
static void tst0() {
synch_mpq_manager m;

View file

@ -21,6 +21,7 @@ Revision History:
#include "util/rational.h"
#include "util/timeit.h"
#include "util/scoped_numeral.h"
#include <iostream>
static void tst1() {
synch_mpz_manager m;

View file

@ -8,6 +8,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/arith_decl_plugin.h"
#include "ast/ast_pp.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_nlarith_util() {
ast_manager M;

View file

@ -24,6 +24,7 @@ Notes:
#include "nlsat/nlsat_explain.h"
#include "math/polynomial/polynomial_cache.h"
#include "util/rlimit.h"
#include <iostream>
nlsat::interval_set_ref tst_interval(nlsat::interval_set_ref const & s1,
nlsat::interval_set_ref const & s2,

View file

@ -17,6 +17,7 @@ Revision History:
--*/
#include "smt/old_interval.h"
#include <iostream>
static void tst1() {
ext_numeral inf(true);

View file

@ -19,6 +19,7 @@ Revision History:
#include "util/parray.h"
#include "util/small_object_allocator.h"
#include "ast/ast.h"
#include <iostream>
template<bool PRESERVE_ROOTS>
struct int_parray_config {

View file

@ -19,6 +19,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "tactic/fd_solver/fd_solver.h"
#include "solver/solver.h"
#include "ast/arith_decl_plugin.h"
#include <iostream>
static void test1() {
ast_manager m;

View file

@ -1,4 +1,5 @@
#include "math/dd/dd_pdd.h"
#include <iostream>
namespace dd {

View file

@ -9,6 +9,7 @@
#include "tactic/goal.h"
#include "tactic/tactic.h"
#include "tactic/bv/bit_blaster_tactic.h"
#include <iostream>
namespace dd {
void print_eqs(ptr_vector<solver::equation> const& eqs) {

View file

@ -22,6 +22,7 @@ Notes:
#include "math/polynomial/polynomial_cache.h"
#include "math/polynomial/linear_eq_solver.h"
#include "util/rlimit.h"
#include <iostream>
static void tst1() {
std::cout << "\n----- Basic testing -------\n";

View file

@ -10,7 +10,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/reg_decl_plugins.h"
#include "ast/rewriter/arith_rewriter.h"
#include "ast/ast_pp.h"
#include <iostream>
static expr_ref parse_fml(ast_manager& m, char const* str) {
expr_ref result(m);

View file

@ -18,6 +18,7 @@ Notes:
--*/
#include "util/mpz.h"
#include "util/prime_generator.h"
#include <iostream>
void tst_prime_generator() {
unsynch_mpz_manager m;

View file

@ -6,6 +6,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/proofs/proof_checker.h"
#include "ast/ast_ll_pp.h"
#include <iostream>
void tst_checker1() {
ast_manager m(PGM_ENABLED);

View file

@ -15,6 +15,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "smt/smt_context.h"
#include "ast/expr_abstract.h"
#include "ast/rewriter/expr_safe_replace.h"
#include <iostream>
static expr_ref parse_fml(ast_manager& m, char const* str) {
expr_ref result(m);

View file

@ -11,7 +11,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "util/lbool.h"
#include <sstream>
#include "ast/reg_decl_plugins.h"
#include <iostream>
#if 0
static void test_qe(ast_manager& m, lbool expected_outcome, expr* fml, char const* option) {

View file

@ -18,6 +18,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "model/model_smt2_pp.h"
#include "parsers/smt2/smt2parser.h"
#include "ast/rewriter/var_subst.h"
#include <iostream>
static void validate_quant_solution(ast_manager& m, expr* fml, expr* guard, qe::def_vector const& defs) {
// verify:

View file

@ -19,6 +19,7 @@ Notes:
#include "math/realclosure/realclosure.h"
#include "math/realclosure/mpz_matrix.h"
#include "util/rlimit.h"
#include <iostream>
static void tst1() {
unsynch_mpq_manager qm;

View file

@ -3,6 +3,7 @@
#include "util/cancel_eh.h"
#include "util/scoped_ctrl_c.h"
#include "util/scoped_timer.h"
#include <iostream>
static bool build_instance(char const * filename, sat::solver& s, sat::local_search& local_search)
{

View file

@ -3,6 +3,7 @@
#include "util/statistics.h"
#include "sat/sat_lookahead.h"
#include "sat/dimacs.h"
#include <iostream>
static void display_model(sat::model const & m) {
for (unsigned i = 1; i < m.size(); i++) {

View file

@ -6,6 +6,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "sat/sat_solver.h"
#include "util/util.h"
#include <iostream>
typedef sat::literal_vector clause_t;
typedef vector<clause_t> clauses_t;

View file

@ -9,6 +9,7 @@
#include "util/trace.h"
#include <thread>
#include <atomic>
#include <iostream>
class test_scoped_eh : public event_handler {
std::atomic<bool> m_called = false;

View file

@ -11,10 +11,12 @@ Copyright (c) 2015 Microsoft Corporation
#include "util/vector.h"
#include "util/rational.h"
#include "util/rlimit.h"
#include <iostream>
#define R rational
typedef simplex::simplex<simplex::mpz_ext> Simplex;
typedef simplex::sparse_matrix<simplex::mpz_ext> sparse_matrix;
typedef simplex::sparse_matrix<simplex::mpq_ext> qmatrix;
static vector<R> vec(int i, int j) {
vector<R> nv;
@ -24,29 +26,29 @@ static vector<R> vec(int i, int j) {
return nv;
}
// static vector<R> vec(int i, int j, int k) {
// vector<R> nv = vec(i, j);
// nv.push_back(R(k));
// return nv;
// }
static vector<R> vec(int i, int j, int k) {
vector<R> nv = vec(i, j);
nv.push_back(R(k));
return nv;
}
// static vector<R> vec(int i, int j, int k, int l) {
// vector<R> nv = vec(i, j, k);
// nv.push_back(R(l));
// return nv;
// }
static vector<R> vec(int i, int j, int k, int l) {
vector<R> nv = vec(i, j, k);
nv.push_back(R(l));
return nv;
}
/// static vector<R> vec(int i, int j, int k, int l, int x) {
/// vector<R> nv = vec(i, j, k, l);
/// nv.push_back(R(x));
/// return nv;
/// }
static vector<R> vec(int i, int j, int k, int l, int x) {
vector<R> nv = vec(i, j, k, l);
nv.push_back(R(x));
return nv;
}
// static vector<R> vec(int i, int j, int k, int l, int x, int y) {
// vector<R> nv = vec(i, j, k, l, x);
// nv.push_back(R(y));
// return nv;
// }
static vector<R> vec(int i, int j, int k, int l, int x, int y) {
vector<R> nv = vec(i, j, k, l, x);
nv.push_back(R(y));
return nv;
}
// static vector<R> vec(int i, int j, int k, int l, int x, int y, int z) {
// vector<R> nv = vec(i, j, k, l, x, y);
@ -131,6 +133,30 @@ static void test4() {
feas(S);
}
static void add(qmatrix& m, vector<R> const& v) {
m.ensure_var(v.size()-1);
auto r = m.mk_row();
for (unsigned u = 0; u < v.size(); ++u)
m.add_var(r, v[u].to_mpq(), u);
}
static void test5() {
unsynch_mpq_manager m;
qmatrix M(m);
add(M, vec(1, 0, -3, 0, 2, -8));
add(M, vec(0, 1, 5, 0, -1, 4));
add(M, vec(0, 0, 0, 1, 7, -9));
add(M, vec(0, 0, 0, 0, 0, 0));
M.display(std::cout);
vector<vector<rational>> K;
kernel(M, K);
std::cout << "after\n";
for (auto const& v : K)
std::cout << v << "\n";
M.display(std::cout);
}
void tst_simplex() {
reslimit rl; Simplex S(rl);
@ -166,4 +192,5 @@ void tst_simplex() {
test2();
test3();
test4();
test5();
}

View file

@ -1,6 +1,7 @@
#include "ast/reg_decl_plugins.h"
#include "solver/solver_pool.h"
#include "smt/smt_solver.h"
#include <iostream>
void tst_solver_pool() {
ast_manager m;

View file

@ -14,6 +14,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "model/model_smt2_pp.h"
#include "smt/smt_kernel.h"
#include "smt/params/smt_params.h"
#include <iostream>
struct ast_ext {
ast_manager& m;

View file

@ -12,6 +12,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/ast_pp.h"
#include "ast/arith_decl_plugin.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
void tst_substitution()
{

View file

@ -5,6 +5,7 @@ Copyright (c) 2015 Microsoft Corporation
--*/
#include "util/tbv.h"
#include <iostream>
static void tst1(unsigned num_bits) {
tbv_manager m(num_bits);

View file

@ -10,6 +10,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/reg_decl_plugins.h"
#include "smt/smt_context.h"
#include "model/model_v2_pp.h"
#include <iostream>
void tst_theory_dl() {
ast_manager m;

View file

@ -10,6 +10,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "ast/reg_decl_plugins.h"
#include "smt/theory_pb.h"
#include "ast/rewriter/th_rewriter.h"
#include <iostream>
static unsigned populate_literals(unsigned k, smt::literal_vector& lits) {
ENSURE(k < (1u << lits.size()));

View file

@ -19,6 +19,7 @@ Revision History:
#include "util/total_order.h"
#include "util/timeit.h"
#include <iostream>
static void tst1() {
uint_total_order to;

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

@ -0,0 +1,22 @@
#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())
std::cout << clause << "\n";
}

View file

@ -24,6 +24,7 @@ Revision History:
#include "util/debug.h"
#include "test/im_float_config.h"
#include "util/rlimit.h"
#include <iostream>
#define PREC 100000

View file

@ -22,7 +22,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "muz/rel/rel_context.h"
#include "ast/bv_decl_plugin.h"
#include "muz/rel/check_relation.h"
#include <iostream>
class udoc_tester {
typedef datalog::relation_base relation_base;

View file

@ -19,6 +19,7 @@ Revision History:
#include "util/uint_set.h"
#include "util/vector.h"
#include <iostream>
static void tst1(unsigned n) {
uint_set s1;

View file

@ -19,6 +19,7 @@ Notes:
#include "math/polynomial/upolynomial.h"
#include "util/timeit.h"
#include "util/rlimit.h"
#include <iostream>
static void tst1() {
reslimit rl;

View file

@ -4,6 +4,7 @@
#include "ast/datatype_decl_plugin.h"
#include "ast/seq_decl_plugin.h"
#include "ast/array_decl_plugin.h"
#include <iostream>
static void list(unsigned bound, ast_manager& m, sort* s) {
value_generator gen(m);

View file

@ -3,6 +3,7 @@
#include "ast/ast_pp.h"
#include "ast/seq_decl_plugin.h"
#include "ast/array_decl_plugin.h"
#include <iostream>
void tst_value_sweep() {
ast_manager m;

View file

@ -23,6 +23,7 @@ Revision History:
#include "ast/array_decl_plugin.h"
#include "ast/for_each_expr.h"
#include "ast/reg_decl_plugins.h"
#include <iostream>
namespace find_q {
struct proc {

View file

@ -17,6 +17,7 @@ Revision History:
--*/
#include "util/vector.h"
#include <iostream>
static void tst1() {
svector<int> v1;

View file

@ -1,6 +1,7 @@
#include "util/debug.h"
#include "util/trace.h"
#include "util/zstring.h"
#include <iostream>
// Encode and check for roundtrip all printable ASCII characters.
static void tst_ascii_roundtrip() {