packages feed

liquidhaskell-0.4.0.0: tests/pos/deptup.hs

module Deptup0 () where

import Language.Haskell.Liquid.Prelude

{-@ data Pair a b <p :: x0:a -> x1:b -> Prop> = P (x :: a) (y :: b<p x>) @-} 
data Pair a b = P a b


{-- TODO: mkP :: forall a b <p :: a -> b -> Prop>. x: a -> y: b<p x> -> Pair <p> a b  --}

mkP :: a -> a -> Pair a a 
mkP x y = P x y

incr x = x + 1

baz x  = mkP x (incr x)

chk (P x y) = liquidAssertB (x < y)

prop = chk $ baz n
  where n = choose 100

bazList  xs = map baz xs

n           = choose 0

xs          = [0,1,2,3,4]

prop_baz    = map chk $ bazList xs