3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-11 11:25:36 +00:00

add hook to turn on xor solver

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-10-28 16:33:30 -07:00
parent 0e651eee04
commit e4f57a13ba
5 changed files with 27 additions and 3 deletions

View file

@ -44,6 +44,7 @@ z3_add_component(sat_smt
sat_th.cpp
tseitin_theory_checker.cpp
user_solver.cpp
xor_solver.cpp
COMPONENT_DEPENDENCIES
sat
ast

View file

@ -19,9 +19,16 @@ Abstract:
namespace xr {
solver::solver(euf::solver& ctx):
th_solver(ctx.get_manager(), symbol("xor-solver"), ctx.get_manager().get_family_id("xor-solver"))
{}
solver(ctx.get_manager(), ctx.get_si(), ctx.get_manager().get_family_id("xor")) {
m_ctx = &ctx;
}
solver::solver(ast_manager& m, sat::sat_internalizer& si, euf::theory_id id)
: euf::th_solver(m, symbol("xor"), id),
si(si) {
}
euf::th_solver* solver::clone(euf::solver& ctx) {
// and relevant copy internal state

View file

@ -18,9 +18,11 @@ Abstract:
namespace xr {
class solver : public euf::th_solver {
euf::solver* m_ctx = nullptr;
sat::sat_internalizer& si;
public:
solver(euf::solver& ctx);
solver(ast_manager& m, sat::sat_internalizer& si, euf::theory_id id);
th_solver* clone(euf::solver& ctx) override;
sat::literal internalize(expr* e, bool sign, bool root) override { UNREACHABLE(); return sat::null_literal; }