def finishes_inv(epsilon=0):
    """Returns a function that computes whether a temporal interval has the
    same end time as another interval (+/- epsilon), and starts after it.
    This is the inverse of the ``finishes`` predicate; it checks whether the
    second interval finishes the first interval.

    The output function expects two temporal intervals (dicts with keys 't1'
    and 't2' for the start and end times, respectively). It returns ``True`` if
    the second interval ends at the same time as the first interval (+/-
    ``epsilon``), and the second interval starts after the first interval.

    Args:
        epsilon: The maximum difference between the end time of the second
            interval and the end time of the first interval.

    Returns:
        An output function that takes two temporal intervals and returns
        ``True`` if the second interval ends at the same time as the first
        interval, and starts after the first interval starts.
    """
    return lambda intrvl1, intrvl2: abs(intrvl1['t2'] - intrvl2['t2']
        ) <= epsilon and intrvl2['t1'] > intrvl1['t1']
