module Foo where import Language.Haskell.Liquid.Prelude prop :: Bool prop = undefined {-@ app :: forall

Prop, q :: a -> Prop>. {x:a -> a

-> {v:a | v <= x}} {a -> a

} Num a => (a

-> b) -> a -> b @-} app :: Num a => (a -> b) -> a -> b app f x = if prop then app f (x+1) else f x {-@ check :: Ord a => x:a -> {v:a | x <= v} -> () @-} check :: Ord a => a -> a -> () check x y | x <= y = () | otherwise = liquidError "" main i = app (check i) i