liquidhaskell-0.8.0.2: tests/errors/DupAlias.hs
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