packages feed

liquidhaskell-0.8.10.7: tests/todo/T1189.hs


{-# LANGUAGE GADTs #-}

{-@ LIQUID "--exact-data-con" @-}
{-@ LIQUID "--higherorder"    @-}
{-@ LIQUID "--ple"            @-}

module Ev where

data Peano where
  Z :: Peano

{-@ reflect plus @-}
plus :: Peano -> Peano -> Peano
plus Z Z = Z

data EvProp where
  Ev :: Peano -> EvProp

data Ev where
  EZ  :: Ev

{-@ data Ev where
      EZ  :: Prop (Ev Z)
  @-}

{-@ ev_sum :: n:Peano -> Prop (Ev n) -> Prop (Ev (plus n n)) @-}
ev_sum :: Peano -> Ev -> Ev
ev_sum Z pf = pf

--------------------------------------------------------------------------------
-- | Syntactic sugar for prelude -----------------------------------------------
--------------------------------------------------------------------------------
{-@ measure prop :: a -> b           @-}
{-@ type Prop E = {v:_ | prop v = E} @-}