packages feed

liquidhaskell-0.8.10.7: tests/names/pos/BasicLambdas01.hs

{-@ LIQUID "--reflection"      @-}

module Append where

import Prelude hiding (id)

import Language.Haskell.Liquid.ProofCombinators 


{-@ axiomatize id @-}
id :: a -> a
id x = x

{-@ fmap_id' 
     :: x:(r -> a)
     -> {v:Proof | (\roo:r -> id (x roo)) ==  (\moo:r -> (x moo) ) } @-}
fmap_id' :: (r -> a) ->  Proof
fmap_id' x
   =   fun_eq (\rrr1 -> x rrr1) (\rrr2 -> id (x rrr2)) (\r -> x  r === id (x r) *** QED)



{-@ fun_eq :: f:(a -> b) -> g:(a -> b) 
      -> (x:a -> {f x == g x}) -> {f == g} 
  @-}   
fun_eq :: (a -> b) -> (a -> b) -> (a -> Proof) -> Proof   
fun_eq = undefined