mirror of
https://github.com/Z3Prover/z3
synced 2025-08-08 04:01:22 +00:00
update mk_project
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
57d3abbf64
commit
89d6f1c191
3 changed files with 4 additions and 43 deletions
|
@ -17,6 +17,7 @@ z3_add_component(polysat
|
||||||
simplify.cpp
|
simplify.cpp
|
||||||
op_constraint.cpp
|
op_constraint.cpp
|
||||||
solver.cpp
|
solver.cpp
|
||||||
|
solve_explain.cpp
|
||||||
ule_constraint.cpp
|
ule_constraint.cpp
|
||||||
viable.cpp
|
viable.cpp
|
||||||
variable_elimination.cpp
|
variable_elimination.cpp
|
||||||
|
|
|
@ -26,6 +26,7 @@ Notes:
|
||||||
#include "math/polysat/log.h"
|
#include "math/polysat/log.h"
|
||||||
#include "math/polysat/log_helper.h"
|
#include "math/polysat/log_helper.h"
|
||||||
#include "math/polysat/explain.h"
|
#include "math/polysat/explain.h"
|
||||||
|
#include "math/polysat/solve_explain.h"
|
||||||
#include "math/polysat/forbidden_intervals.h"
|
#include "math/polysat/forbidden_intervals.h"
|
||||||
#include "math/polysat/saturation.h"
|
#include "math/polysat/saturation.h"
|
||||||
#include "math/polysat/variable_elimination.h"
|
#include "math/polysat/variable_elimination.h"
|
||||||
|
@ -35,6 +36,7 @@ namespace polysat {
|
||||||
|
|
||||||
conflict::conflict(solver& s):s(s) {
|
conflict::conflict(solver& s):s(s) {
|
||||||
ex_engines.push_back(alloc(ex_polynomial_superposition, s));
|
ex_engines.push_back(alloc(ex_polynomial_superposition, s));
|
||||||
|
ex_engines.push_back(alloc(solve_explain, s));
|
||||||
ve_engines.push_back(alloc(ve_reduction));
|
ve_engines.push_back(alloc(ve_reduction));
|
||||||
inf_engines.push_back(alloc(inf_saturate, s));
|
inf_engines.push_back(alloc(inf_saturate, s));
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace polysat {
|
||||||
public:
|
public:
|
||||||
explainer(solver& s) :s(s) {}
|
explainer(solver& s) :s(s) {}
|
||||||
virtual ~explainer() {}
|
virtual ~explainer() {}
|
||||||
virtual bool try_explain(pvar v, /* vector<signed_constraint> const& cjust_v, */ conflict& core) = 0;
|
virtual bool try_explain(pvar v, conflict& core) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ex_polynomial_superposition : public explainer {
|
class ex_polynomial_superposition : public explainer {
|
||||||
|
@ -43,46 +43,4 @@ namespace polysat {
|
||||||
bool try_explain(pvar v, conflict& core) override;
|
bool try_explain(pvar v, conflict& core) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
class conflict_explainer {
|
|
||||||
solver& m_solver;
|
|
||||||
|
|
||||||
// conflict m_conflict;
|
|
||||||
vector<constraint> m_new_assertions; // to be inserted into Gamma (conclusions from saturation)
|
|
||||||
|
|
||||||
scoped_ptr_vector<inference_engine> inference_engines;
|
|
||||||
|
|
||||||
bool push_omega_mul(clause_builder& clause, unsigned level, unsigned p, pdd const& x, pdd const& y);
|
|
||||||
|
|
||||||
// Gamma
|
|
||||||
// search_state& search() { return m_solver.m_search; }
|
|
||||||
// Core
|
|
||||||
// conflict& conflict() { return m_solver.m_conflict; }
|
|
||||||
public:
|
|
||||||
/** Create empty conflict */
|
|
||||||
conflict_explainer(solver& s);
|
|
||||||
|
|
||||||
/** Perform one step of core saturation, if possible.
|
|
||||||
* Core saturation derives new constraints according applicable inference rules.
|
|
||||||
*/
|
|
||||||
bool saturate();
|
|
||||||
|
|
||||||
/** resolve conflict state against assignment to v */
|
|
||||||
void resolve(pvar v, ptr_vector<constraint> const& cjust_v);
|
|
||||||
void resolve(sat::literal lit);
|
|
||||||
|
|
||||||
// TODO: move conflict resolution from solver into this class.
|
|
||||||
// we have a single public method as entry point to conflict resolution.
|
|
||||||
// what do we need to return?
|
|
||||||
|
|
||||||
/** conflict resolution until first (relevant) decision */
|
|
||||||
void resolve();
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue