3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00

merge with master branch

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-09-19 09:39:22 -07:00
commit 651587ce01
1602 changed files with 40496 additions and 27837 deletions

View file

@ -2357,6 +2357,7 @@ namespace sat {
// ----------------------------------
// lp based relaxation
#if 0
void ba_solver::lp_add_var(int coeff, lp::var_index v, lhs_t& lhs, rational& rhs) {
if (coeff < 0) {
rhs += rational(coeff);
@ -2464,6 +2465,7 @@ namespace sat {
}
}
}
#endif
// -------------------------------
// set literals equivalent

View file

@ -21,11 +21,11 @@ Revision History:
#ifndef BA_SOLVER_H_
#define BA_SOLVER_H_
#include"sat_extension.h"
#include"sat_solver.h"
#include"sat_lookahead.h"
#include"scoped_ptr_vector.h"
#include"util/lp/lar_solver.h"
#include "sat/sat_extension.h"
#include "sat/sat_solver.h"
#include "sat/sat_lookahead.h"
#include "util/scoped_ptr_vector.h"
#include "util/lp/lar_solver.h"
namespace sat {

View file

@ -16,10 +16,10 @@ Author:
Revision History:
--*/
#include"dimacs.h"
#include "sat/dimacs.h"
#undef max
#undef min
#include"sat_solver.h"
#include "sat/sat_solver.h"
class stream_buffer {
std::istream & m_stream;

View file

@ -19,7 +19,7 @@ Revision History:
#ifndef DIMACS_H_
#define DIMACS_H_
#include"sat_types.h"
#include "sat/sat_types.h"
void parse_dimacs(std::istream & s, sat::solver & solver);

View file

@ -16,11 +16,11 @@ Author:
Revision History:
--*/
#include"sat_asymm_branch.h"
#include"sat_asymm_branch_params.hpp"
#include"sat_solver.h"
#include"stopwatch.h"
#include"trace.h"
#include "sat/sat_asymm_branch.h"
#include "sat/sat_asymm_branch_params.hpp"
#include "sat/sat_solver.h"
#include "util/stopwatch.h"
#include "util/trace.h"
namespace sat {

View file

@ -19,9 +19,9 @@ Revision History:
#ifndef SAT_ASYMM_BRANCH_H_
#define SAT_ASYMM_BRANCH_H_
#include"sat_types.h"
#include"statistics.h"
#include"params.h"
#include "sat/sat_types.h"
#include "util/statistics.h"
#include "util/params.h"
namespace sat {
class solver;

View file

@ -19,7 +19,7 @@ Notes:
#ifndef _SAT_CCC_H_
#define _SAT_CCC_H_
#include "queue.h"
#include "util/queue.h"
namespace sat {

View file

@ -17,9 +17,9 @@ Revision History:
--*/
#include<memory.h>
#include"sat_clause.h"
#include"z3_exception.h"
#include"trace.h"
#include "sat/sat_clause.h"
#include "util/z3_exception.h"
#include "util/trace.h"
namespace sat {

View file

@ -19,10 +19,10 @@ Revision History:
#ifndef SAT_CLAUSE_H_
#define SAT_CLAUSE_H_
#include"sat_types.h"
#include"small_object_allocator.h"
#include"id_gen.h"
#include"map.h"
#include "sat/sat_types.h"
#include "util/small_object_allocator.h"
#include "util/id_gen.h"
#include "util/map.h"
#ifdef _MSC_VER
#pragma warning(disable : 4200)

View file

@ -16,7 +16,7 @@ Author:
Revision History:
--*/
#include"sat_clause_set.h"
#include "sat/sat_clause_set.h"
namespace sat {

View file

@ -19,7 +19,7 @@ Revision History:
#ifndef SAT_CLAUSE_SET_H_
#define SAT_CLAUSE_SET_H_
#include"sat_clause.h"
#include "sat/sat_clause.h"
namespace sat {

View file

@ -16,8 +16,8 @@ Author:
Revision History:
--*/
#include"sat_clause.h"
#include"sat_clause_use_list.h"
#include "sat/sat_clause.h"
#include "sat/sat_clause_use_list.h"
namespace sat {

View file

@ -19,8 +19,8 @@ Revision History:
#ifndef SAT_CLAUSE_USE_LIST_H_
#define SAT_CLAUSE_USE_LIST_H_
#include"sat_types.h"
#include"trace.h"
#include "sat/sat_types.h"
#include "util/trace.h"
namespace sat {

View file

@ -16,10 +16,10 @@ Author:
Revision History:
--*/
#include"sat_cleaner.h"
#include"sat_solver.h"
#include"trace.h"
#include"stopwatch.h"
#include "sat/sat_cleaner.h"
#include "sat/sat_solver.h"
#include "util/trace.h"
#include "util/stopwatch.h"
namespace sat {

View file

@ -19,8 +19,8 @@ Revision History:
#ifndef SAT_CLEANER_H_
#define SAT_CLEANER_H_
#include"sat_types.h"
#include"statistics.h"
#include "sat/sat_types.h"
#include "util/statistics.h"
namespace sat {

View file

@ -16,9 +16,9 @@ Author:
Revision History:
--*/
#include"sat_config.h"
#include"sat_types.h"
#include"sat_params.hpp"
#include "sat/sat_config.h"
#include "sat/sat_types.h"
#include "sat/sat_params.hpp"
namespace sat {

View file

@ -20,7 +20,7 @@ Revision History:
#ifndef SAT_CONFIG_H_
#define SAT_CONFIG_H_
#include"params.h"
#include "util/params.h"
namespace sat {

View file

@ -16,9 +16,9 @@ Author:
Revision History:
--*/
#include"sat_elim_eqs.h"
#include"sat_solver.h"
#include"trace.h"
#include "sat/sat_elim_eqs.h"
#include "sat/sat_solver.h"
#include "util/trace.h"
namespace sat {

View file

@ -19,7 +19,7 @@ Revision History:
#ifndef SAT_ELIM_EQS_H_
#define SAT_ELIM_EQS_H_
#include"sat_types.h"
#include "sat/sat_types.h"
namespace sat {
class solver;

View file

@ -19,9 +19,9 @@ Revision History:
#ifndef SAT_EXTENSION_H_
#define SAT_EXTENSION_H_
#include"sat_types.h"
#include"params.h"
#include"statistics.h"
#include "sat/sat_types.h"
#include "util/params.h"
#include "util/statistics.h"
namespace sat {

View file

@ -29,8 +29,8 @@ Author:
Revision History:
--*/
#include"sat_iff3_finder.h"
#include"sat_solver.h"
#include "sat/sat_iff3_finder.h"
#include "sat/sat_solver.h"
namespace sat {

View file

@ -29,7 +29,7 @@ Revision History:
#ifndef SAT_IFF3_FINDER_H_
#define SAT_IFF3_FINDER_H_
#include"sat_types.h"
#include "sat/sat_types.h"
namespace sat {

View file

@ -17,9 +17,9 @@ Author:
Revision History:
--*/
#include"sat_integrity_checker.h"
#include"sat_solver.h"
#include"trace.h"
#include "sat/sat_integrity_checker.h"
#include "sat/sat_solver.h"
#include "util/trace.h"
namespace sat {

View file

@ -20,7 +20,7 @@ Revision History:
#ifndef SAT_INTEGRITY_CHECKER_H_
#define SAT_INTEGRITY_CHECKER_H_
#include"sat_types.h"
#include "sat/sat_types.h"
namespace sat {
class integrity_checker {

View file

@ -17,11 +17,11 @@ Notes:
--*/
#include "sat_local_search.h"
#include "sat_solver.h"
#include "ba_solver.h"
#include "sat_params.hpp"
#include "timer.h"
#include "sat/sat_local_search.h"
#include "sat/sat_solver.h"
#include "sat/ba_solver.h"
#include "sat/sat_params.hpp"
#include "util/timer.h"
namespace sat {

View file

@ -19,9 +19,9 @@
#ifndef _SAT_LOCAL_SEARCH_H_
#define _SAT_LOCAL_SEARCH_H_
#include "vector.h"
#include "sat_types.h"
#include "rlimit.h"
#include "util/vector.h"
#include "sat/sat_types.h"
#include "util/rlimit.h"
namespace sat {

View file

@ -16,9 +16,9 @@ Author:
Revision History:
--*/
#include"sat_model_converter.h"
#include"sat_clause.h"
#include"trace.h"
#include "sat/sat_model_converter.h"
#include "sat/sat_clause.h"
#include "util/trace.h"
namespace sat {

View file

@ -19,7 +19,7 @@ Revision History:
#ifndef SAT_MODEL_CONVERTER_H_
#define SAT_MODEL_CONVERTER_H_
#include"sat_types.h"
#include "sat/sat_types.h"
namespace sat {
/**

View file

@ -18,8 +18,8 @@ Notes:
--*/
#include "sat_solver.h"
#include "sat_mus.h"
#include "sat/sat_solver.h"
#include "sat/sat_mus.h"
namespace sat {

45
src/sat/sat_par.cpp Normal file
View file

@ -0,0 +1,45 @@
/*++
Copyright (c) 2017 Microsoft Corporation
Module Name:
sat_par.cpp
Abstract:
Utilities for parallel SAT solving.
Author:
Nikolaj Bjorner (nbjorner) 2017-1-29.
Revision History:
--*/
#include "sat/sat_par.h"
namespace sat {
par::par() {}
void par::exchange(literal_vector const& in, unsigned& limit, literal_vector& out) {
#pragma omp critical (par_solver)
{
if (limit < m_units.size()) {
// this might repeat some literals.
out.append(m_units.size() - limit, m_units.c_ptr() + limit);
}
for (unsigned i = 0; i < in.size(); ++i) {
literal lit = in[i];
if (!m_unit_set.contains(lit.index())) {
m_unit_set.insert(lit.index());
m_units.push_back(lit);
}
}
limit = m_units.size();
}
}
};

39
src/sat/sat_par.h Normal file
View file

@ -0,0 +1,39 @@
/*++
Copyright (c) 2017 Microsoft Corporation
Module Name:
sat_par.h
Abstract:
Utilities for parallel SAT solving.
Author:
Nikolaj Bjorner (nbjorner) 2017-1-29.
Revision History:
--*/
#ifndef SAT_PAR_H_
#define SAT_PAR_H_
#include "sat/sat_types.h"
#include "util/hashtable.h"
#include "util/map.h"
namespace sat {
class par {
typedef hashtable<unsigned, u_hash, u_eq> index_set;
literal_vector m_units;
index_set m_unit_set;
public:
par();
void exchange(literal_vector const& in, unsigned& limit, literal_vector& out);
};
};
#endif

View file

@ -19,10 +19,10 @@ Revision History:
#ifndef SAT_PARALLEL_H_
#define SAT_PARALLEL_H_
#include"sat_types.h"
#include"hashtable.h"
#include"map.h"
#include"rlimit.h"
#include "sat/sat_types.h"
#include "util/hashtable.h"
#include "util/map.h"
#include "util/rlimit.h"
namespace sat {

View file

@ -17,8 +17,8 @@ Author:
Revision History:
--*/
#include"sat_probing.h"
#include"sat_solver.h"
#include "sat/sat_probing.h"
#include "sat/sat_solver.h"
namespace sat {
probing::probing(solver & _s, params_ref const & p):

View file

@ -20,9 +20,9 @@ Revision History:
#ifndef SAT_PROBING_H_
#define SAT_PROBING_H_
#include"sat_types.h"
#include"params.h"
#include"statistics.h"
#include "sat/sat_types.h"
#include "util/params.h"
#include "util/statistics.h"
namespace sat {

View file

@ -16,12 +16,12 @@ Author:
Revision History:
--*/
#include"sat_scc.h"
#include"sat_solver.h"
#include"sat_elim_eqs.h"
#include"stopwatch.h"
#include"trace.h"
#include"sat_scc_params.hpp"
#include "sat/sat_scc.h"
#include "sat/sat_solver.h"
#include "sat/sat_elim_eqs.h"
#include "util/stopwatch.h"
#include "util/trace.h"
#include "sat/sat_scc_params.hpp"
namespace sat {

View file

@ -19,9 +19,9 @@ Revision History:
#ifndef SAT_SCC_H_
#define SAT_SCC_H_
#include"sat_types.h"
#include"statistics.h"
#include"params.h"
#include "sat/sat_types.h"
#include "util/statistics.h"
#include "util/params.h"
namespace sat {
class solver;

View file

@ -18,11 +18,11 @@ Author:
Revision History:
--*/
#include"sat_simplifier.h"
#include"sat_simplifier_params.hpp"
#include"sat_solver.h"
#include"stopwatch.h"
#include"trace.h"
#include "sat/sat_simplifier.h"
#include "sat/sat_simplifier_params.hpp"
#include "sat/sat_solver.h"
#include "util/stopwatch.h"
#include "util/trace.h"
namespace sat {

View file

@ -21,16 +21,16 @@ Revision History:
#ifndef SAT_SIMPLIFIER_H_
#define SAT_SIMPLIFIER_H_
#include"sat_types.h"
#include"sat_clause.h"
#include"sat_clause_set.h"
#include"sat_clause_use_list.h"
#include"sat_watched.h"
#include"sat_extension.h"
#include"sat_model_converter.h"
#include"heap.h"
#include"statistics.h"
#include"params.h"
#include "sat/sat_types.h"
#include "sat/sat_clause.h"
#include "sat/sat_clause_set.h"
#include "sat/sat_clause_use_list.h"
#include "sat/sat_extension.h"
#include "sat/sat_watched.h"
#include "sat/sat_model_converter.h"
#include "util/heap.h"
#include "util/statistics.h"
#include "util/params.h"
namespace sat {
class solver;

View file

@ -16,14 +16,14 @@ Author:
Revision History:
--*/
#include"sat_solver.h"
#include"sat_integrity_checker.h"
#include"luby.h"
#include"trace.h"
#include"max_cliques.h"
#include"scoped_ptr_vector.h"
#include"sat_lookahead.h"
#include"sat_ccc.h"
#include "sat/sat_solver.h"
#include "sat/sat_integrity_checker.h"
#include "sat/sat_lookahead.h"
#include "sat/sat_ccc.h"
#include "util/luby.h"
#include "util/trace.h"
#include "util/max_cliques.h"
// define to update glue during propagation
#define UPDATE_GLUE

View file

@ -19,28 +19,31 @@ Revision History:
#ifndef SAT_SOLVER_H_
#define SAT_SOLVER_H_
#include"sat_types.h"
#include"sat_clause.h"
#include"sat_watched.h"
#include"sat_justification.h"
#include"sat_var_queue.h"
#include"sat_extension.h"
#include"sat_config.h"
#include"sat_cleaner.h"
#include"sat_simplifier.h"
#include"sat_scc.h"
#include"sat_asymm_branch.h"
#include"sat_iff3_finder.h"
#include"sat_probing.h"
#include"sat_mus.h"
#include"sat_drat.h"
#include"sat_parallel.h"
#include"sat_local_search.h"
#include"params.h"
#include"statistics.h"
#include"stopwatch.h"
#include"trace.h"
#include"rlimit.h"
#include "sat/sat_types.h"
#include "sat/sat_clause.h"
#include "sat/sat_watched.h"
#include "sat/sat_justification.h"
#include "sat/sat_var_queue.h"
#include "sat/sat_extension.h"
#include "sat/sat_config.h"
#include "sat/sat_cleaner.h"
#include "sat/sat_simplifier.h"
#include "sat/sat_scc.h"
#include "sat/sat_asymm_branch.h"
#include "sat/sat_iff3_finder.h"
#include "sat/sat_probing.h"
#include "sat/sat_mus.h"
#include "sat/sat_drat.h"
#include "sat/sat_parallel.h"
#include "sat/sat_local_search.h"
#include "sat/sat_par.h"
#include "util/params.h"
#include "util/statistics.h"
#include "util/stopwatch.h"
#include "util/trace.h"
#include "util/rlimit.h"
#include "util/scoped_ptr_vector.h"
namespace sat {

View file

@ -17,6 +17,7 @@ Notes:
--*/
/*
#include "solver.h"
#include "tactical.h"
#include "sat_solver.h"
@ -36,8 +37,27 @@ Notes:
#include "ast_translation.h"
#include "ast_util.h"
#include "propagate_values_tactic.h"
#include "sat_params.hpp"
*/
#include "solver/solver.h"
#include "tactic/tactical.h"
#include "sat/sat_solver.h"
#include "solver/tactic2solver.h"
#include "tactic/aig/aig_tactic.h"
#include "tactic/core/propagate_values_tactic.h"
#include "tactic/bv/max_bv_sharing_tactic.h"
#include "tactic/arith/card2bv_tactic.h"
#include "tactic/bv/bit_blaster_tactic.h"
#include "tactic/core/simplify_tactic.h"
#include "sat/tactic/goal2sat.h"
#include "ast/ast_pp.h"
#include "model/model_smt2_pp.h"
#include "tactic/filter_model_converter.h"
#include "tactic/bv/bit_blaster_model_converter.h"
#include "ast/ast_translation.h"
#include "ast/ast_util.h"
#include "tactic/core/propagate_values_tactic.h"
#include "sat/sat_params.hpp"
// incremental SAT solver.
class inc_sat_solver : public solver {
@ -530,6 +550,9 @@ private:
m_subgoals.reset();
init_preprocess();
SASSERT(g->models_enabled());
if (g->proofs_enabled()) {
throw default_exception("generation of proof objects is not supported in this mode");
}
SASSERT(!g->proofs_enabled());
TRACE("sat", g->display(tout););
try {

View file

@ -20,7 +20,7 @@ Notes:
#ifndef HS_INC_SAT_SOLVER_H_
#define HS_INC_SAT_SOLVER_H_
#include "solver.h"
#include "solver/solver.h"
solver* mk_inc_sat_solver(ast_manager& m, params_ref const& p);

View file

@ -19,13 +19,13 @@ Revision History:
#ifndef SAT_TYPES_H_
#define SAT_TYPES_H_
#include"util/debug.h"
#include"util/approx_set.h"
#include"util/lbool.h"
#include"util/z3_exception.h"
#include"util/common_msgs.h"
#include"util/vector.h"
#include"util/uint_set.h"
#include "util/debug.h"
#include "util/approx_set.h"
#include "util/lbool.h"
#include "util/z3_exception.h"
#include "util/common_msgs.h"
#include "util/vector.h"
#include "util/uint_set.h"
#include<iomanip>
namespace sat {

View file

@ -19,8 +19,8 @@ Revision History:
#ifndef SAT_VAR_QUEUE_H_
#define SAT_VAR_QUEUE_H_
#include"heap.h"
#include"sat_types.h"
#include "util/heap.h"
#include "sat/sat_types.h"
namespace sat {

View file

@ -16,8 +16,8 @@ Author:
Revision History:
--*/
#include"sat_watched.h"
#include"sat_clause.h"
#include "sat/sat_watched.h"
#include "sat/sat_clause.h"
namespace sat {

View file

@ -19,8 +19,8 @@ Revision History:
#ifndef SAT_WATCHED_H_
#define SAT_WATCHED_H_
#include"sat_types.h"
#include"vector.h"
#include "sat/sat_types.h"
#include "util/vector.h"
namespace sat {
/**

View file

@ -16,10 +16,10 @@ Author:
Notes:
--*/
#include"atom2bool_var.h"
#include"ast_smt2_pp.h"
#include"ref_util.h"
#include"goal.h"
#include "sat/tactic/atom2bool_var.h"
#include "ast/ast_smt2_pp.h"
#include "util/ref_util.h"
#include "tactic/goal.h"
void atom2bool_var::mk_inv(expr_ref_vector & lit2expr) const {
obj_map<expr, var>::iterator it = m_mapping.begin();

View file

@ -19,8 +19,8 @@ Notes:
#ifndef ATOM2BOOL_VAR_H_
#define ATOM2BOOL_VAR_H_
#include"expr2var.h"
#include"sat_types.h"
#include "ast/expr2var.h"
#include "sat/sat_types.h"
/**
\brief Mapping from atoms into SAT boolean variables.

View file

@ -26,19 +26,19 @@ Author:
Notes:
--*/
#include"goal2sat.h"
#include"ast_smt2_pp.h"
#include"ref_util.h"
#include"cooperate.h"
#include"filter_model_converter.h"
#include"model_evaluator.h"
#include"for_each_expr.h"
#include"model_v2_pp.h"
#include"tactic.h"
#include"ast_pp.h"
#include"ast_util.h"
#include"pb_decl_plugin.h"
#include"ba_solver.h"
#include "sat/tactic/goal2sat.h"
#include "ast/ast_smt2_pp.h"
#include "util/ref_util.h"
#include "util/cooperate.h"
#include "tactic/filter_model_converter.h"
#include "model/model_evaluator.h"
#include "ast/for_each_expr.h"
#include "model/model_v2_pp.h"
#include "tactic/tactic.h"
#include "ast/ast_pp.h"
#include "sat/ba_solver.h"
#include "ast/pb_decl_plugin.h"
#include "ast/ast_util.h"
#include<sstream>
struct goal2sat::imp {
@ -275,6 +275,7 @@ struct goal2sat::imp {
for (unsigned i = 0; i < num; ++i) {
m_result_stack[i].neg();
}
mk_clause(m_result_stack.size(), m_result_stack.c_ptr());
}
else {
for (unsigned i = 0; i < num; ++i) {
@ -305,6 +306,7 @@ struct goal2sat::imp {
if (sign)
l.neg();
m_result_stack.push_back(l);
TRACE("goal2sat", tout << m_result_stack << "\n";);
}
}

View file

@ -29,10 +29,10 @@ Notes:
#ifndef GOAL2SAT_H_
#define GOAL2SAT_H_
#include"goal.h"
#include"sat_solver.h"
#include"model_converter.h"
#include"atom2bool_var.h"
#include "tactic/goal.h"
#include "sat/sat_solver.h"
#include "tactic/model_converter.h"
#include "sat/tactic/atom2bool_var.h"
class goal2sat {
struct imp;

View file

@ -16,12 +16,12 @@ Author:
Notes:
--*/
#include"tactical.h"
#include"goal2sat.h"
#include"sat_solver.h"
#include"filter_model_converter.h"
#include"ast_smt2_pp.h"
#include"model_v2_pp.h"
#include "tactic/tactical.h"
#include "sat/tactic/goal2sat.h"
#include "sat/sat_solver.h"
#include "tactic/filter_model_converter.h"
#include "ast/ast_smt2_pp.h"
#include "model/model_v2_pp.h"
class sat_tactic : public tactic {

View file

@ -19,7 +19,7 @@ Notes:
#ifndef SAT_TACTIC_H_
#define SAT_TACTIC_H_
#include"params.h"
#include "util/params.h"
class ast_manager;
class tactic;