def merge(self, other):
        """
        We can merge unless the merge results in an empty set -- a
        contradiction
        """
        other = self.coerce(other)
        if self.is_equal(other):
            # pick among dependencies
            return self
        elif other.is_entailed_by(self):
            # other is a subset of self
            return self
        elif self.is_entailed_by(other):
            # self is a subset of other.
            self.values = other.values.copy()
        elif self.is_contradictory(other):
            raise Contradiction("Cannot merge set with %s" % (str(other)))
        else:
            # merge mutual information
            if self.values:
                self.values = self.values.intersection(other.values)
            else:
                self.values = other.values.copy()
        return self
def merge ( self , other ) : other = self . coerce ( other ) if self . is_equal ( other ) : return self elif other . is_entailed_by ( self ) : return self elif self . is_entailed_by ( other ) : self . values = other . values . copy ( ) elif self . is_contradictory ( other ) : raise Contradiction ( "Cannot merge set with %s" % ( str ( other ) ) ) else : if self . values : self . values = self . values . intersection ( other . values ) else : self . values = other . values . copy ( ) return self
We can merge unless the merge results in an empty set -- a
        contradiction