<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def verify_duplicates(duplicates, uniques):
 """Verify that a set of intersections had expected duplicates. .. note:: This is a helper used only by :func:`generic_intersect`. Args: duplicates (List[.Intersection]):
 List of intersections corresponding to duplicates that were filtered out. uniques (List[.Intersection]):
 List of "final" intersections with duplicates filtered out. Raises: ValueError: If the ``uniques`` are not actually all unique. ValueError: If one of the ``duplicates`` does not correspond to an intersection in ``uniques``. ValueError: If a duplicate occurs only once but does not have exactly one of ``s`` and ``t`` equal to ``0.0``. ValueError: If a duplicate occurs three times but does not have exactly both ``s == t == 0.0``. ValueError: If a duplicate occurs a number other than one or three times. """

    for uniq1, uniq2 in itertools.combinations(uniques, 2):
        if same_intersection(uniq1, uniq2):
            raise ValueError("Non-unique intersection")

    counter = collections.Counter()
    for dupe in duplicates:
        matches = []
        for index, uniq in enumerate(uniques):
            if same_intersection(dupe, uniq):
                matches.append(index)
        if len(matches) != 1:
            raise ValueError("Duplicate not among uniques", dupe)

        matched = matches[0]
        counter[matched] += 1
    for index, count in six.iteritems(counter):
        uniq = uniques[index]
        if count == 1:
            if (uniq.s, uniq.t).count(0.0) != 1:
                raise ValueError("Count == 1 should be a single corner", uniq)

        elif count == 3:
            if (uniq.s, uniq.t) != (0.0, 0.0):
                raise ValueError("Count == 3 should be a double corner", uniq)

        else:
            raise ValueError("Unexpected duplicate count", count)