code: def curl(vect, frame):
      """
      Returns the curl of a vector field computed wrt the coordinate
      symbols of the given frame.
  
      Parameters
      ==========
  
      vect : Vector
          The vector operand
  
      frame : ReferenceFrame
          The reference frame to calculate the curl in
  
      Examples
      ========
  
      >>> from sympy.physics.vector import ReferenceFrame
      >>> from sympy.physics.vector import curl
      >>> R = ReferenceFrame('R')
      >>> v1 = R[1]*R[2]*R.x + R[0]*R[2]*R.y + R[0]*R[1]*R.z
      >>> curl(v1, R)
      0
      >>> v2 = R[0]*R[1]*R[2]*R.x
      >>> curl(v2, R)
      R_x*R_y*R.y - R_x*R_z*R.z
  
      """
  
      _check_vector(vect)
      if vect == 0:
          return Vector(0)
      vect = express(vect, frame, variables=True)
      # A mechanical approach to avoid looping overheads
      vectx = vect.dot(frame.x)
      vecty = vect.dot(frame.y)
      vectz = vect.dot(frame.z)
      outvec = Vector(0)
      outvec += (
          diff(vectz, frame[1]) - diff(vecty, frame[2])
      ) * frame.x
      outvec += (
          diff(vectx, frame[2]) - diff(vectz, frame[0])
      ) * frame.y
      outvec += (
          diff(vecty, frame[0]) - diff(vectx, frame[1])
      ) * frame.z
      return outvec
  
file_path: sympy/sympy/physics/vector/fieldfunctions.py
imports: from sympy.core.function import diff
  from sympy.core.singleton import S
  from sympy.integrals.integrals import integrate
  from sympy.physics.vector import Vector, express
  from sympy.physics.vector.frame import _check_frame
  from sympy.physics.vector.vector import _check_vector
label_desc: Use image node_id 1 for calling a global function with example usage: curl(vect, frame) and returns: outvec, Vector