         return representative.description
     }
     
+    public static func == (a: Self, b: Self) -> Bool {
+        return isEquivalent(a.representative, b.representative)
+    }
+    
     public static var symbol: String {
         return "\(Base.symbol)/~"
     }
 }
-
-public extension SetType {
-    public func asQuotient<Q: _QuotientSet>(in: Q) -> Q where Self == Q.Base {
-        return Q(self)
-    }
-}

        self._2 = y
    }
    
    public var hashValue: Int {
        return (_1.hashValue &* 31) &+ _2.hashValue
    }

//
// see: https://github.com/apple/swift/blob/master/docs/GenericsManifesto.md#parameterized-extensions

public protocol _QuotientSet: SetType {
    associatedtype Base: SetType
    init (_ x: Base)
    var representative: Base { get }
