Drake

Provides public header files of Drake's symbolic library.
A user of the symbolic library should only include this header file. Including other individual headers such as symbolic_expression.h will generate a compiletime error.
Many symbolic types are not closed under the defined operations. For example, relational operations (i.e. <) over symbolic::Expression produce symbolic::Formula. Another example is addition (+) over Monomial which gives Polynomial. If a user does not include the necessary set of header files, he/she will get either 1) incomprehensible c++ errors or 2) undefined runtime behaviors. The problem is trickier if we use symbolic objects via Eigen.
#include "drake/common/symbolic_variable.h"
#include "drake/common/symbolic_variables.h"
#include "drake/common/symbolic_environment.h"
#include "drake/common/symbolic_expression.h"
#include "drake/common/symbolic_expression_visitor.h"
#include "drake/common/symbolic_ldlt.h"
#include "drake/common/symbolic_monomial.h"
#include "drake/common/symbolic_monomial_util.h"
#include "drake/common/symbolic_polynomial.h"
#include "drake/common/symbolic_rational_function.h"
#include "drake/common/symbolic_formula.h"
#include "drake/common/symbolic_formula_visitor.h"
#include "drake/common/symbolic_simplification.h"
#include "drake/common/symbolic_codegen.h"
Macros  
#define  DRAKE_COMMON_SYMBOLIC_HEADER 
#define DRAKE_COMMON_SYMBOLIC_HEADER 