3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-21 02:30:23 +00:00

adding drat

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-02-03 17:56:22 -08:00
parent 0b711c5ef8
commit 61341b8879
7 changed files with 144 additions and 47 deletions

View file

@ -1,5 +1,5 @@
/*++
Copyright (c) 2014 Microsoft Corporation
Copyright (c) 2017 Microsoft Corporation
Module Name:
@ -21,19 +21,33 @@ Notes:
namespace sat {
class drat {
enum status { asserted, learned, deleted };
solver& s;
std::ostream* m_out;
std::ostream* m_out;
ptr_vector<clause> m_proof;
svector<status> m_status;
literal_vector m_units;
vector<watch_list> m_watches;
char_vector m_assignment;
void dump(unsigned n, literal const* lits, status st);
void append(unsigned n, literal const* lits, status st);
friend std::ostream& operator<<(std::ostream & out, status st);
status get_status(bool learned) const;
bool is_cleaned(unsigned n, literal const* lits) const;
public:
drat(solver& s);
~drat();
void add_empty();
void add_literal(literal l);
void add_binary(literal l1, literal l2);
void add_ternary(literal l1, literal l2, literal l3);
void add_clause(clause& c);
void del_literal(literal l);
void del_binary(literal l1, literal l2);
void del_clause(clause& c);
void add();
void add(literal l, bool learned);
void add(literal l1, literal l2, bool learned);
void add(literal l1, literal l2, literal l3, bool learned);
void add(clause& c, bool learned);
void del(literal l);
void del(literal l1, literal l2);
void del(clause& c);
};
};