packages feed

liquidhaskell-0.4.0.0: tests/pos/ListRange.hs

module ListSort () where

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

import Language.Haskell.Liquid.Prelude

low, high :: Int
low  = choose 0
high = choose 10

range l h = 
  if l <= h then l:(range (l+1) h) else []

chk [] = liquidAssertB True
chk (x1:xs) = case xs of 
              []       -> liquidAssertB True
              (x2:xs2) -> liquidAssertB (x1 <= x2) && chk xs

prop = chk $ range low high