code: def _gap(src_interval, tar_interval):
          
          assert src_interval.bits == tar_interval.bits, "Number of bits should be same for operands"
          # use the same variable names as in paper
          s = src_interval
          t = tar_interval
          (_, b) = (s.lower_bound, s.upper_bound)
          (c, _) = (t.lower_bound, t.upper_bound)
  
          w = s.bits
          # case 1
          if (not t._surrounds_member(b)) and (not s._surrounds_member(c)):
              #FIXME: maybe we can do better here and to not fix the stride to 1
              #FIXME: found the first common integer for more precision
              return StridedInterval(lower_bound=c, upper_bound=b, bits=w, stride=1).complement
          # otherwise
          return StridedInterval.empty(w)
docs: Refer section 3.1; gap function.
  
          :param src_interval: first argument or interval 1
          :param tar_interval: second argument or interval 2
          :return: Interval representing gap between two intervals