packages feed

liquidhaskell-0.9.0.2.1: tests/pos/T1555.hs

{-@ LIQUID "--reflection" @-}
{-@ LIQUID "--rankNTypes" @-}
{-# LANGUAGE RankNTypes   #-}

module T1555 where

import Language.Haskell.Liquid.Equational 

type ForAll a  = forall z. a
data Wrapper a = Wrapper (ForAll a)
 
foo :: ForAll a -> ForAll a  -> Proof
{-@ foo :: ff:ForAll a -> gg:{ForAll a | ff == gg } -> { Wrapper ff == Wrapper gg } @-} 
foo g f = Wrapper g ==. Wrapper f *** QED