--Two finite tensors case
zipWith' f (FiniteTensor index1 v1) (FiniteTensor index2 v2)     = 
    if index1 == index2 then 
        FiniteTensor index1 $ Boxed.zipWith (Multilinear.Generic.MultiCore.zipWith f) v1 v2 
    else zipErr "finite-finite" (Index.toTIndex index1) (Index.toTIndex index2)
zipWith' f (FiniteTensor index1 v1) (FiniteTensor index2 v2)     = 
    if index1 == index2 then 
        FiniteTensor index1 $ Boxed.zipWith (Multilinear.Generic.MultiCore.zipWith f) v1 v2 
    else zipErr "finite-finite" (Index.toTIndex index1) (Index.toTIndex index2)
zipWith' f (FiniteTensor index1 v1) (FiniteTensor index2 v2)     = 
    if index1 == index2 then 
        FiniteTensor index1 $ Boxed.zipWith (Multilinear.Generic.MultiCore.zipWith f) v1 v2 
    else zipErr "finite-finite" (Index.toTIndex index1) (Index.toTIndex index2)