3 #include <carl-formula/formula/functions/PNF.h>
7 :
PModule(_formula, _conditionals, _manager) {
15 if ((carl::PROP_CONTAINS_QUANTIFIER_EXISTS <= input.properties()) || (carl::PROP_CONTAINS_QUANTIFIER_FORALL <= input.properties())) {
16 auto [
prefix, matrix] = carl::to_pnf(input);
17 auto contains_forall = std::find_if(
prefix.begin(),
prefix.end(), [](
const auto& e) { return e.first == carl::Quantifier::FORALL; }) !=
prefix.end();
18 if (contains_forall) {
30 if (pnf.type() == carl::FormulaType::FALSE) {
void generateTrivialInfeasibleSubset()
Stores the trivial infeasible subset being the set of received formulas.
std::pair< ModuleInput::iterator, bool > addSubformulaToPassedFormula(const FormulaT &_formula)
Adds the given formula to the passed formula with no origin.
Answer solverState() const
const ModuleInput & rReceivedFormula() const
const ModuleInput & rPassedFormula() const
void getInfeasibleSubsets()
Copies the infeasible subsets of the passed formula.
virtual Answer runBackends()
PNFerModule(const ModuleInput *, Conditionals &, Manager *const =NULL)
Answer checkCore()
Checks the received formula for consistency.
DNF to_formula(const datastructures::PolyPool &pool, carl::Variable main_var, const datastructures::SymbolicInterval &c)
Converts a datastructures::SymbolicInterval to a DNF.
std::vector< T > prefix(const std::vector< T > vars, std::size_t prefixSize)
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
Answer
An enum with the possible answers a Module can give.
std::vector< std::atomic_bool * > Conditionals
A vector of atomic bool pointers.
#define SMTRAT_LOG_TRACE(channel, msg)