mirror of
https://github.com/Z3Prover/z3
synced 2025-09-02 08:10:43 +00:00
wip - add bit-vector validator plugins and logging
This commit is contained in:
parent
464d52babe
commit
cdfab8cb13
8 changed files with 272 additions and 23 deletions
|
@ -35,6 +35,9 @@ namespace bv {
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class solver : public euf::th_euf_solver {
|
||||
typedef rational numeral;
|
||||
typedef euf::theory_var theory_var;
|
||||
|
@ -94,8 +97,19 @@ namespace bv {
|
|||
sat::justification mk_ne2bit_justification(unsigned idx, theory_var v1, theory_var v2, sat::literal c, sat::literal a);
|
||||
sat::ext_constraint_idx mk_bv2int_justification(theory_var v1, theory_var v2, euf::enode* a, euf::enode* b, euf::enode* c);
|
||||
void log_drat(bv_justification const& c);
|
||||
class proof_hint : public euf::th_proof_hint {
|
||||
bv_justification::kind_t m_kind;
|
||||
sat::literal_vector& m_proof_literals;
|
||||
unsigned m_lit_head, m_lit_tail;
|
||||
expr* a1 = nullptr, * a2 = nullptr, * b1 = nullptr, * b2 = nullptr;
|
||||
public:
|
||||
proof_hint(bv_justification::kind_t k, sat::literal_vector& pl, unsigned lh, unsigned lt, expr* a1 = nullptr, expr* a2 = nullptr, expr* b1 = nullptr, expr* b2 = nullptr) :
|
||||
m_kind(k), m_proof_literals(pl), m_lit_head(lh), m_lit_tail(lt), a1(a1), a2(a2), b1(b1), b2(b2) {}
|
||||
expr* get_hint(euf::solver& s) const override;
|
||||
};
|
||||
sat::literal_vector m_proof_literals;
|
||||
unsigned m_lit_head = 0, m_lit_tail = 0;
|
||||
|
||||
|
||||
/**
|
||||
\brief Structure used to store the position of a bitvector variable that
|
||||
contains the true_literal/false_literal.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue