def symmetric_difference(other)
      if other.is_a?(RelativeComplement)
        # ¬A ⊖ ¬B = (¬A ∖ ¬B) ∪ (¬B ∖ ¬A)
        #         =  (B ∖ A)  ∪ (A ∖ B)
        #         = A ⊖ B
        complement.symmetric_difference(other.complement)
      else
        # ¬A ⊖ B = (¬A ∖ B)  ∪ (B ∖ ¬A)
        #        = (¬A ∩ ¬B) ∪ (B ∩ A)
        #        = (¬B ∖ A)  ∪ (A ∖ ¬B)
        #        = A ⊖ ¬B
        other = Cantor.build(other)

        intersection(other.complement).
          union(other.intersection(complement))
      end
    end
def symmetric_difference(other)
      if other.is_a?(RelativeComplement)
        # ¬A ⊖ ¬B = (¬A ∖ ¬B) ∪ (¬B ∖ ¬A)
        #         =  (B ∖ A)  ∪ (A ∖ B)
        #         = A ⊖ B
        complement.symmetric_difference(other.complement)
      else
        # ¬A ⊖ B = (¬A ∖ B)  ∪ (B ∖ ¬A)
        #        = (¬A ∩ ¬B) ∪ (B ∩ A)
        #        = (¬B ∖ A)  ∪ (A ∖ ¬B)
        #        = A ⊖ ¬B
        other = Cantor.build(other)

        intersection(other.complement).
          union(other.intersection(complement))
      end
    end
(see AbstractSet#symmetric_difference)