{-@ LIQUID "--no-totality" @-} {-@ LIQUID "--short-names" @-} module Elim where data Pair a b = PP a b | Emp data Foo = Foo { xx :: Int, yy :: Int } {-@ data Foo = Foo {xx :: Int, yy :: {v:Int | xx < v} } @-} foo :: Foo -> Foo foo (Foo xig yog) = Foo wink cow where PP wink cow = PP xig yog