27 if (smtrat::LOG::getInstance().isDebugEnabled()) {
29 std::cout <<
"created ZeroOne Axiom Formula is: " << finalFormula;
62 if (smtrat::LOG::getInstance().isDebugEnabled()) {
64 std::cout <<
"created ZeroTwo Axiom Formula is: " << finalFormula;
97 if (smtrat::LOG::getInstance().isDebugEnabled()) {
99 std::cout <<
"created ZeroThree Axiom Formula is: " << finalFormula;
124 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
126 if (smtrat::LOG::getInstance().isDebugEnabled()) {
128 std::cout <<
"created TangentPlaneNEQOne Axiom Formula is: " << finalFormula;
145 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
147 if (smtrat::LOG::getInstance().isDebugEnabled()) {
149 std::cout <<
"created TangentPlaneNEQTwo Axiom Formula is: " << finalFormula;
160 std::vector<Poly> operandsxa {
Poly(xVariable),
Poly(aRational)};
162 Poly xMinusa =
Poly(Poly::ConstructorOperation::SUB, operandsxa);
165 std::vector<Poly> operandsyb {
Poly(yVariable),
Poly(bRational)};
167 Poly yMinusb =
Poly(Poly::ConstructorOperation::SUB, operandsyb);
181 std::vector<Poly> operandsz {
Poly(zVariable), -
Poly(bRational*xVariable), -
Poly(aRational*yVariable),
Poly(aRational*bRational)};
183 Poly zLeftPoly =
Poly(Poly::ConstructorOperation::ADD, operandsz);
186 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
188 if (smtrat::LOG::getInstance().isDebugEnabled()) {
190 std::cout <<
"created TangentPlaneNEQThree Axiom Formula is: " << finalFormula;
201 std::vector<Poly> operandsxa {
Poly(xVariable),
Poly(aRational)};
203 Poly xMinusa =
Poly(Poly::ConstructorOperation::SUB, operandsxa);
206 std::vector<Poly> operandsyb {
Poly(yVariable),
Poly(bRational)};
208 Poly yMinusb =
Poly(Poly::ConstructorOperation::SUB, operandsyb);
222 std::vector<Poly> operandsz {
Poly(zVariable), -
Poly(bRational*xVariable), -
Poly(aRational*yVariable),
Poly(aRational*bRational)};
224 Poly zLeftPoly =
Poly(Poly::ConstructorOperation::ADD, operandsz);
227 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
229 if (smtrat::LOG::getInstance().isDebugEnabled()) {
231 std::cout <<
"created TangentPlaneNEQFour Axiom Formula is: " << finalFormula;
246 return tangentPlaneNEQ;
251 std::vector<Poly> operands {
Poly(xVariable),
Poly(aRational)};
254 std::vector<Poly> operands2 {
Poly(zVariable),
Poly(aRational*yVariable)};
257 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
259 if (smtrat::LOG::getInstance().isDebugEnabled()) {
261 std::cout <<
"created TangentPlaneEQOne Axiom Formula is: " << finalFormula;
271 std::vector<Poly> operands {
Poly(xVariable),
Poly(aRational)};
272 FormulaT leftFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands), carl::Relation::NEQ);
274 std::vector<Poly> operands2 {
Poly(zVariable), -
Poly(aRational*xVariable), -
Poly(aRational*xVariable),
Poly(aRational*aRational)};
275 FormulaT rightFormula =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands2), carl::Relation::GREATER);
277 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
279 if (smtrat::LOG::getInstance().isDebugEnabled()) {
281 std::cout <<
"created TangentPlaneEQTwo Axiom Formula is: " << finalFormula;
293 return tangentPlaneEQ;
297 carl::Variable zVariable = monomialIterator->first;
298 carl::Monomial::Arg monomial = monomialIterator->second;
300 auto it = monomial->begin();
302 carl::Variable xVariable = it->first;
303 carl::Variable yVariable = it->first;
307 if (it != monomial->end()){
308 yVariable = it->first;
311 if (smtrat::LOG::getInstance().isDebugEnabled()) {
313 std::cout <<
"zVariable is: " << zVariable;
315 std::cout <<
"xVariable is: " << xVariable;
317 std::cout <<
"yVariable is: " << yVariable;
328 Model absoluteValuedModel;
330 for (
auto it = linearizedModel.begin(); it != linearizedModel.end(); ++it) {
333 absoluteValuedModel.emplace(it->first, value);
337 if (smtrat::LOG::getInstance().isDebugEnabled()) {
338 std::cout <<
"\n" <<
"absolute valued model: " <<
"\n";
339 std::cout <<
"variable | value: " <<
"\n";
340 for (
auto it = absoluteValuedModel.begin(); it != absoluteValuedModel.end(); ++it) {
341 std::cout << it->first <<
" | " << it->second;
346 return absoluteValuedModel;
355 return carl::fresh_real_variable(
"aux_" + variable.name());
371 std::vector<Poly> operands {
Poly(aux_variable),
Poly(variable)};
375 FormulaT partOneFormula =
FormulaT(carl::FormulaType::IMPLIES, partOneOneFormula, partOneTwoFormula);
381 FormulaT partTwoFormula =
FormulaT(carl::FormulaType::IMPLIES, partTwoOneFormula, partTwoTwoFormula);
383 FormulaT absFormula =
FormulaT(carl::FormulaType::IMPLIES, partTwoOneFormula, partTwoTwoFormula);
412 formulas.push_back(absFormulaOfVariable1);
417 formulas.push_back(absFormulaOfVariable2);
419 std::vector<Poly> operands {
Poly(auxLeft),
Poly(auxRight)};
422 formulas.push_back(realtionFormula);
426 return finalAbsFormula;
442 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
444 if (smtrat::LOG::getInstance().isDebugEnabled()) {
446 std::cout <<
"created EquivalentToOriginalMonotonicityOne Axiom Formula is: " << finalFormula;
469 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
471 if (smtrat::LOG::getInstance().isDebugEnabled()) {
473 std::cout <<
"created EquivalentToOriginalMonotonicityTwo Axiom Formula is: " << finalFormula;
496 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
498 if (smtrat::LOG::getInstance().isDebugEnabled()) {
500 std::cout <<
"created EquivalentToOriginalMonotonicityThree Axiom Formula is: " << finalFormula;
518 FormulaT partOneLeftFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandsxx), carl::Relation::LEQ);
523 FormulaT partTwoLeftFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandsyy), carl::Relation::LEQ);
531 FormulaT zFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandszz), carl::Relation::LEQ);
534 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, zFormula);
536 if (smtrat::LOG::getInstance().isDebugEnabled()) {
538 std::cout <<
"created OriginalMonotonicityOne Axiom Formula is: " << finalFormula;
549 FormulaT partOneLeftFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandsxx), carl::Relation::LESS);
554 FormulaT partTwoLeftFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandsyy), carl::Relation::LEQ);
565 FormulaT zFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandszz), carl::Relation::LESS);
568 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, zFormula);
570 if (smtrat::LOG::getInstance().isDebugEnabled()) {
572 std::cout <<
"created OriginalMonotonicityTwo Axiom Formula is: " << finalFormula;
583 FormulaT partOneLeftFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandsxx), carl::Relation::LEQ);
588 FormulaT partTwoLeftFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandsyy), carl::Relation::LESS);
599 FormulaT zFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operandszz), carl::Relation::LESS);
602 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, zFormula);
604 if (smtrat::LOG::getInstance().isDebugEnabled()) {
606 std::cout <<
"created OriginalMonotonicityThree Axiom Formula is: " << finalFormula;
618 monotonicityFormulas.push_back(
623 monotonicityFormulas.push_back(
628 monotonicityFormulas.push_back(
632 return monotonicityFormulas;
655 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
657 if (smtrat::LOG::getInstance().isDebugEnabled()) {
659 std::cout <<
"created Congruence Axiom Formula is: " << finalFormula;
669 FormulaT leftFormulaPartOneOne =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands1), carl::Relation::GEQ);
672 FormulaT leftFormulaPartOneTwo =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands2), carl::Relation::GEQ);
676 FormulaT leftFormulaPartTwoOne =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands1), carl::Relation::LEQ);
678 FormulaT leftFormulaPartTwoTwo =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands2), carl::Relation::LEQ);
685 FormulaT rightFormula =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands3), carl::Relation::GEQ);
687 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
689 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"created ICPGreaterOne Axiom Formula is: " << finalFormula << std::endl; }
697 FormulaT leftFormulaPartOneOne =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands1), carl::Relation::GEQ);
700 FormulaT leftFormulaPartOneTwo =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands2), carl::Relation::LEQ);
704 FormulaT leftFormulaPartTwoOne =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands1), carl::Relation::LEQ);
706 FormulaT leftFormulaPartTwoTwo =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands2), carl::Relation::GEQ);
713 FormulaT rightFormula =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands3), carl::Relation::LEQ);
715 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
717 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"created ICPGreaterTwo Axiom Formula is: " << finalFormula << std::endl; }
734 FormulaT leftFormulaPartOne =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands1), carl::Relation::LEQ);
735 leftFormulas.push_back(leftFormulaPartOne);
738 FormulaT leftFormulaPartTwo =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands2), carl::Relation::LEQ);
739 leftFormulas.push_back(leftFormulaPartTwo);
742 FormulaT leftFormulaPartThree =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands3), carl::Relation::LEQ);
743 leftFormulas.push_back(leftFormulaPartThree);
746 FormulaT leftFormulaPartFour =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands4), carl::Relation::LEQ);
747 leftFormulas.push_back(leftFormulaPartFour);
752 FormulaT rightFormulaPartOne =
FormulaT(
Poly(Poly::ConstructorOperation::ADD, operands5), carl::Relation::LEQ);
755 FormulaT rightFormulaPartTwo =
FormulaT(
Poly(Poly::ConstructorOperation::SUB, operands6), carl::Relation::LEQ);
759 FormulaT finalFormula =
FormulaT(carl::FormulaType::IMPLIES, leftFormula, rightFormula);
761 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"created ICPLess Axiom Formula is: " << finalFormula << std::endl; }
767 carl::Variable xVariable = variableCapsuleOuter.
getXVariable();
768 carl::Variable yVariable = variableCapsuleOuter.
getYVariable();
769 carl::Variable zVariable = variableCapsuleOuter.
getZVariable();
771 Rational aRational = linearizedModel.find(variableCapsuleOuter.
getXVariable())->second.asRational();
772 Rational bRational = linearizedModel.find(variableCapsuleOuter.
getYVariable())->second.asRational();
773 Rational cRational = linearizedModel.find(variableCapsuleOuter.
getZVariable())->second.asRational();
775 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout << std::endl <<
"Found values in abEqualcCheck" <<
" Zvariable = " << cRational <<
" Xvariable = " << aRational <<
" Yvariable = " << bRational << std::endl; }
777 carl::Variable aVariable = carl::fresh_real_variable(
"a");
778 carl::Variable bVariable = carl::fresh_real_variable(
"b");
779 carl::Variable cVariable = carl::fresh_real_variable(
"c");
782 abcModel.emplace(aVariable, aRational);
783 abcModel.emplace(bVariable, bRational);
784 abcModel.emplace(cVariable, cRational);
789 if (carl::satisfied_by(abcFormula, abcModel) == 1){
798 carl::Variable aVariable = carl::fresh_real_variable(
"a");
799 carl::Variable bVariable = carl::fresh_real_variable(
"b");
800 carl::Variable cVariable = carl::fresh_real_variable(
"c");
803 abcModel.emplace(aVariable, rationalCapsule.
getARational());
804 abcModel.emplace(bVariable, rationalCapsule.
getBRational());
805 abcModel.emplace(cVariable, rationalCapsule.
getCRational());
810 if (carl::satisfied_by(abcFormula, abcModel) == 1){
819 carl::Variable aVariable = carl::fresh_real_variable(
"a");
820 carl::Variable bVariable = carl::fresh_real_variable(
"b");
821 carl::Variable cVariable = carl::fresh_real_variable(
"c");
824 abcModel.emplace(aVariable, rationalCapsule.
getARational());
825 abcModel.emplace(bVariable, rationalCapsule.
getBRational());
826 abcModel.emplace(cVariable, rationalCapsule.
getCRational());
831 if (carl::satisfied_by(abcFormula, abcModel) == 1){
842 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"generated cByA: " << cByA << std::endl; }
852 if (smtrat::LOG::getInstance().isDebugEnabled()) {
853 std::cout <<
"The bPrimeInterval is: " << bPrimeInterval << std::endl;
854 if (bPrimeInterval.is_consistent())
855 std::cout <<
"isConsistent: " << std::endl;
856 if (!bPrimeInterval.is_empty())
857 std::cout <<
"Not Empty: " << std::endl;
860 Rational bPrime = carl::sample(bPrimeInterval);
863 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"generated cByBPrime: " << cByBPrime << std::endl; }
873 Rational aPrime = carl::sample(aPrimeInterval);
878 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"generated aPrime: " << aPrime <<
" bPrime: " << bPrime <<
" cPrime: " << cPrime << std::endl; }
893 Model absoluteValuedModel;
899 for (
MonomialMapIterator monomialIteratorOuter = monomialMap.begin(); monomialIteratorOuter != monomialMap.end(); ++monomialIteratorOuter){
901 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout << std::endl <<
"creating variableCapsuleOuter..."; }
906 if (axiomType == AxiomType::ZERO) {
909 formulas.insert(std::end(formulas), std::begin(createdZeroFormulas), std::end(createdZeroFormulas));
911 }
else if (axiomType == AxiomType::TANGENT_PLANE){
913 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"abEqualcCheck is true, creating TANGENT_PLANE..." << std::endl; }
916 formulas.insert(std::end(formulas), std::begin(createdTangentPlaneNEQ), std::end(createdTangentPlaneNEQ));
919 formulas.insert(std::end(formulas), std::begin(createdTangentPlaneEQ), std::end(createdTangentPlaneEQ));
922 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"abEqualcCheck is false TANGENT_PLANE is not creating..." << std::endl; }
924 }
else if(axiomType == AxiomType::MONOTONICITY || axiomType == AxiomType::CONGRUENCE){
925 for (
MonomialMapIterator monomialIteratorInner = monomialMap.begin(); monomialIteratorInner != monomialMap.end(); ++monomialIteratorInner){
926 if (monomialIteratorOuter == monomialIteratorInner){
930 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout << std::endl <<
"creating variableCapsuleInner..."; }
934 if (axiomType == AxiomType::MONOTONICITY){
938 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"abEqualcCheck is true, creating Monotonicity..." << std::endl; }
941 formulas.insert(std::end(formulas), std::begin(createdMonotonicity), std::end(createdMonotonicity));
943 }
else {
if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"abEqualcCheck is false Monotonicity is not creating..." << std::endl; }}
947 formulas.push_back(
createCongruence(variableCapsuleOuter, variableCapsuleInner));
952 }
else if (axiomType == AxiomType::ICP) {
954 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"ICP axioms are creating..." << std::endl; }
959 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"rationalCapsuleAbs for ICP with a: " << rationalCapsuleAbs.
getARational() <<
" b: " << rationalCapsuleAbs.
getBRational() <<
" c: " << rationalCapsuleAbs.
getCRational() << std::endl; }
963 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"one of the rational is zero and Zero axiom is creating..." << std::endl; }
966 formulas.insert(std::end(formulas), std::begin(createdZeroFormulas), std::end(createdZeroFormulas));
970 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"none of the rational is zero and ICP is creating..." << std::endl; }
974 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"abGreatercCheck is true and ICPGreater is creating..." << std::endl; }
980 formulas.insert(std::end(formulas), std::begin(createdICPGreater), std::end(createdICPGreater));
984 if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"abLesscCheck is true and ICPLess is creating..." << std::endl; }
989 formulas.push_back(
createICPLess(variableCapsuleOuter, rationalCapsulePrimeForICPLess));
991 }
else {
if (smtrat::LOG::getInstance().isDebugEnabled()) { std::cout <<
"None of the precondition is true and ICP is not creating..." << std::endl; } }
static FormulasT createFormula(AxiomType axiomType, Model linearizedModel, MonomialMap monomialMap)
const Rational & getCRational() const
const Rational & getBRational() const
const Rational & getARational() const
const carl::Variable & getYVariable() const
const carl::Variable & getZVariable() const
const carl::Variable & getXVariable() const
Numeric abs(const Numeric &_value)
Calculates the absolute value of the given Numeric.
Class to create the formulas for axioms.
const smtrat::VariableCapsule extractVariables(MonomialMapIterator monomialIterator)
Model createAbsoluteValuedModel(Model linearizedModel)
FormulaT createTangentPlaneNEQFour(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable, Rational aRational, Rational bRational)
FormulaT generateAbsFormula(carl::Variable variable, carl::Variable aux_variable)
| x1 | = (and (=> (x1 >= 0) (y1 = x1)) (=> (x1 < 0) (y1 = -x1)) )
FormulaT createTangentPlaneEQOne(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable, Rational aRational)
FormulasT createMonotonicity(VariableCapsule variableCapsuleOuter, VariableCapsule variableCapsuleInner, Model absoluteValuedModel)
FormulaT createEquivalentToOriginalMonotonicityTwo(smtrat::VariableCapsule variableCapsule, smtrat::VariableCapsule variableCapsuleInner)
FormulaT createICPLess(VariableCapsule variableCapsule, RationalCapsule rationalCapsule)
carl::Formula< Poly > FormulaT
FormulaT createZeroTwo(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable)
std::unordered_map< carl::Variable, carl::Monomial::Arg > MonomialMap
bool abLesscCheck(RationalCapsule rationalCapsule)
carl::Model< Rational, Poly > Model
FormulaT createOriginalMonotonicityTwo(smtrat::VariableCapsule variableCapsule, smtrat::VariableCapsule variableCapsuleInner)
FormulasT createTangentPlaneNEQ(VariableCapsule variableCapsule, RationalCapsule rationalCapsule)
FormulaT createTangentPlaneNEQOne(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable, Rational aRational)
FormulaT createTangentPlaneEQTwo(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable, Rational aRational)
FormulasT createICPGreater(VariableCapsule variableCapsule, RationalCapsule rationalCapsule)
FormulaT createOriginalMonotonicityOne(smtrat::VariableCapsule variableCapsule, smtrat::VariableCapsule variableCapsuleInner)
std::unordered_map< carl::Variable, carl::Monomial::Arg >::iterator MonomialMapIterator
carl::Interval< Rational > RationalInterval
carl::MultivariatePolynomial< Rational > Poly
FormulaT createEquivalentToOriginalMonotonicityOne(smtrat::VariableCapsule variableCapsule, smtrat::VariableCapsule variableCapsuleInner)
FormulaT createOriginalMonotonicityThree(smtrat::VariableCapsule variableCapsule, smtrat::VariableCapsule variableCapsuleInner)
FormulasT createTangentPlaneEQ(VariableCapsule variableCapsule, RationalCapsule rationalCapsule)
FormulaT createZeroOne(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable)
bool abEqualcCheck(VariableCapsule variableCapsuleOuter, Model linearizedModel)
bool abGreatercCheck(RationalCapsule rationalCapsule)
FormulaT createICPGreaterTwo(VariableCapsule variableCapsule, RationalCapsule rationalCapsule)
FormulaT createICPGreaterOne(VariableCapsule variableCapsule, RationalCapsule rationalCapsule)
carl::Formulas< Poly > FormulasT
FormulaT createCongruence(smtrat::VariableCapsule variableCapsuleOuter, smtrat::VariableCapsule variableCapsuleInner)
FormulasT createZero(smtrat::VariableCapsule variableCapsule)
FormulaT createZeroThree(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable)
RationalCapsule generateAbcPrimeForICP(RationalCapsule rationalCapsule, bool isGreater)
FormulaT createTangentPlaneNEQThree(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable, Rational aRational, Rational bRational)
bool isAnyRationalIsZero(RationalCapsule rationalCapsule)
FormulaT createEquivalentToOriginalMonotonicityThree(smtrat::VariableCapsule variableCapsule, smtrat::VariableCapsule variableCapsuleInner)
RationalCapsule extractRationalCapsule(VariableCapsule variableCapsule, Model linearizedModel)
carl::Variable createAuxiliaryVariable(carl::Variable variable)
create an auxiliary variable e.g.
FormulaT createTangentPlaneNEQTwo(carl::Variable xVariable, carl::Variable yVariable, carl::Variable zVariable, Rational bRational)