liquidhaskell-0.7.0.0: tests/pos/wrap0.hs
module Wrap0 () where
import Language.Haskell.Liquid.Prelude (liquidError, liquidAssertB)
data Foo a = F a
type IntFoo = Foo Int
{-@ assert flibberty :: (Eq a) => a -> Bool @-}
flibberty x = prop x (F x)
prop x (F y) = liquidAssertB (x == y)
{-@ assert flibInt :: (Num a, Ord a) => a -> Bool @-}
flibInt x = prop1 x (F (x + 1))
prop1 x (F y) = liquidAssertB (x < y)
{-@ assert flibXs :: a -> Bool @-}
flibXs x = prop2 (F [x, x, x])
prop2 (F []) = liquidError "not-the-hippopotamus"
prop2 (F _ ) = True