{-@ LIQUID "--higherorder" @-} module Reductions where {-@ reduction :: forall

Bool -> Bool>. f:(a -> a) -> (x:a -> Bool

) -> y:a -> Bool

@-} reduction :: (a -> a) -> (a -> Bool) -> a -> Bool reduction f thm y = thm (f y)