code: def array_equal(a1, a2):
      """
      True if two tensors have the same shape and elements, False otherwise.
  
      Parameters
      ----------
      a1, a2 : array_like
          Input arrays.
  
      Returns
      -------
      b : bool
          Returns True if the tensors are equal.
  
      See Also
      --------
      allclose: Returns True if two tensors are element-wise equal within a
                tolerance.
      array_equiv: Returns True if input tensors are shape consistent and all
                   elements equal.
  
      Examples
      --------
      >>> import mars.tensor as mt
  
      >>> mt.array_equal([1, 2], [1, 2]).execute()
      True
      >>> mt.array_equal(mt.array([1, 2]), mt.array([1, 2])).execute()
      True
      >>> mt.array_equal([1, 2], [1, 2, 3]).execute()
      False
      >>> mt.array_equal([1, 2], [1, 4]).execute()
      False
  
      """
      from ..datasource import tensor as astensor
      from ..datasource.scalar import scalar
      from .all import all
  
      try:
          a1, a2 = astensor(a1), astensor(a2)
      except Exception:
          return scalar(False)
  
      if a1.shape != a2.shape:
          return scalar(False)
      return all(astensor(a1 == a2))
  
label_desc: Use image node_id 1 for calling a global function with example usage: array_equal(a1, a2) and returns: all, scalar, scalar