11 #include "../LRAModule/LRAModule.h"
12 #include "../SATModule/SATModule.h"
21 template<
typename Settings>
58 typedef std::vector<std::pair<const SeparatorGroup*, const subtropical::Direction>>
Conflict;
71 setStrategy({addBackend<SATModule<SATSettings1>>({addBackend<LRAModule<LRASettings1>>()})});
82 return SettingsType::moduleName;
void setStrategy(const std::initializer_list< BackendLink > &backends)
A base class for all kind of theory solving methods.
ModuleStatistics & mStatistics
void updateModel() const
Updates the current assignment into the model.
bool addCore(ModuleInput::const_iterator _subformula)
The module has to take the given sub-formula of the received formula into account.
void remove_lra_formula(const FormulaT &formula)
Removes the given formula from the LRA solver.
std::vector< std::pair< const SeparatorGroup *, const subtropical::Direction > > Conflict
Stores the sets of separators that were found to be undecidable by the LRA solver.
STropModule(const ModuleInput *_formula, Conditionals &_conditionals, Manager *_manager=nullptr)
size_t mRelationalConflicts
Counts the number of relation pairs that prohibit an application of this method.
std::vector< Conflict > mLinearizationConflicts
SMTRAT_STATISTICS_INIT(STropModuleStatistics, mStatistics, Settings::moduleName)
std::string moduleName() const
std::unordered_set< SeparatorGroup * > mChangedSeparators
Stores the Separators that were updated since the last check call.
std::unordered_map< Poly, SeparatorGroup > mSeparators
Maps a normalized left hand side of a constraint to its separator.
Answer checkCore()
Checks the received formula for consistency.
void add_lra_formula(const FormulaT &formula)
Adds the given formula to the LRA solver.
subtropical::Encoding mEncoding
Holds encoding information.
LAModule mLRAModule
Handle to the linear arithmetic module.
bool mCheckedWithBackends
Stores whether the last consistency check was done by the backends.
std::unordered_map< carl::Variable, FormulaT > mActiveIntegerFormulas
Stores the formulas for integer variables.
void removeCore(ModuleInput::const_iterator _subformula)
Removes the subformula of the received formula at the given position to the considered ones of this m...
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
const settings::Settings & Settings()
carl::MultivariatePolynomial< Rational > Poly
Answer
An enum with the possible answers a Module can give.
std::vector< std::atomic_bool * > Conditionals
A vector of atomic bool pointers.
Linear arithmetic module to call for the linearized formula.
Represents the class of all original constraints with the same left hand side after a normalization.
subtropical::Separator mSeparator
The hyperplane encoding.
bool mEquationInduced
Check if relations induce an equational constraint.
FormulaT mActiveFormula
Active formula.
std::optional< subtropical::Direction > mActiveDirection
Direction currently used for linearization.
SeparatorGroup(const Poly &normalization)
std::set< carl::Relation > mRelations
Relations of constraints with the same left hand side.
Represents the class of all original constraints with the same left hand side after a normalization.