def is_entailed_by(self, other):
        """
        Fewer members = more information (exception is empty set, which means
        all members of the domain)

         (1) when self is empty and others is not (equal to containing the
          entire domain)
         (2) when other contains more members than self
        
        """
        if not self.same_domain(other):
            return False
        
        if not other.values:
            if self.values:
                # None can never entail -None
                return False
            else:
                # None entails None
                return True
        
        return not self.values or self.values.issuperset(other.values)