packages feed

liquidhaskell-0.9.0.2.1: tests/pos/Invlhs.hs

module Invlhs where

data Bob = B {foo :: Int}
{-@ data Bob = B {foo :: Int} @-}

{-@ foo :: x:Bob -> {v:Int | v = foo x} @-}

{-@ invariant {v:Bob | foo v == 10} @-}

mk :: a -> Bob
mk = undefined

{-@ propFAIL :: {v:_ | foo v = 10} @-}
propFAIL = mk ()

{-@ propOK :: {v:_ | foo v = 10} @-}
propOK = let z = mk () in z