code: def apply(self, func, *args, cont=False, tag=None, **kwargs):
          
          new_lhs = func(self.lhs, *args, **kwargs)
          if new_lhs == self.lhs and cont:
              new_lhs = None
          new_rhs = func(self.rhs, *args, **kwargs)
          new_tag = tag
          return self._update(new_lhs, new_rhs, new_tag, cont)
docs: Apply `func` to both sides of the equation
  
          Returns a new equation where the left-hand-side and right-hand side
          are replaced by the application of `func`::
  
              lhs=func(lhs, *args, **kwargs)
              rhs=func(rhs, *args, **kwargs)
  
          If ``cont=True``, the resulting equation will keep a history of its
          previous state (resulting in multiple lines of equations when printed,
          as in the main example above).
  
          The resulting equation with have the given `tag`.