module Fixme () where import Language.Haskell.Liquid.Prelude (liquidAssert) data Vec a = V a deriving (Eq) -- this is verified ... {-@ bar :: x:Int -> y:{v: Int | v = x } -> Int @-} bar :: Int -> Int -> Int bar x y = liquidAssert (x == y) 0 -- and so is this... {-@ goo :: x:[Int] -> y:{v: [Int] | v = x } -> Int @-} goo :: [Int] -> [Int] -> Int goo x y = liquidAssert (x == y) 0 -- BUT THIS IS NOT!! {-@ foo :: x: (Vec Int) -> y:{v: Vec Int | v = x } -> Int @-} foo :: Vec Int -> Vec Int -> Int foo x y = liquidAssert (x == y) 0