16 typedef std::map<carl::Variable, std::pair<TermT, carl::BitVector> >
RewriteRules;
18 template<
typename Polynomial>
21 std::map<carl::Variable, TermT> substitutions;
23 carl::carlVariables
vars;
25 if( Polynomial::has_reasons )
27 resultingReasons = inputPolynomial.getReasons();
28 vars = carl::variables(inputPolynomial);
31 for(
auto rule : rules)
33 substitutions.insert(std::make_pair(rule.first, rule.second.first));
34 if(Polynomial::has_reasons &&
vars.has(rule.first))
36 resultingReasons.calculateUnion(rule.second.second);
40 result.setReasons(resultingReasons);
carl::BitVector BitVector
carl::ContextPolynomial< Rational > Polynomial
static Polynomial rewritePolynomial(const Polynomial &inputPolynomial, const RewriteRules &rules)
std::map< carl::Variable, std::pair< TermT, carl::BitVector > > RewriteRules
bool substitute(const FormulaT &constr, const carl::Variable var, const carl::vs::Term< Poly > &term, FormulaT &result)
std::vector< carl::Variable > vars(const std::pair< QuantifierType, std::vector< carl::Variable >> &p)
Class to create the formulas for axioms.