4 #include <unordered_map> 10 #include "dreal/util/box.h" 21 explicit IbexConverter(
const std::vector<Variable>& variables);
49 const ibex::Array<const ibex::ExprSymbol>& variables()
const;
51 void set_need_to_delete_variables(
bool value);
61 const ibex::ExprNode* Visit(
const Expression& e);
62 const ibex::ExprNode* VisitVariable(
const Expression& e);
63 const ibex::ExprNode* VisitConstant(
const Expression& e);
64 const ibex::ExprNode* VisitRealConstant(
const Expression& e);
65 const ibex::ExprNode* VisitAddition(
const Expression& e);
66 const ibex::ExprNode* VisitMultiplication(
const Expression& e);
67 const ibex::ExprNode* VisitDivision(
const Expression& e);
68 const ibex::ExprNode* VisitLog(
const Expression& e);
69 const ibex::ExprNode* VisitAbs(
const Expression& e);
70 const ibex::ExprNode* VisitExp(
const Expression& e);
71 const ibex::ExprNode* VisitSqrt(
const Expression& e);
72 const ibex::ExprNode* ProcessPow(
const Expression& base,
74 const ibex::ExprNode* VisitPow(
const Expression& e);
75 const ibex::ExprNode* VisitSin(
const Expression& e);
76 const ibex::ExprNode* VisitCos(
const Expression& e);
77 const ibex::ExprNode* VisitTan(
const Expression& e);
78 const ibex::ExprNode* VisitAsin(
const Expression& e);
79 const ibex::ExprNode* VisitAcos(
const Expression& e);
80 const ibex::ExprNode* VisitAtan(
const Expression& e);
81 const ibex::ExprNode* VisitAtan2(
const Expression& e);
82 const ibex::ExprNode* VisitSinh(
const Expression& e);
83 const ibex::ExprNode* VisitCosh(
const Expression& e);
84 const ibex::ExprNode* VisitTanh(
const Expression& e);
85 const ibex::ExprNode* VisitMin(
const Expression& e);
86 const ibex::ExprNode* VisitMax(
const Expression& e);
87 const ibex::ExprNode* VisitIfThenElse(
const Expression&);
88 const ibex::ExprNode* VisitUninterpretedFunction(
const Expression&);
91 const ibex::ExprCtr* Visit(
const Formula& f,
bool polarity);
92 const ibex::ExprCtr* VisitFalse(
const Formula&,
bool);
93 const ibex::ExprCtr* VisitTrue(
const Formula&,
bool);
94 const ibex::ExprCtr* VisitVariable(
const Formula&,
bool);
95 const ibex::ExprCtr* VisitEqualTo(
const Formula& f,
bool polarity);
96 const ibex::ExprCtr* VisitNotEqualTo(
const Formula& f,
bool polarity);
97 const ibex::ExprCtr* VisitGreaterThan(
const Formula& f,
bool polarity);
98 const ibex::ExprCtr* VisitGreaterThanOrEqualTo(
const Formula& f,
100 const ibex::ExprCtr* VisitLessThan(
const Formula& f,
bool polarity);
101 const ibex::ExprCtr* VisitLessThanOrEqualTo(
const Formula& f,
bool polarity);
102 const ibex::ExprCtr* VisitConjunction(
const Formula&,
bool);
103 const ibex::ExprCtr* VisitDisjunction(
const Formula&,
bool);
104 const ibex::ExprCtr* VisitNegation(
const Formula& f,
bool polarity);
105 const ibex::ExprCtr* VisitForall(
const Formula&,
bool);
111 const std::vector<Variable>& vars_;
117 bool need_to_delete_variables_{
true};
120 std::unordered_map<Variable::Id, const ibex::ExprSymbol*>
121 symbolic_var_to_ibex_var_;
123 ibex::Array<const ibex::ExprSymbol> var_array_;
128 const ibex::ExprNode* zero_;
132 friend const ibex::ExprCtr*
133 drake::symbolic::VisitFormula<const ibex::ExprCtr*>(
IbexConverter*,
138 friend const ibex::ExprNode*
139 drake::symbolic::VisitExpression<const ibex::ExprNode*>(IbexConverter*,
const ibex::ExprCtr * Convert(const Formula &f)
Convert f into the corresponding IBEX data structure, ibex::ExprCtr*.
Definition: ibex_converter.cc:82
Visitor class which converts a symbolic Formula into ibex::ExprCtr.
Definition: ibex_converter.h:15
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
~IbexConverter()
Destructor.
Definition: ibex_converter.cc:72
Represents a n-dimensional interval vector.
Definition: box.h:17
IbexConverter()=delete
Delete the default constructor.
This is the header file that we consolidate Drake's symbolic classes and expose them inside of dreal ...
Represents a symbolic form of an expression.
Definition: symbolic_expression.h:164