foo = go
  where
    {-@ go :: xs:[a] -> {v:[a] | (len v) > (len xs)} @-}
    go []     = []
    go (x:xs) = x : go xs
foo = go
  where
    {-@ go :: xs:[a] -> {v:[a] | (len v) > (len xs)} @-}
    go []     = []
    go (x:xs) = x : go xs
foo = go
  where
    {-@ go :: xs:[a] -> {v:[a] | (len v) > (len xs)} @-}
    go []     = []
    go (x:xs) = x : go xs