SMT-RAT
24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
|
Data Structures | |
class | Condition |
struct | unsignedTripleCmp |
class | State |
class | Substitution |
struct | substitutionPointerEqual |
struct | substitutionPointerHash |
Typedefs | |
typedef std::set< carl::PointerSet< Condition > > | ConditionSetSet |
typedef std::set< ConditionSetSet > | ConditionSetSetSet |
typedef std::list< const Condition * > | ConditionList |
typedef std::vector< ConditionList > | DisjunctionOfConditionConjunctions |
typedef std::pair< size_t, std::pair< size_t, size_t > > | UnsignedTriple |
typedef std::pair< UnsignedTriple, vs::State * > | ValStatePair |
typedef std::map< UnsignedTriple, vs::State *, unsignedTripleCmp > | ValuationMap |
typedef std::vector< smtrat::ConstraintT > | ConstraintVector |
a vector of constraints More... | |
typedef std::vector< ConstraintVector > | DisjunctionOfConstraintConjunctions |
a vector of vectors of constraints More... | |
template<typename T > | |
using | SubstitutionFastPointerMap = std::unordered_map< const smtrat::Poly *, T, substitutionPointerHash, substitutionPointerEqual > |
Functions | |
std::ostream & | operator<< (std::ostream &_out, const Condition &_condition) |
void | simplify (DisjunctionOfConstraintConjunctions &) |
Simplifies a disjunction of conjunctions of constraints by deleting consistent constraint and inconsistent conjunctions of constraints. More... | |
void | simplify (DisjunctionOfConstraintConjunctions &_toSimplify, Variables &_conflictingVars, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
bool | splitProducts (DisjunctionOfConstraintConjunctions &, bool=false) |
Splits all constraints in the given disjunction of conjunctions of constraints having a non-trivial factorization into a set of constraints which compare the factors instead. More... | |
bool | splitProducts (const ConstraintVector &, DisjunctionOfConstraintConjunctions &, bool=false) |
Splits all constraints in the given conjunction of constraints having a non-trivial factorization into a set of constraints which compare the factors instead. More... | |
DisjunctionOfConstraintConjunctions | splitProducts (const smtrat::ConstraintT &, bool=false) |
Splits the given constraint into a set of constraints which compare the factors of the factorization of the constraints considered polynomial. More... | |
void | splitSosDecompositions (DisjunctionOfConstraintConjunctions &_toSimplify) |
DisjunctionOfConstraintConjunctions | getSignCombinations (const smtrat::ConstraintT &) |
For a given constraint f_1*...*f_n ~ 0 this method computes all combinations of constraints f_1 ~_1 0 ... More... | |
void | getOddBitStrings (std::size_t _length, std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > &_strings) |
void | getEvenBitStrings (std::size_t _length, std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > &_strings) |
void | print (DisjunctionOfConstraintConjunctions &_substitutionResults) |
Prints the given disjunction of conjunction of constraints. More... | |
bool | substitute (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper, Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
bool | substituteNormal (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper, Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
bool | substituteNormalSqrtEq (const smtrat::Poly &_radicand, const smtrat::Poly &_q, const smtrat::Poly &_r, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root. More... | |
bool | substituteNormalSqrtNeq (const smtrat::Poly &_radicand, const smtrat::Poly &_q, const smtrat::Poly &_r, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root. More... | |
bool | substituteNormalSqrtLess (const smtrat::Poly &_radicand, const smtrat::Poly &_q, const smtrat::Poly &_r, const smtrat::Poly &_s, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root. More... | |
bool | substituteNormalSqrtLeq (const smtrat::Poly &_radicand, const smtrat::Poly &_q, const smtrat::Poly &_r, const smtrat::Poly &_s, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root. More... | |
bool | substitutePlusEps (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper, Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
bool | substituteEpsGradients (const smtrat::ConstraintT &_cons, const Substitution &_subs, const Relation _relation, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper, Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
void | substituteInf (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result, Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
void | substituteInfLessGreater (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result) |
Applies the given substitution to the given constraint, where the substitution is of the form [x -> +/-infinity] with x as the variable and c and b polynomials in the real theory excluding x. More... | |
void | substituteTrivialCase (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result) |
Deals with the case, that the left hand side of the constraint to substitute is a trivial polynomial in the variable to substitute. More... | |
void | substituteNotTrivialCase (const smtrat::ConstraintT &, const Substitution &, DisjunctionOfConstraintConjunctions &) |
Deals with the case, that the left hand side of the constraint to substitute is not a trivial polynomial in the variable to substitute. More... | |
template<class combineType > | |
bool | combine (const std::vector< std::vector< std::vector< combineType > > > &_toCombine, std::vector< std::vector< combineType > > &_combination) |
Combines vectors. More... | |
void | simplify (DisjunctionOfConstraintConjunctions &, carl::Variables &, const smtrat::EvalDoubleIntervalMap &) |
Simplifies a disjunction of conjunctions of constraints by deleting consistent constraint and inconsistent conjunctions of constraints. More... | |
void | getOddBitStrings (size_t _length, std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > &_strings) |
void | getEvenBitStrings (size_t _length, std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > &_strings) |
bool | substitute (const smtrat::ConstraintT &, const Substitution &, DisjunctionOfConstraintConjunctions &, bool _accordingPaper, carl::Variables &, const smtrat::EvalDoubleIntervalMap &) |
Applies a substitution to a constraint and stores the results in the given vector. More... | |
bool | substituteNormal (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper, carl::Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
Applies a substitution of a variable to a term, which is not minus infinity nor a to an square root expression plus an infinitesimal. More... | |
bool | substitutePlusEps (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result, bool _accordingPaper, carl::Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
Applies the given substitution to the given constraint, where the substitution is of the form [x -> t+epsilon] with x as the variable and c and b polynomials in the real theory excluding x. More... | |
bool | substituteEpsGradients (const smtrat::ConstraintT &_cons, const Substitution &_subs, const carl::Relation _relation, DisjunctionOfConstraintConjunctions &, bool _accordingPaper, carl::Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
Sub-method of substituteEps, where one of the gradients in the point represented by the substitution must be negative if the given relation is less or positive if the given relation is greater. More... | |
void | substituteInf (const smtrat::ConstraintT &_cons, const Substitution &_subs, DisjunctionOfConstraintConjunctions &_result, carl::Variables &_conflictingVariables, const smtrat::EvalDoubleIntervalMap &_solutionSpace) |
Applies the given substitution to the given constraint, where the substitution is of the form [x -> -infinity] with x as the variable and c and b polynomials in the real theory excluding x. More... | |
std::ostream & | operator<< (std::ostream &os, const Substitution &s) |
Prints the given substitution on the given output stream. More... | |
typedef std::list< const Condition* > smtrat::vs::ConditionList |
typedef std::set< carl::PointerSet<Condition> > smtrat::vs::ConditionSetSet |
typedef std::set< ConditionSetSet > smtrat::vs::ConditionSetSetSet |
typedef std::vector<smtrat::ConstraintT> smtrat::vs::ConstraintVector |
a vector of constraints
Definition at line 31 of file Substitute.h.
typedef std::vector< ConditionList > smtrat::vs::DisjunctionOfConditionConjunctions |
typedef std::vector<ConstraintVector> smtrat::vs::DisjunctionOfConstraintConjunctions |
a vector of vectors of constraints
Definition at line 33 of file Substitute.h.
using smtrat::vs::SubstitutionFastPointerMap = typedef std::unordered_map<const smtrat::Poly*, T, substitutionPointerHash, substitutionPointerEqual> |
Definition at line 228 of file Substitution.h.
typedef std::pair<size_t, std::pair<size_t, size_t> > smtrat::vs::UnsignedTriple |
typedef std::pair<UnsignedTriple, vs::State*> smtrat::vs::ValStatePair |
typedef std::map<UnsignedTriple, vs::State*, unsignedTripleCmp> smtrat::vs::ValuationMap |
bool smtrat::vs::combine | ( | const std::vector< std::vector< std::vector< combineType > > > & | _toCombine, |
std::vector< std::vector< combineType > > & | _combination | ||
) |
Combines vectors.
_toCombine | The vectors to combine. |
_combination | The resulting combination. |
Definition at line 44 of file Substitute.h.
void smtrat::vs::getEvenBitStrings | ( | size_t | _length, |
std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > & | _strings | ||
) |
_length | The maximal length of the bit strings with even parity to compute. |
_strings | All bit strings of length less or equal the given length with even parity. |
void smtrat::vs::getEvenBitStrings | ( | std::size_t | _length, |
std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > & | _strings | ||
) |
Definition at line 512 of file Substitute.cpp.
void smtrat::vs::getOddBitStrings | ( | size_t | _length, |
std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > & | _strings | ||
) |
_length | The maximal length of the bit strings with odd parity to compute. |
_strings | All bit strings of length less or equal the given length with odd parity. |
void smtrat::vs::getOddBitStrings | ( | std::size_t | _length, |
std::vector< std::bitset< MAX_PRODUCT_SPLIT_NUMBER > > & | _strings | ||
) |
Definition at line 494 of file Substitute.cpp.
DisjunctionOfConstraintConjunctions smtrat::vs::getSignCombinations | ( | const smtrat::ConstraintT & | ) |
For a given constraint f_1*...*f_n ~ 0 this method computes all combinations of constraints f_1 ~_1 0 ...
f_n ~_n 0 such that
f_1 ~_1 0 and ... and f_n ~_n 0 iff f_1*...*f_n ~ 0
holds.
_constraint | A pointer to the constraint to split this way. |
Definition at line 397 of file Substitute.cpp.
std::ostream& smtrat::vs::operator<< | ( | std::ostream & | _out, |
const Condition & | _condition | ||
) |
Definition at line 246 of file Condition.cpp.
std::ostream & smtrat::vs::operator<< | ( | std::ostream & | os, |
const Substitution & | s | ||
) |
Prints the given substitution on the given output stream.
_out | The output stream, on which to write. |
_substitution | The substitution to print. |
Definition at line 164 of file Substitution.cpp.
void smtrat::vs::print | ( | DisjunctionOfConstraintConjunctions & | _substitutionResults | ) |
Prints the given disjunction of conjunction of constraints.
_substitutionResults | The disjunction of conjunction of constraints to print. |
Definition at line 530 of file Substitute.cpp.
void smtrat::vs::simplify | ( | DisjunctionOfConstraintConjunctions & | ) |
Simplifies a disjunction of conjunctions of constraints by deleting consistent constraint and inconsistent conjunctions of constraints.
If a conjunction of only consistent constraints exists, the simplified disjunction contains one empty conjunction.
_toSimplify | The disjunction of conjunctions to simplify. |
Definition at line 25 of file Substitute.cpp.
void smtrat::vs::simplify | ( | DisjunctionOfConstraintConjunctions & | , |
carl::Variables & | , | ||
const smtrat::EvalDoubleIntervalMap & | |||
) |
Simplifies a disjunction of conjunctions of constraints by deleting consistent constraint and inconsistent conjunctions of constraints.
If a conjunction of only consistent constraints exists, the simplified disjunction contains one empty conjunction.
_toSimplify | The disjunction of conjunctions to simplify. |
_conflictingVars | |
_solutionSpace |
void smtrat::vs::simplify | ( | DisjunctionOfConstraintConjunctions & | _toSimplify, |
Variables & | _conflictingVars, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Definition at line 59 of file Substitute.cpp.
bool smtrat::vs::splitProducts | ( | const ConstraintVector & | , |
DisjunctionOfConstraintConjunctions & | , | ||
bool | = false |
||
) |
Splits all constraints in the given conjunction of constraints having a non-trivial factorization into a set of constraints which compare the factors instead.
_toSimplify | The conjunction of the constraints to split. |
_result | The result, being a disjunction of conjunctions of constraints. |
_onlyNeq | A flag indicating that only constraints with the relation symbol != are split. |
Definition at line 135 of file Substitute.cpp.
DisjunctionOfConstraintConjunctions smtrat::vs::splitProducts | ( | const smtrat::ConstraintT & | , |
bool | = false |
||
) |
Splits the given constraint into a set of constraints which compare the factors of the factorization of the constraints considered polynomial.
_constraint | A pointer to the constraint to split. |
_onlyNeq | A flag indicating that only constraints with the relation symbol != are split. |
Definition at line 204 of file Substitute.cpp.
bool smtrat::vs::splitProducts | ( | DisjunctionOfConstraintConjunctions & | , |
bool | = false |
||
) |
Splits all constraints in the given disjunction of conjunctions of constraints having a non-trivial factorization into a set of constraints which compare the factors instead.
_toSimplify | The disjunction of conjunctions of the constraints to split. |
_onlyNeq | A flag indicating that only constraints with the relation symbol != are split. |
Definition at line 114 of file Substitute.cpp.
void smtrat::vs::splitSosDecompositions | ( | DisjunctionOfConstraintConjunctions & | _toSimplify | ) |
bool smtrat::vs::substitute | ( | const smtrat::ConstraintT & | , |
const Substitution & | , | ||
DisjunctionOfConstraintConjunctions & | , | ||
bool | _accordingPaper, | ||
carl::Variables & | , | ||
const smtrat::EvalDoubleIntervalMap & | |||
) |
Applies a substitution to a constraint and stores the results in the given vector.
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_result | The vector, in which to store the results of this substitution. |
bool smtrat::vs::substitute | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper, | ||
Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Definition at line 553 of file Substitute.cpp.
bool smtrat::vs::substituteEpsGradients | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
const carl::Relation | _relation, | ||
DisjunctionOfConstraintConjunctions & | , | ||
bool | _accordingPaper, | ||
carl::Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Sub-method of substituteEps, where one of the gradients in the point represented by the substitution must be negative if the given relation is less or positive if the given relation is greater.
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_relation | The relation symbol, deciding whether the substitution result must be negative or positive. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_accordingPaper | A flag that indicates whether to apply the virtual substitution rules according to the paper "Quantifier elimination for real algebra - the quadratic case and beyond." by Volker Weispfenning (true) or in an adapted way which omits a higher degree in the result by splitting the result in more cases (false). |
_conflictingVariables | If a conflict with the given solution space occurs, the variables being part of this conflict are stored in this container. |
_solutionSpace | The solution space in form of double intervals of the variables occurring in the given constraint. |
bool smtrat::vs::substituteEpsGradients | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
const Relation | _relation, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper, | ||
Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Definition at line 991 of file Substitute.cpp.
void smtrat::vs::substituteInf | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
carl::Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Applies the given substitution to the given constraint, where the substitution is of the form [x -> -infinity] with x as the variable and c and b polynomials in the real theory excluding x.
The constraint is of the form "f(x) \rho 0" with \rho element of {=,!=,<,>,<=,>=} and k as the maximum degree of x in f.
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_conflictingVariables | If a conflict with the given solution space occurs, the variables being part of this conflict are stored in this container. |
_solutionSpace | The solution space in form of double intervals of the variables occurring in the given constraint. |
void smtrat::vs::substituteInf | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Definition at line 1041 of file Substitute.cpp.
void smtrat::vs::substituteInfLessGreater | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result | ||
) |
Applies the given substitution to the given constraint, where the substitution is of the form [x -> +/-infinity] with x as the variable and c and b polynomials in the real theory excluding x.
The constraint is of the form "a*x^2+bx+c \rho 0", where \rho is less or greater.
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
Definition at line 1066 of file Substitute.cpp.
bool smtrat::vs::substituteNormal | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper, | ||
carl::Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Applies a substitution of a variable to a term, which is not minus infinity nor a to an square root expression plus an infinitesimal.
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_accordingPaper | A flag that indicates whether to apply the virtual substitution rules according to the paper "Quantifier elimination for real algebra - the quadratic case and beyond." by Volker Weispfenning (true) or in an adapted way which omits a higher degree in the result by splitting the result in more cases (false). |
_conflictingVariables | If a conflict with the given solution space occurs, the variables being part of this conflict are stored in this container. |
_solutionSpace | The solution space in form of double intervals of the variables occurring in the given constraint. |
bool smtrat::vs::substituteNormal | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper, | ||
Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Definition at line 608 of file Substitute.cpp.
bool smtrat::vs::substituteNormalSqrtEq | ( | const smtrat::Poly & | _radicand, |
const smtrat::Poly & | _q, | ||
const smtrat::Poly & | _r, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper | ||
) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root.
The relation symbol of the constraint to substitute is "=".
(_q+_r*sqrt(_radicand))
The term then looks like: ---------------— _s
_radicand | The radicand of the square root. |
_q | The summand not containing the square root. |
_r | The coefficient of the radicand. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_accordingPaper | A flag that indicates whether to apply the virtual substitution rules according to the paper "Quantifier elimination for real algebra - the quadratic case and beyond." by Volker Weispfenning (true) or in an adapted way which omits a higher degree in the result by splitting the result in more cases (false). |
Definition at line 731 of file Substitute.cpp.
bool smtrat::vs::substituteNormalSqrtLeq | ( | const smtrat::Poly & | _radicand, |
const smtrat::Poly & | _q, | ||
const smtrat::Poly & | _r, | ||
const smtrat::Poly & | _s, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper | ||
) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root.
The relation symbol of the constraint to substitute is less or equal.
(_q+_r*sqrt(_radicand))
The term then looks like: -------------------— _s
_radicand | The radicand of the square root. |
_q | The summand not containing the square root. |
_r | The coefficient of the radicand. |
_s | The denominator of the expression containing the square root. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_accordingPaper | A flag that indicates whether to apply the virtual substitution rules according to the paper "Quantifier elimination for real algebra - the quadratic case and beyond." by Volker Weispfenning (true) or in an adapted way which omits a higher degree in the result by splitting the result in more cases (false). |
Definition at line 869 of file Substitute.cpp.
bool smtrat::vs::substituteNormalSqrtLess | ( | const smtrat::Poly & | _radicand, |
const smtrat::Poly & | _q, | ||
const smtrat::Poly & | _r, | ||
const smtrat::Poly & | _s, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper | ||
) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root.
The relation symbol of the constraint to substitute is less.
(_q+_r*sqrt(_radicand))
The term then looks like: -------------------— _s
_radicand | The radicand of the square root. |
_q | The summand not containing the square root. |
_r | The coefficient of the radicand. |
_s | The denominator of the expression containing the square root. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_accordingPaper | A flag that indicates whether to apply the virtual substitution rules according to the paper "Quantifier elimination for real algebra - the quadratic case and beyond." by Volker Weispfenning (true) or in an adapted way which omits a higher degree in the result by splitting the result in more cases (false). |
Definition at line 806 of file Substitute.cpp.
bool smtrat::vs::substituteNormalSqrtNeq | ( | const smtrat::Poly & | _radicand, |
const smtrat::Poly & | _q, | ||
const smtrat::Poly & | _r, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper | ||
) |
Sub-method of substituteNormalSqrt, where applying the substitution led to a term containing a square root.
The relation symbol of the constraint to substitute is "!=".
(_q+_r*sqrt(_radicand))
The term then looks like: --------------------— _s
_radicand | The radicand of the square root. |
_q | The summand not containing the square root. |
_r | The coefficient of the radicand. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_accordingPaper | A flag that indicates whether to apply the virtual substitution rules according to the paper "Quantifier elimination for real algebra - the quadratic case and beyond." by Volker Weispfenning (true) or in an adapted way which omits a higher degree in the result by splitting the result in more cases (false). |
Definition at line 772 of file Substitute.cpp.
void smtrat::vs::substituteNotTrivialCase | ( | const smtrat::ConstraintT & | , |
const Substitution & | , | ||
DisjunctionOfConstraintConjunctions & | |||
) |
Deals with the case, that the left hand side of the constraint to substitute is not a trivial polynomial in the variable to substitute.
The constraints left hand side then should looks like: ax^2+bx+c
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
Definition at line 1121 of file Substitute.cpp.
bool smtrat::vs::substitutePlusEps | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper, | ||
carl::Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Applies the given substitution to the given constraint, where the substitution is of the form [x -> t+epsilon] with x as the variable and c and b polynomials in the real theory excluding x.
The constraint is of the form "f(x) \rho 0" with \rho element of {=,!=,<,>,<=,>=} and k as the maximum degree of x in f.
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
_accordingPaper | A flag that indicates whether to apply the virtual substitution rules according to the paper "Quantifier elimination for real algebra - the quadratic case and beyond." by Volker Weispfenning (true) or in an adapted way which omits a higher degree in the result by splitting the result in more cases (false). |
_conflictingVariables | If a conflict with the given solution space occurs, the variables being part of this conflict are stored in this container. |
_solutionSpace | The solution space in form of double intervals of the variables occurring in the given constraint. |
bool smtrat::vs::substitutePlusEps | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result, | ||
bool | _accordingPaper, | ||
Variables & | _conflictingVariables, | ||
const smtrat::EvalDoubleIntervalMap & | _solutionSpace | ||
) |
Definition at line 926 of file Substitute.cpp.
void smtrat::vs::substituteTrivialCase | ( | const smtrat::ConstraintT & | _cons, |
const Substitution & | _subs, | ||
DisjunctionOfConstraintConjunctions & | _result | ||
) |
Deals with the case, that the left hand side of the constraint to substitute is a trivial polynomial in the variable to substitute.
The constraints left hand side then should look like: ax^2+bx+c
_cons | The constraint to substitute in. |
_subs | The substitution to apply. |
_result | The vector, in which to store the results of this substitution. It is semantically a disjunction of conjunctions of constraints. |
Definition at line 1111 of file Substitute.cpp.