
{-# LANGUAGE QuasiQuotes #-}


import LiquidHaskell


{-@ 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
