packages feed

liquidhaskell-0.8.2.0: tests/todo/maybe0000.hs

module Foo where

data MaybeS a = NothingS | JustS a

-- crashes with : 
-- Fixpoint: Testing Solution 
-- z3Pred: error converting && [ (isJust(lq_anf__ddc) <=> false)
--                             ; (lq_anf__ddc = ds_dd9)
--                             ; (fromJustS([gloop#r9K]) = True#6u)
--                             ; (Bexp True#6u)
--                             ; (~ ((Bexp False#68)))]
--
-- Fatal error: exception Failure("Z3: type error")


myisJust :: Maybe a -> Bool
myisJust Nothing  = True
myisJust (Just x) = False

{-@ measure fromJustS :: MaybeS a -> a
    fromJustS (JustS x) = x 
  @-}

gloop :: MaybeS Bool
gloop = poop True

{- poop :: z:a -> {v: MaybeS a | fromJustS(v) = z} @-}
poop z = JustS z