class_docstr: Represents unevaluated integral.
docstr: Evaluate the derivative of the current Integral object by
  differentiating under the integral sign [1], using the Fundamental
  Theorem of Calculus [2] when possible.
  
  Explanation
  ===========
  
  Whenever an Integral is encountered that is equivalent to zero or
  has an integrand that is independent of the variable of integration
  those integrals are performed. All others are returned as Integral
  instances which can be resolved with doit() (provided they are integrable).
  
  References
  ==========
  
  .. [1] https://en.wikipedia.org/wiki/Differentiation_under_the_integral_sign
  .. [2] https://en.wikipedia.org/wiki/Fundamental_theorem_of_calculus
  
  Examples
  ========
  
  >>> from sympy import Integral
  >>> from sympy.abc import x, y
  >>> i = Integral(x + y, y, (y, 1, x))
  >>> i.diff(x)
  Integral(x + y, (y, x)) + Integral(1, y, (y, 1, x))
  >>> i.doit().diff(x) == i.diff(x).doit()
  True
  >>> i.diff(y)
  0
  
  The previous must be true since there is no y in the evaluated integral:
  
  >>> i.free_symbols
  {x}
  >>> i.doit()
  2*x**3/3 - x/2 - 1/6
docstr_tok: ["Evaluate","the","derivative","of","the","current","Integral","object","by","differentiating","under","the","integral","sign","[","1","]",",","using","the","Fundamental","Theorem","of","Calculus","[","2","]","when","possible",".","Explanation","===========","Whenever","an","Integral","is","encountered","that","is","equivalent","to","zero","or","has","an","integrand","that","is","independent","of","the","variable","of","integration","those","integrals","are","performed",".","All","others","are","returned","as","Integral","instances","which","can","be","resolved","with","doit","(",")","(","provided","they","are","integrable",")",".","References","==========","..","[","1","]","https",":","\/\/en.wikipedia.org\/wiki\/Differentiation_under_the_integral_sign","..","[","2","]","https",":","\/\/en.wikipedia.org\/wiki\/Fundamental_theorem_of_calculus","Examples","========",">",">",">","from","sympy","import","Integral",">",">",">","from","sympy.abc","import","x",",","y",">",">",">","i","=","Integral","(","x","+","y",",","y",",","(","y",",","1",",","x",")",")",">",">",">","i.diff","(","x",")","Integral","(","x","+","y",",","(","y",",","x",")",")","+","Integral","(","1",",","y",",","(","y",",","1",",","x",")",")",">",">",">","i.doit","(",")",".diff","(","x",")","==","i.diff","(","x",")",".doit","(",")","True",">",">",">","i.diff","(","y",")","0","The","previous","must","be","true","since","there","is","no","y","in","the","evaluated","integral",":",">",">",">","i.free_symbols","{","x","}",">",">",">","i.doit","(",")","2","*","x","*","*","3\/3","-","x\/2","-","1\/6"]
code: def _eval_derivative(self, sym):
      """Evaluate the derivative of the current Integral object by
      differentiating under the integral sign [1], using the Fundamental
      Theorem of Calculus [2] when possible.
  
      Explanation
      ===========
  
      Whenever an Integral is encountered that is equivalent to zero or
      has an integrand that is independent of the variable of integration
      those integrals are performed. All others are returned as Integral
      instances which can be resolved with doit() (provided they are integrable).
  
      References
      ==========
  
      .. [1] https://en.wikipedia.org/wiki/Differentiation_under_the_integral_sign
      .. [2] https://en.wikipedia.org/wiki/Fundamental_theorem_of_calculus
  
      Examples
      ========
  
      >>> from sympy import Integral
      >>> from sympy.abc import x, y
      >>> i = Integral(x + y, y, (y, 1, x))
      >>> i.diff(x)
      Integral(x + y, (y, x)) + Integral(1, y, (y, 1, x))
      >>> i.doit().diff(x) == i.diff(x).doit()
      True
      >>> i.diff(y)
      0
  
      The previous must be true since there is no y in the evaluated integral:
  
      >>> i.free_symbols
      {x}
      >>> i.doit()
      2*x**3/3 - x/2 - 1/6
  
      """
  
      # differentiate under the integral sign; we do not
      # check for regularity conditions (TODO), see issue 4215
  
      # get limits and the function
      f, limits = self.function, list(self.limits)
  
      # the order matters if variables of integration appear in the limits
      # so work our way in from the outside to the inside.
      limit = limits.pop(-1)
      if len(limit) == 3:
          x, a, b = limit
      elif len(limit) == 2:
          x, b = limit
          a = None
      else:
          a = b = None
          x = limit[0]
  
      if limits:  # f is the argument to an integral
          f = self.func(f, *tuple(limits))
  
      # assemble the pieces
      def _do(f, ab):
          dab_dsym = diff(ab, sym)
          if not dab_dsym:
              return S.Zero
          if isinstance(f, Integral):
              limits = [
                  (x, x) if (len(l) == 1 and l[0] == x) else l
                  for l in f.limits
              ]
              f = self.func(f.function, *limits)
          return f.subs(x, ab) * dab_dsym
  
      rv = S.Zero
      if b is not None:
          rv += _do(f, b)
      if a is not None:
          rv -= _do(f, a)
      if len(limit) == 1 and sym == x:
          # the dummy variable *is* also the real-world variable
          arg = f
          rv += arg
      else:
          # the dummy variable might match sym but it's
          # only a dummy and the actual variable is determined
          # by the limits, so mask off the variable of integration
          # while differentiating
          u = Dummy("u")
          arg = f.subs(x, u).diff(sym).subs(u, x)
          if arg:
              rv += self.func(arg, (x, a, b))
      return rv
  
imports: from typing import Tuple
  from sympy.concrete.expr_with_limits import AddWithLimits
  from sympy.core.add import Add
  from sympy.core.basic import Basic
  from sympy.core.containers import Tuple
  from sympy.core.expr import Expr
  from sympy.core.exprtools import factor_terms
  from sympy.core.function import diff
  from sympy.core.logic import fuzzy_bool
  from sympy.core.mul import Mul
  from sympy.core.numbers import oo, pi
  from sympy.core.relational import Ne
  from sympy.core.singleton import S
  from sympy.core.symbol import Dummy, Symbol, Wild
  from sympy.core.sympify import sympify
  from sympy.functions import Piecewise, sqrt, piecewise_fold, tan, cot, atan
  from sympy.functions.elementary.exponential import log
  from sympy.functions.elementary.integers import floor
  from sympy.functions.elementary.complexes import Abs, sign
  from sympy.functions.elementary.miscellaneous import Min, Max
  from sympy.functions.special.singularity_functions import Heaviside
  from .rationaltools import ratint
  from sympy.matrices import MatrixBase
  from sympy.polys import Poly, PolynomialError
  from sympy.series.formal import FormalPowerSeries
  from sympy.series.limits import limit
  from sympy.series.order import Order
  from sympy.tensor.functions import shape
  from sympy.utilities.exceptions import sympy_deprecation_warning
  from sympy.utilities.iterables import is_sequence
  from sympy.utilities.misc import filldedent
  from .deltafunctions import deltaintegrate
  from .meijerint import meijerint_definite, meijerint_indefinite, _debug
  from .trigonometry import trigintegrate
label_desc: Use image node_id 7 for calling the Integral obj's underlying member method code with example usage: obj._eval_derivative(sym) and returns: rv, unknown, S