
-- https://github.com/ucsd-progsys/liquidhaskell/issues/1258

{-@ LIQUID "--reflection"  @-}
{-@ LIQUID "--short-names" @-}

module T1258 where 

import Language.Haskell.Liquid.ProofCombinators 

data Foo = A | B
data Bar = C | D
data Baz = E | F | G 

{-@ reflect f @-}
f :: Foo -> Bar -> Baz
f B C = F
f A D = E
f _ _ = G 

{-@ reflect g @-}
g :: Foo -> Bar 
g A = C 
g _ = D 

test = f B (g A) === f A D *** QED  