10 #include "dreal/symbolic/hash.h" 11 #include "dreal/symbolic/symbolic_environment.h" 12 #include "dreal/symbolic/symbolic_expression.h" 13 #include "dreal/symbolic/symbolic_variable.h" 14 #include "dreal/symbolic/symbolic_variables.h" 21 enum class FormulaKind {
38 bool operator<(FormulaKind k1, FormulaKind k2);
44 class RelationalFormulaCell;
51 class NaryFormulaCell;
116 FormulaKind get_kind()
const;
117 size_t get_hash()
const;
121 const Variables& GetFreeVariables()
const;
124 bool EqualTo(
const Formula& f)
const;
148 bool Less(
const Formula& f)
const;
184 Formula Substitute(
const ExpressionSubstitution& expr_subst,
185 const FormulaSubstitution& formula_subst)
const;
193 Formula Substitute(
const ExpressionSubstitution& expr_subst)
const;
202 Formula Substitute(
const FormulaSubstitution& formula_subst)
const;
205 std::string to_string()
const;
211 explicit operator bool()
const {
return Evaluate(); }
213 friend std::ostream& operator<<(std::ostream& os,
const Formula& f);
214 friend void swap(
Formula& a,
Formula& b) { std::swap(a.ptr_, b.ptr_); }
216 friend bool is_false(
const Formula& f);
217 friend bool is_true(
const Formula& f);
218 friend bool is_variable(
const Formula& f);
219 friend bool is_equal_to(
const Formula& f);
220 friend bool is_not_equal_to(
const Formula& f);
221 friend bool is_greater_than(
const Formula& f);
222 friend bool is_greater_than_or_equal_to(
const Formula& f);
223 friend bool is_less_than(
const Formula& f);
224 friend bool is_less_than_or_equal_to(
const Formula& f);
225 friend bool is_relational(
const Formula& f);
226 friend bool is_conjunction(
const Formula& f);
227 friend bool is_disjunction(
const Formula& f);
228 friend bool is_negation(
const Formula& f);
270 bool include_ite()
const;
371 std::ostream& operator<<(std::ostream& os,
const Formula& f);
374 bool is_false(
const Formula& f);
376 bool is_true(
const Formula& f);
378 bool is_variable(
const Formula& f);
380 bool is_equal_to(
const Formula& f);
382 bool is_not_equal_to(
const Formula& f);
384 bool is_greater_than(
const Formula& f);
386 bool is_greater_than_or_equal_to(
const Formula& f);
388 bool is_less_than(
const Formula& f);
390 bool is_less_than_or_equal_to(
const Formula& f);
392 bool is_relational(
const Formula& f);
394 bool is_conjunction(
const Formula& f);
396 bool is_disjunction(
const Formula& f);
398 bool is_nary(
const Formula& f);
400 bool is_negation(
const Formula& f);
422 const std::set<Formula>& get_operands(
const Formula& f);
459 struct less<
dreal::drake::symbolic::Formula> {
462 return lhs.
Less(rhs);
468 struct equal_to<
dreal::drake::symbolic::Formula> {
476 struct hash<
dreal::drake::symbolic::Formula> {
Formula make_conjunction(const vector< Formula > &formulas)
Make conjunction of formulas.
Definition: symbolic.cc:523
Formula make_disjunction(const vector< Formula > &formulas)
Definition: symbolic.cc:531
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
std::shared_ptr< ContractorForall< ContextType > > to_forall(const Contractor &contractor)
Converts contractor to ContractorForall.
Definition: contractor_forall.h:331
Represents a symbolic variable.
Definition: symbolic_variable.h:16
Computes the hash value of v using std::hash.
Definition: hash.h:35
RelationalOperator operator!(const RelationalOperator op)
Negates op.
Definition: symbolic.cc:551
Represents a symbolic environment (mapping from a variable to a value).
Definition: symbolic_environment.h:52
bool is_forall(const Contractor &contractor)
Returns true if contractor is forall contractor.
Definition: contractor.cc:221
Represents a set of variables.
Definition: symbolic_variables.h:25
Represents a symbolic form of an expression.
Definition: symbolic_expression.h:164