module Goo () where

import Language.Haskell.Liquid.Prelude

{-@ type BoundedNat N = {v:Nat | v < N } @-}
{-@ predicate Foo V N = V < N            @-}

-- TODO: Test fails when this second alias is ALSO defined.
-- FIX: should WARN that there are duplicate aliases!

{-@ type BoundedNat N = {v:Nat | v <= N } @-}
{-@ predicate Foo V N = V <= N            @-}


{-@ foo :: n:Int -> m:(BoundedNat n) -> Nat @-}
foo :: Int -> Int -> Int
foo n m = liquidAssert (m < n) m
