14 #include <eigen3/Eigen/Core>
15 #include <eigen3/Eigen/LU>
22 template<
typename Settings>
26 using MatrixT = Eigen::Matrix<Rational, Eigen::Dynamic, Eigen::Dynamic>;
27 using VectorT = Eigen::Matrix<Rational, Eigen::Dynamic, 1>;
39 return SettingsType::moduleName;
98 v.conservativeResizeLike(VectorT::Zero(newSize));
102 m.conservativeResizeLike(MatrixT::Zero(newRows, newCols));
A base class for all kind of theory solving methods.
std::string moduleName() const
FormulaT reduce(const MatrixT &u, const VectorT &b, const carl::Variables vars)
Answer checkCore()
Checks the received formula for consistency.
static void conservativeResize(MatrixT &m, long newRows, long newCols)
Convenience wrapper for Eigen::conservativeResizeLike with a zero matrix.
static void conservativeResize(VectorT &v, long newSize)
Convenience wrapper for Eigen::conservativeResizeLike with a zero vector.
Eigen::Matrix< Rational, Eigen::Dynamic, Eigen::Dynamic > MatrixT
bool informCore(const FormulaT &_constraint)
Informs the module about the given constraint.
std::vector< ConstraintT > mEquations
FormulaT reconstructEqSystem(const MatrixT &m, const VectorT &b, const carl::Variables &vars, const std::vector< carl::Relation > &rels)
void removeCore(ModuleInput::const_iterator _subformula)
Removes the subformula of the received formula at the given position to the considered ones of this m...
std::vector< ConstraintT > mInequalities
void init()
Informs all backends about the so far encountered constraints, which have not yet been communicated.
PBGaussModule(const ModuleInput *_formula, Conditionals &_conditionals, Manager *_manager=nullptr)
bool addCore(ModuleInput::const_iterator _subformula)
The module has to take the given sub-formula of the received formula into account.
std::vector< Rational > lookForReductionRow(const MatrixT &uMatrix, const VectorT &ineqRow, long column)
Eigen::Matrix< Rational, Eigen::Dynamic, 1 > VectorT
FormulaT gaussAlgorithm()
carl::Variables mVariables
void updateModel() const
Updates the current assignment into the model.
std::vector< carl::Variable > vars(const std::pair< QuantifierType, std::vector< carl::Variable >> &p)
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
const settings::Settings & Settings()
Answer
An enum with the possible answers a Module can give.
std::vector< std::atomic_bool * > Conditionals
A vector of atomic bool pointers.