packages feed

liquidhaskell-0.8.10.7: tests/todo/T1551.hs

{-@ LIQUID "--reflection" @-}

module FunId where


{-@ funIdUnsafe :: g:(a -> b) -> { f:(a -> b) |  f == g } @-}
funIdUnsafe ::  (a -> b) -> (a -> b)
funIdUnsafe g = g ?? lemma ()

infixl 3 ??
(??) :: a -> b -> a 
x ?? _ = x 



{-@ funIdSafe :: g:(a -> b) -> { f:(a -> b) |  f == g } @-}
funIdSafe ::  (a -> b) -> (a -> b)
funIdSafe g = g ??? lemma ()

infixl 3 ???
(???) :: a -> b -> a 
{-@ (???) :: x:a -> b -> {v:a | v == x } @-}
x ??? _ = x 


lemma :: () -> () 
lemma _ = _