Go to the documentation of this file.
12 #ifndef CPROVER_SOLVERS_SAT_CNF_H
13 #define CPROVER_SOLVERS_SAT_CNF_H
63 for(
const auto &literal : bv)
91 #endif // CPROVER_SOLVERS_SAT_CNF_H
bool process_clause(const bvt &bv, bvt &dest) const
filter 'true' from clause, eliminate duplicates, recognise trivially satisfied clauses
virtual literalt lnand(literalt a, literalt b) override
void gate_xor(literalt a, literalt b, literalt o)
Tseitin encoding of XOR of two literals.
std::vector< literalt > bvt
virtual literalt lnor(literalt a, literalt b) override
cnft(message_handlert &message_handler)
void gate_equal(literalt a, literalt b, literalt o)
Tseitin encoding of equality between two literals.
virtual literalt lxor(const bvt &bv) override
Tseitin encoding of XOR between multiple literals.
void gate_nor(literalt a, literalt b, literalt o)
Tseitin encoding of NOR of two literals.
virtual literalt land(literalt a, literalt b) override
void gate_or(literalt a, literalt b, literalt o)
Tseitin encoding of disjunction of two literals.
static bool is_all(const bvt &bv, literalt l)
virtual literalt lor(literalt a, literalt b) override
virtual void set_no_variables(size_t no)
virtual literalt new_variable() override
Generate a new variable and return it as a literal.
virtual literalt limplies(literalt a, literalt b) override
void gate_implies(literalt a, literalt b, literalt o)
Tseitin encoding of implication between two literals.
static bvt eliminate_duplicates(const bvt &)
eliminate duplicates from given vector of literals
cnf_solvert(message_handlert &message_handler)
virtual literalt lselect(literalt a, literalt b, literalt c) override
void gate_and(literalt a, literalt b, literalt o)
Tseitin encoding of conjunction of two literals.
void gate_nand(literalt a, literalt b, literalt o)
Tseitin encoding of NAND of two literals.
virtual size_t no_variables() const override
bvt new_variables(std::size_t width) override
Generate a vector of new variables.
virtual size_t no_clauses() const override
virtual size_t no_clauses() const =0
virtual literalt lequal(literalt a, literalt b) override