6using namespace smt_solver;
19 bool asserted =
false;
21 explicit Bool(
const cvc5::Term& t,
Solver& slv)
25 : solver(&t.solver->s)
29 : solver(&t.solver->s)
35 term = solver->mkBoolean(t);
37 Bool(
const cvc5::Term& term, cvc5::Solver* s)
43 Bool& operator=(
const Bool& right) =
default;
44 Bool& operator=(
Bool&& right) =
default;
49 solver->assertFormula(term);
54 Bool operator|(
const Bool& other)
const;
55 void operator|=(
const Bool& other);
56 Bool operator|(
const bool& other)
const;
57 void operator|=(
const bool& other)
const;
59 Bool operator&(
const Bool& other)
const;
60 void operator&=(
const Bool& other);
61 Bool operator&(
const bool& other)
const;
62 void operator&=(
const bool& other);
64 Bool operator==(
const Bool& other)
const;
65 Bool operator!=(
const Bool& other)
const;
67 operator std::string()
const {
return term.toString(); };
68 operator cvc5::Term()
const {
return term; };
70 friend Bool batch_or(
const std::vector<Bool>& children)
72 cvc5::Solver* s = children[0].solver;
73 std::vector<cvc5::Term> terms(children.begin(), children.end());
74 cvc5::Term res = s->mkTerm(cvc5::Kind::OR, terms);
78 friend Bool batch_and(
const std::vector<Bool>& children)
80 cvc5::Solver* s = children[0].solver;
81 std::vector<cvc5::Term> terms(children.begin(), children.end());
82 cvc5::Term res = s->mkTerm(cvc5::Kind::AND, terms);
Class for the solver.
Definition: solver.hpp:28
Bool element class.
Definition: bool.hpp:15
Integer Modulo element class.
Definition: ffiterm.hpp:16
Finite Field element class.
Definition: ffterm.hpp:15