However, the refinement still succeeds and the above module type-checks. Vector.slice is ambiguous because it could refer to either Data.Vector.slice or Data.Vector.Mutable.slice, although only one of them has the correct type to refine to the given type. Perhaps Liquid Haskell infers which one to refine that way.

However, if you import the above module from another module, like this: