'Returns the union of self and o
for use with sympy.sets.Set, if possible.'

def _union(self, o):

    from sympy.sets import Union, FiniteSet
    if o.is_FiniteSet:
        other_points = [p for p in o if (not self._contains(p))]
        if (len(other_points) == len(o)):
            return None
        return Union(self, FiniteSet(*other_points))
    if self._contains(o):
        return self
    return None
