liquidhaskell-0.8.0.2: tests/todo/maps.hs
module Maps where
import Prelude hiding (lookup)
import Data.Map
{-@ prop0 :: _ -> x:_ -> y:{_ | y == x} -> TT @-}
prop0 :: Map Int Int -> Int -> Int -> Bool
prop0 m x y = (a == b)
where
a = m ! x
b = m ! y
{-@ prop1 :: _ -> x:_ -> y:{_ | y /= x} -> TT @-}
prop1 :: Map Int Int -> Int -> Int -> Bool
prop1 m x y = (z == 10)
where
m1 = insert x 10 m
m2 = insert y 20 m1
z = m2 ! x
{-@ prop2 :: _ -> x:_ -> y:{_ | y == x} -> TT @-}
prop2 m x y = (z == 20)
where
m1 = insert x 10 m
m2 = insert y 20 m1
z = m2 ! x
-----------------------------------------------------------------------
{-@ embed Map as Map_t @-}
{-@ measure Map_select :: Map k v -> k -> v @-}
{-@ measure Map_store :: Map k v -> k -> v -> Map k v @-}
{-@ assume (!) :: (Ord k) => m:Map k v -> k:k -> {v:v | v = Map_select m k} @-}
{-@ assume insert :: (Ord k) => key:k -> value:v -> m:Map k v -> {n:Map k v | n = Map_store m key value} @-}
-----------------------------------------------------------------------