-- see https://github.com/ucsd-progsys/liquidhaskell/issues/1074
{-@ LIQUID "--bscope"         @-}

module Blank where

{-@ type Geq X = {v:Int | X <= v} @-}

{-@ thisOk :: x:Int -> y:{Int | y > 10}  -> () @-}
thisOk :: Int -> Int -> ()
thisOk = undefined

{-@ thisBad1 :: x:Int -> y:Geq y  -> () @-}
thisBad1 :: Int -> Int -> ()
thisBad1 = undefined

{-@ thisBad2 :: x:Int -> y:{y > 10}  -> () @-}
thisBad2 :: Int -> Int -> ()
thisBad2 = undefined

{-@ type NEList a = {xs:[a] | len xs > 0} @-}

{-@ the3 :: Eq a => xs:NEList {x:a | x == headP xs} -> {y:a | headP xs == y} @-}
the3 :: Eq a => [a] -> a
the3 = undefined

{-@ the1 :: Eq a => xs:NEList {x:a | x == headP xs} -> {y:a | headP xs == y} @-}
the1 :: Eq a => [a] -> a
the1 = undefined

{-@ the2 :: Eq a => xs:{v:[{x:a | x == headP xs}] | len v > 0} -> {y:a | headP xs == y} @-}
the2 :: Eq a => [a] -> a
the2 = undefined

{-@ measure headP :: a -> b @-}