         }
     }
     
-    public static func * (r: K, f: LaurentPolynomial<K>) -> LaurentPolynomial<K> {
+    public static func * (r: R, f: LaurentPolynomial<R>) -> LaurentPolynomial<R> {
         return f.mapCoeffs { r * $0 }
     }
     
-    public static func * (f: LaurentPolynomial<K>, r: K) -> LaurentPolynomial<K> {
+    public static func * (f: LaurentPolynomial<R>, r: R) -> LaurentPolynomial<R> {
         return f.mapCoeffs { $0 * r }
     }
     

        return upperDegree - lowerDegree
    }
    
    public var inverse: LaurentPolynomial<K>? {
        if span == 0, let a = leadCoeff.inverse {
            return LaurentPolynomial(lowerDegree: -lowerDegree, coeffs: [a])
        } else {

    }
    
    public static var symbol: String {
        return "\(R.symbol)[x, x⁻¹]"
    }
    
    public var hashValue: Int {
