#include <functional>#include <memory>#include <ostream>#include <set>#include <string>#include <utility>#include <Eigen/Core>#include "drake/common/drake_assert.h"#include "drake/common/drake_bool.h"#include "drake/common/drake_copyable.h"#include "drake/common/eigen_types.h"#include "drake/common/fmt.h"#include "drake/common/hash.h"#include "drake/common/random.h"Classes | |
| class | Formula |
| Represents a symbolic form of a first-order logic formula. More... | |
| struct | ConditionTraits< symbolic::Formula > |
| struct | hash< drake::symbolic::Formula > |
| struct | less< drake::symbolic::Formula > |
| struct | equal_to< drake::symbolic::Formula > |
Namespaces | |
| drake | |
| drake::symbolic | |
| drake::assert | |
Enumerations | |
| enum | FormulaKind { False, True, Var, Eq, Neq, Gt, Geq, Lt, Leq, And, Or, Not, Forall, Isnan, PositiveSemidefinite } |
| Kinds of symbolic formulas. More... | |
Functions | |
| bool | operator< (FormulaKind k1, FormulaKind k2) |
| Formula | forall (const Variables &vars, const Formula &f) |
Returns a formula f, universally quantified by variables vars. More... | |
| Formula | make_conjunction (const std::set< Formula > &formulas) |
Returns a conjunction of formulas. More... | |
| Formula | operator && (const Formula &f1, const Formula &f2) |
| Formula | operator && (const Variable &v, const Formula &f) |
| Formula | operator && (const Formula &f, const Variable &v) |
| Formula | operator && (const Variable &v1, const Variable &v2) |
| Formula | make_disjunction (const std::set< Formula > &formulas) |
Returns a disjunction of formulas. More... | |
| Formula | operator|| (const Formula &f1, const Formula &f2) |
| Formula | operator|| (const Variable &v, const Formula &f) |
| Formula | operator|| (const Formula &f, const Variable &v) |
| Formula | operator|| (const Variable &v1, const Variable &v2) |
| Formula | operator! (const Formula &f) |
| Formula | operator! (const Variable &v) |
| Formula | operator== (const Expression &e1, const Expression &e2) |
| Formula | operator!= (const Expression &e1, const Expression &e2) |
| Formula | operator< (const Expression &e1, const Expression &e2) |
| Formula | operator<= (const Expression &e1, const Expression &e2) |
| Formula | operator> (const Expression &e1, const Expression &e2) |
| Formula | operator>= (const Expression &e1, const Expression &e2) |
| Formula | isnan (const Expression &e) |
| Returns a Formula for the predicate isnan(e) to the given expression. More... | |
| Formula | isinf (const Expression &e) |
Returns a Formula determining if the given expression e is a positive or negative infinity. More... | |
| Formula | isfinite (const Expression &e) |
Returns a Formula determining if the given expression e has a finite value. More... | |
| Formula | positive_semidefinite (const Eigen::Ref< const MatrixX< Expression >> &m) |
Returns a symbolic formula constraining m to be a positive-semidefinite matrix. More... | |
| Formula | positive_semidefinite (const MatrixX< Expression > &m, Eigen::UpLoType mode) |
Constructs and returns a symbolic positive-semidefinite formula from m. More... | |
| template<typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Derived::Scalar, Expression >, Formula > | positive_semidefinite (const Eigen::TriangularView< Derived, Eigen::Lower > &l) |
Constructs and returns a symbolic positive-semidefinite formula from a lower triangular-view l. More... | |
| template<typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Derived::Scalar, Expression >, Formula > | positive_semidefinite (const Eigen::TriangularView< Derived, Eigen::Upper > &u) |
Constructs and returns a symbolic positive-semidefinite formula from an upper triangular-view u. More... | |
| std::ostream & | operator<< (std::ostream &os, const Formula &f) |
| bool | is_false (const Formula &f) |
Checks if f is structurally equal to False formula. More... | |
| bool | is_true (const Formula &f) |
Checks if f is structurally equal to True formula. More... | |
| bool | is_variable (const Formula &f) |
Checks if f is a variable formula. More... | |
| bool | is_equal_to (const Formula &f) |
Checks if f is a formula representing equality (==). More... | |
| bool | is_not_equal_to (const Formula &f) |
Checks if f is a formula representing disequality (!=). More... | |
| bool | is_greater_than (const Formula &f) |
Checks if f is a formula representing greater-than (>). More... | |
| bool | is_greater_than_or_equal_to (const Formula &f) |
Checks if f is a formula representing greater-than-or-equal-to (>=). More... | |
| bool | is_less_than (const Formula &f) |
Checks if f is a formula representing less-than (<). More... | |
| bool | is_less_than_or_equal_to (const Formula &f) |
Checks if f is a formula representing less-than-or-equal-to (<=). More... | |
| bool | is_relational (const Formula &f) |
Checks if f is a relational formula ({==, !=, >, >=, <, <=}). More... | |
| bool | is_conjunction (const Formula &f) |
Checks if f is a conjunction (∧). More... | |
| bool | is_disjunction (const Formula &f) |
Checks if f is a disjunction (∨). More... | |
| bool | is_nary (const Formula &f) |
Checks if f is a n-ary formula ({∧, ∨}). More... | |
| bool | is_negation (const Formula &f) |
Checks if f is a negation (¬). More... | |
| bool | is_forall (const Formula &f) |
Checks if f is a Forall formula (∀). More... | |
| bool | is_isnan (const Formula &f) |
Checks if f is an isnan formula. More... | |
| bool | is_positive_semidefinite (const Formula &f) |
Checks if f is a positive-semidefinite formula. More... | |
| const Variable & | get_variable (const Formula &f) |
Returns the embedded variable in the variable formula f. More... | |
| const Expression & | get_lhs_expression (const Formula &f) |
Returns the lhs-argument of a relational formula f. More... | |
| const Expression & | get_rhs_expression (const Formula &f) |
Returns the rhs-argument of a relational formula f. More... | |
| const Expression & | get_unary_expression (const Formula &f) |
Returns the expression in a unary expression formula f. More... | |
| const std::set< Formula > & | get_operands (const Formula &f) |
Returns the set of formulas in a n-ary formula f. More... | |
| const Formula & | get_operand (const Formula &f) |
Returns the formula in a negation formula f. More... | |
| const Variables & | get_quantified_variables (const Formula &f) |
Returns the quantified variables in a forall formula f. More... | |
| const Formula & | get_quantified_formula (const Formula &f) |
Returns the quantified formula in a forall formula f. More... | |
| const MatrixX< Expression > & | get_matrix_in_positive_semidefinite (const Formula &f) |
Returns the matrix in a positive-semidefinite formula f. More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar()==typename DerivedB::Scalar()), Formula >, typename internal::RelationalOpTraits< DerivedA, DerivedB >::ReturnType > | operator== (const DerivedA &a1, const DerivedB &a2) |
Returns an Eigen array of symbolic formulas where each element includes element-wise symbolic-equality of two arrays m1 and m2. More... | |
| template<typename Derived , typename ScalarType > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename Derived::Scalar()==ScalarType()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator== (const Derived &a, const ScalarType &v) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between an array a and a scalar v using equal-to operator (==). More... | |
| template<typename ScalarType , typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(ScalarType()==typename Derived::Scalar()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator== (const ScalarType &v, const Derived &a) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between a scalar v and an array using equal-to operator (==). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar()<=typename DerivedB::Scalar()), Formula >, typename internal::RelationalOpTraits< DerivedA, DerivedB >::ReturnType > | operator<= (const DerivedA &a1, const DerivedB &a2) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison of two arrays a1 and a2 using less-than-or-equal operator (<=). More... | |
| template<typename Derived , typename ScalarType > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename Derived::Scalar()<=ScalarType()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator<= (const Derived &a, const ScalarType &v) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between an array a and a scalar v using less-than-or-equal operator (<=). More... | |
| template<typename ScalarType , typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(ScalarType()<=typename Derived::Scalar()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator<= (const ScalarType &v, const Derived &a) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between a scalar v and an array using less-than-or-equal operator (<=). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar()< typename DerivedB::Scalar()), Formula >, typename internal::RelationalOpTraits< DerivedA, DerivedB >::ReturnType > | operator< (const DerivedA &a1, const DerivedB &a2) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison of two arrays a1 and a2 using less-than operator (<). More... | |
| template<typename Derived , typename ScalarType > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename Derived::Scalar()< ScalarType()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator< (const Derived &a, const ScalarType &v) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between an array a and a scalar v using less-than operator (<). More... | |
| template<typename ScalarType , typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(ScalarType()< typename Derived::Scalar()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator< (const ScalarType &v, const Derived &a) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between a scalar v and an array using less-than operator (<). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar() >=typename DerivedB::Scalar()), Formula >, typename internal::RelationalOpTraits< DerivedA, DerivedB >::ReturnType > | operator>= (const DerivedA &a1, const DerivedB &a2) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison of two arrays a1 and a2 using greater-than-or-equal operator (>=). More... | |
| template<typename Derived , typename ScalarType > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename Derived::Scalar() >=ScalarType()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator>= (const Derived &a, const ScalarType &v) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between an array a and a scalar v using greater-than-or-equal operator (>=). More... | |
| template<typename ScalarType , typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(ScalarType() >=typename Derived::Scalar()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator>= (const ScalarType &v, const Derived &a) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between a scalar v and an array using less-than-or-equal operator (<=) instead of greater-than-or-equal operator (>=). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar() > typename DerivedB::Scalar()), Formula >, typename internal::RelationalOpTraits< DerivedA, DerivedB >::ReturnType > | operator> (const DerivedA &a1, const DerivedB &a2) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison of two arrays a1 and a2 using greater-than operator (>). More... | |
| template<typename Derived , typename ScalarType > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename Derived::Scalar() > ScalarType()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator> (const Derived &a, const ScalarType &v) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between an array a and a scalar v using greater-than operator (>). More... | |
| template<typename ScalarType , typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(ScalarType() > typename Derived::Scalar()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator> (const ScalarType &v, const Derived &a) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between a scalar v and an array using less-than operator (<) instead of greater-than operator (>). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar() !=typename DerivedB::Scalar()), Formula >, typename internal::RelationalOpTraits< DerivedA, DerivedB >::ReturnType > | operator!= (const DerivedA &a1, const DerivedB &a2) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison of two arrays a1 and a2 using not-equal operator (!=). More... | |
| template<typename Derived , typename ScalarType > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(typename Derived::Scalar() !=ScalarType()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator!= (const Derived &a, const ScalarType &v) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between an array a and a scalar v using not-equal operator (!=). More... | |
| template<typename ScalarType , typename Derived > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< Derived >::XprKind, Eigen::ArrayXpr > &&std::is_same_v< decltype(ScalarType() !=typename Derived::Scalar()), Formula >, Eigen::Array< Formula, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > > | operator!= (const ScalarType &v, const Derived &a) |
Returns an Eigen array of symbolic formulas where each element includes element-wise comparison between a scalar v and an array using not-equal operator (!=). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar()==typename DerivedB::Scalar()), Formula >, Formula > | operator== (const DerivedA &m1, const DerivedB &m2) |
Returns a symbolic formula checking if two matrices m1 and m2 are equal. More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar() !=typename DerivedB::Scalar()), Formula >, Formula > | operator!= (const DerivedA &m1, const DerivedB &m2) |
Returns a symbolic formula representing the condition whether m1 and m2 are not the same. More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar()< typename DerivedB::Scalar()), Formula >, Formula > | operator< (const DerivedA &m1, const DerivedB &m2) |
Returns a symbolic formula representing element-wise comparison between two matrices m1 and m2 using less-than (<) operator. More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar()<=typename DerivedB::Scalar()), Formula >, Formula > | operator<= (const DerivedA &m1, const DerivedB &m2) |
Returns a symbolic formula representing element-wise comparison between two matrices m1 and m2 using less-than-or-equal operator (<=). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar() > typename DerivedB::Scalar()), Formula >, Formula > | operator> (const DerivedA &m1, const DerivedB &m2) |
Returns a symbolic formula representing element-wise comparison between two matrices m1 and m2 using greater-than operator (>). More... | |
| template<typename DerivedA , typename DerivedB > | |
| std::enable_if_t< std::is_same_v< typename Eigen::internal::traits< DerivedA >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< typename Eigen::internal::traits< DerivedB >::XprKind, Eigen::MatrixXpr > &&std::is_same_v< decltype(typename DerivedA::Scalar() >=typename DerivedB::Scalar()), Formula >, Formula > | operator>= (const DerivedA &m1, const DerivedB &m2) |
Returns a symbolic formula representing element-wise comparison between two matrices m1 and m2 using greater-than-or-equal operator (>=). More... | |