3 #include "../utils/Bookkeeping.h"
5 #include <carl-common/util/tuple_util.h>
11 template<
typename... Backends>
14 using B = std::tuple<Backends...>;
16 template<std::size_t N = 0, carl::EnableIfBool<N == std::tuple_size<B>::value> = carl::dummy>
21 template<std::size_t N = 0, carl::EnableIfBool<N < std::tuple_size<B>::value> = carl::dummy>
25 return findAssignment<N+1>(data,
var);
28 template<std::size_t N = 0, carl::EnableIfBool<N == std::tuple_size<B>::value> = carl::dummy>
33 template<std::size_t N = 0, carl::EnableIfBool<N < std::tuple_size<B>::value> = carl::dummy>
34 bool active(
const mcsat::Bookkeeping& data,
const FormulaT& f)
const {
35 auto res = std::get<N>(
mBackends).active(data, f);
36 return res && active<N+1>(data, f);
39 std::optional<AssignmentOrConflict> operator()(
const mcsat::Bookkeeping& data, carl::Variable
var)
const {
40 return findAssignment<0>(data,
var);
43 bool active(
const mcsat::Bookkeeping& data,
const FormulaT& f)
const {
44 return active<0>(data, f);
Represent the trail, i.e.
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
#define SMTRAT_LOG_ERROR(channel, msg)
std::tuple< Backends... > B
std::optional< AssignmentOrConflict > findAssignment(const mcsat::Bookkeeping &, carl::Variable) const