mirror of
https://github.com/Z3Prover/z3
synced 2025-04-11 11:43:36 +00:00
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
/*++
|
|
Copyright (c) 2014 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
xor_solver.h
|
|
|
|
Abstract:
|
|
|
|
XOR solver.
|
|
Interface outline.
|
|
|
|
--*/
|
|
|
|
#pragma once
|
|
|
|
#include "sat/smt/euf_solver.h"
|
|
|
|
namespace xr {
|
|
class solver : public euf::th_solver {
|
|
public:
|
|
solver(euf::solver& ctx);
|
|
|
|
th_solver* clone(euf::solver& ctx) override;
|
|
|
|
sat::literal internalize(expr* e, bool sign, bool root, bool redundant) override { UNREACHABLE(); return sat::null_literal; }
|
|
|
|
void internalize(expr* e, bool redundant) override { UNREACHABLE(); }
|
|
|
|
|
|
void asserted(sat::literal l) override;
|
|
bool unit_propagate() override;
|
|
void get_antecedents(sat::literal l, sat::ext_justification_idx idx, sat::literal_vector & r, bool probing) override;
|
|
|
|
void pre_simplify() override;
|
|
void simplify() override;
|
|
|
|
sat::check_result check() override;
|
|
void push() override;
|
|
void pop(unsigned n) override;
|
|
|
|
std::ostream& display(std::ostream& out) const override;
|
|
std::ostream& display_justification(std::ostream& out, sat::ext_justification_idx idx) const override;
|
|
std::ostream& display_constraint(std::ostream& out, sat::ext_constraint_idx idx) const override;
|
|
|
|
};
|
|
|
|
}
|