{-@ LIQUID "--ple"        @-}
{-@ LIQUID "--reflection" @-}
{-@ LIQUID "--extensionality" @-}

module T1560 where 

k :: a -> b -> b
k _ b = b

{-@ reflect f @-}
f :: Int -> Int
f x = x + 1

{-@ reflect g @-}
g :: Int -> Int -> Int
g x = f

{-@ fgeqxy :: x:Int -> y:Int -> {f y = g x y} @-}
fgeqxy :: Int -> Int -> ()
fgeqxy x y = g x y `k` f y `k` ()

{-@ fgeqx :: x:Int -> {f = g x} @-}
fgeqx :: Int -> ()
fgeqx x = f `k` g x `k` ()
