 
 public protocol ScalarMultiplicative : AdditiveArithmetic {
     
-    associatedtype Scalar : ScalarMultiplicative where Scalar == Scalar.Scalar
+    associatedtype Scalar : ScalarProtocol
     
     static prefix func - (x: Self) -> Self
     

    static func *= (lhs: inout Self, rhs: Self)
}

public protocol MapReduceArithmetic : ScalarMultiplicative, Collection where Element : ScalarMultiplicative, Element.Scalar == Scalar {
    
    func map(_ transform: (Element) -> Element) -> Self
    

//  THE SOFTWARE.
//

public protocol ScalarProtocol: SignedNumeric, Strideable, ExpressibleByFloatLiteral, Multiplicative, ScalarMultiplicative where Self == Scalar {
    
    static func * (lhs: Self, rhs: Self) -> Self
    
