
module ListZip where 

import Language.Haskell.Liquid.Synthesize.Error

{-@ zip' :: xs: [a] -> {ys:[b] | len ys == len xs} -> {v:[(a, b)] | len v == len xs} @-}
zip' :: [a] -> [b] -> [(a, b)]
zip' x_S0 x_S1 =
    case x_S0 of
        [] -> [], b)
        (:) x_Sl x_Sm ->
            case x_S1 of
                [] -> error " Dead code! "
                (:) x_S14 x_S15 -> (:), b) (x_Sl, x_S14) (zip' x_Sm x_S15)