SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
GBPPModule.h
Go to the documentation of this file.
1 /**
2  *
3  * Supports optimization.
4  *
5  * @file GBPPModule.h
6  * @author YOUR NAME <YOUR EMAIL ADDRESS>
7  *
8  * @version 2018-03-09
9  * Created on 2018-03-09.
10  */
11 
12 #pragma once
13 
14 #include <smtrat-solver/PModule.h>
15 #include "GBPPSettings.h"
16 
17 namespace smtrat
18 {
19  template<typename Settings>
20  class GBPPModule : public PModule
21  {
22  private:
24  std::size_t mEqualityComplexity = 0;
26  typename Settings::Groebner mBasis;
27 
28  auto gpoly(const Poly& p) const {
29  return typename Settings::PolynomialWithReasons(p);
30  }
31 
32  public:
34  GBPPModule(const ModuleInput* _formula, Conditionals& _conditionals, Manager* _manager = nullptr);
35 
37 
38  /**
39  * Updates the current assignment into the model.
40  * Note, that this is a unique but possibly symbolic assignment maybe containing newly introduced variables.
41  */
42  void updateModel() const;
43 
44  /**
45  * Checks the received formula for consistency.
46  * @return True, if the received formula is satisfiable;
47  * False, if the received formula is not satisfiable;
48  * Unknown, otherwise.
49  */
51 
52  private:
53  FormulaT simplifyInequality(const FormulaT& formula) const;
55  };
56 }
All preprocessing modules shall derive from this module, that is modules, which simplify their receiv...
GBPPModule(const ModuleInput *_formula, Conditionals &_conditionals, Manager *_manager=nullptr)
FormulaSetT mRest
Definition: GBPPModule.h:25
std::size_t mEqualityComplexity
Definition: GBPPModule.h:24
FormulaSetT mEqualities
Definition: GBPPModule.h:23
void updateModel() const
Updates the current assignment into the model.
Settings::Groebner mBasis
Definition: GBPPModule.h:26
std::function< FormulaT(const FormulaT &)> simplifyInequalityFunction
Definition: GBPPModule.h:54
auto gpoly(const Poly &p) const
Definition: GBPPModule.h:28
Settings SettingsType
Definition: GBPPModule.h:33
Answer checkCore()
Checks the received formula for consistency.
FormulaT simplifyInequality(const FormulaT &formula) const
Base class for solvers.
Definition: Manager.h:34
The input formula a module has to consider for it's satisfiability check.
Definition: ModuleInput.h:131
Class to create the formulas for axioms.
carl::FormulaSet< Poly > FormulaSetT
Definition: types.h:41
carl::Formula< Poly > FormulaT
Definition: types.h:37
const settings::Settings & Settings()
Definition: Settings.h:96
carl::MultivariatePolynomial< Rational > Poly
Definition: types.h:25
Answer
An enum with the possible answers a Module can give.
Definition: types.h:57
std::vector< std::atomic_bool * > Conditionals
A vector of atomic bool pointers.
Definition: types.h:17