'This function should only be used internally
See Set._intersect for docstring'

def _intersect(self, other):

    if (not other.is_ProductSet):
        return None
    if (len(other.args) != len(self.args)):
        return S.EmptySet
    return ProductSet((a.intersect(b) for (a, b) in zip(self.sets, other.sets)))
