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

module T1560 where 

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

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

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

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

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

{-@ fgeq :: {f = g} @-}
fgeq :: ()
fgeq = f `k` g `k` ()
