packages feed

liquidhaskell-0.8.6.0: tests/pos/T819A.hs

{-@ LIQUID "--reflection"     @-}
{-@ LIQUID "--no-termination" @-}


import Language.Haskell.Liquid.ProofCombinators 
import Prelude hiding ((++))

data List a = Emp 

{-@ infixr ++ @-}

{-@ reflect ++ @-}
Emp ++ ys = ys

{-@ assocPf :: xs:_ -> ys:_  -> { (xs ++ ys) == ys  } @-}
assocPf :: List a -> List a  -> Proof 

assocPf Emp ys
  =   (Emp ++ ys) 
  === ys 
  *** QED