Drake
Environment Class Reference

Represents a symbolic environment (mapping from a variable to a value). More...

#include <drake/common/symbolic_environment.h>

Public Types

typedef Variable key_type
 
typedef double mapped_type
 
typedef std::unordered_map< key_type, mapped_type, hash_value< key_type > > map
 
typedef map::value_type value_type
 std::pair<key_type, mapped_type> More...
 
typedef map::iterator iterator
 
typedef map::const_iterator const_iterator
 

Public Member Functions

 Environment ()=default
 Default constructor. More...
 
 Environment (std::initializer_list< value_type > init)
 List constructor. More...
 
 Environment (std::initializer_list< key_type > vars)
 List constructor. More...
 
iterator begin ()
 Returns an iterator to the beginning. More...
 
iterator end ()
 Returns an iterator to the end. More...
 
const_iterator begin () const
 Returns a const iterator to the beginning. More...
 
const_iterator end () const
 Returns a const iterator to the end. More...
 
const_iterator cbegin () const
 Returns a const iterator to the beginning. More...
 
const_iterator cend () const
 Returns a const iterator to the end. More...
 
void insert (const key_type &key, const mapped_type &elem)
 Inserts a pair (key, elem). More...
 
bool empty () const
 Checks whether the container is empty. More...
 
size_t size () const
 Returns the number of elements. More...
 
iterator find (const key_type &key)
 Finds element with specific key. More...
 
const_iterator find (const key_type &key) const
 Finds element with specific key. More...
 
Variables domain () const
 Returns the domain of this environment. More...
 
std::string to_string () const
 Returns string representation. More...
 
mapped_typeoperator[] (const key_type &key)
 Returns a reference to the value that is mapped to a key equivalent to key, performing an insertion if such key does not already exist. More...
 
Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable
 Environment (const Environment &)=default
 
Environmentoperator= (const Environment &)=default
 
 Environment (Environment &&)=default
 
Environmentoperator= (Environment &&)=default
 

Friends

std::ostream & operator<< (std::ostream &os, const Environment &env)
 

Detailed Description

Represents a symbolic environment (mapping from a variable to a value).

This class is used when we evaluate symbolic expressions or formulas which include unquantified (free) variables. Here are examples:

const Variable var_x{"x"};
const Variable var_y{"y"};
const Expression x{var_x};
const Expression y{var_x};
const Expression e1{x + y};
const Expression e2{x - y};
const Formula f{e1 > e2};
// env maps var_x to 2.0 and var_y to 3.0
const Environment env{{var_x, 2.0}, {var_y, 3.0}};
const double res1 = e1.Evaluate(env); // x + y => 2.0 + 3.0 => 5.0
const double res2 = e2.Evaluate(env); // x - y => 2.0 - 3.0 => -1.0
const bool res = f.Evaluate(env); // x + y > x - y => 5.0 >= -1.0 => True

Note that it is not allowed to have a dummy variable in an environment. It throws std::runtime_error for the attempts to create an environment with a dummy variable, to insert a dummy variable to an existing environment, or to take a reference to a value mapped to a dummy variable. See the following examples.

Variable var_dummy{}; // OK to have a dummy variable
Environment e1{var_dummy}; // throws std::runtime_error exception
Environment e2{{var_dummy, 1.0}}; // throws std::runtime_error exception
e.insert(var_dummy, 1.0); // throws std::runtime_error exception
e[var_dummy] = 3.0; // throws std::runtime_error exception

Member Typedef Documentation

typedef map::const_iterator const_iterator
typedef map::iterator iterator
typedef Variable key_type
typedef std::unordered_map<key_type, mapped_type, hash_value<key_type> > map
typedef map::value_type value_type

std::pair<key_type, mapped_type>

Constructor & Destructor Documentation

Environment ( const Environment )
default
Environment ( Environment &&  )
default
Environment ( )
default

Default constructor.

Environment ( std::initializer_list< value_type init)

List constructor.

Constructs an environment from a list of (Variable * double).

Environment ( std::initializer_list< key_type vars)

List constructor.

Constructs an environment from a list of Variable. Initializes the variables with 0.0.

Member Function Documentation

iterator begin ( )
inline

Returns an iterator to the beginning.

const_iterator begin ( ) const
inline

Returns a const iterator to the beginning.

const_iterator cbegin ( ) const
inline

Returns a const iterator to the beginning.

const_iterator cend ( ) const
inline

Returns a const iterator to the end.

Here is the call graph for this function:

Here is the caller graph for this function:

Variables domain ( ) const

Returns the domain of this environment.

Here is the caller graph for this function:

bool empty ( ) const
inline

Checks whether the container is empty.

Here is the caller graph for this function:

iterator end ( )
inline

Returns an iterator to the end.

Here is the caller graph for this function:

const_iterator end ( ) const
inline

Returns a const iterator to the end.

iterator find ( const key_type key)
inline

Finds element with specific key.

Here is the caller graph for this function:

const_iterator find ( const key_type key) const
inline

Finds element with specific key.

Here is the call graph for this function:

void insert ( const key_type key,
const mapped_type elem 
)

Inserts a pair (key, elem).

Here is the caller graph for this function:

Environment& operator= ( Environment &&  )
default
Environment& operator= ( const Environment )
default
Environment::mapped_type & operator[] ( const key_type key)

Returns a reference to the value that is mapped to a key equivalent to key, performing an insertion if such key does not already exist.

Here is the call graph for this function:

Here is the caller graph for this function:

size_t size ( ) const
inline

Returns the number of elements.

Here is the caller graph for this function:

string to_string ( ) const

Returns string representation.

Here is the caller graph for this function:

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const Environment env 
)
friend

The documentation for this class was generated from the following files: