parameters: (self,context=None,depth=None)
return_statement: return res
docstring: Returns a simplified version of self, or self if it cannot be
          simplified.
  
          Args:
              context (dict or :class:`Context`): any Variable / UserData whose
                  name appears in here will be substituted with its value.
              depth (int, optional): None for full-depth simplification, or the
                  max depth to explore.
  
          Returns:
              Expression:
docstring_summary: Returns a simplified version of self, or self if it cannot be
          simplified.
docstring_tokens: Returns a simplified version of self or self if it cannot be simplified .
function: def simplify(self,context=None,depth=None):
          """Returns a simplified version of self, or self if it cannot be
          simplified.
  
          Args:
              context (dict or :class:`Context`): any Variable / UserData whose
                  name appears in here will be substituted with its value.
              depth (int, optional): None for full-depth simplification, or the
                  max depth to explore.
  
          Returns:
              Expression:
          """
          res = self._simplify(context,depth)
          if res is None: return self
          return res
function_tokens: def simplify ( self , context = None , depth = None ) : res = self . _simplify ( context , depth ) if res is None : return self return res