code: def _(x, y):
      """
      Multiplications in interval arithmetic
      https://en.wikipedia.org/wiki/Interval_arithmetic
      """
      # TODO: some intervals containing 0 and oo will fail as 0*oo returns nan.
      comvals = (
          (x.start * y.start, bool(x.left_open or y.left_open)),
          (x.start * y.end, bool(x.left_open or y.right_open)),
          (x.end * y.start, bool(x.right_open or y.left_open)),
          (x.end * y.end, bool(x.right_open or y.right_open)),
      )
      # TODO: handle symbolic intervals
      minval, minopen = min(comvals)
      maxval, maxopen = max(comvals)
      return Interval(minval, maxval, minopen, maxopen)
  
file_path: sympy/sympy/sets/handlers/mul.py
imports: from sympy.core import Basic, Expr
  from sympy.core.numbers import oo
  from sympy.core.symbol import symbols
  from sympy.multipledispatch import Dispatcher
  from sympy.sets.setexpr import set_mul
  from sympy.sets.sets import Interval, Set
label_desc: Use image node_id 4 for calling a global function with example usage: _(x, y) and returns: Interval