{-@ LIQUID "--higherorder" @-} module FunctionAbstraction where {-@ fib :: n:Nat -> Nat @-} {-@ reflect fib @-} fib :: Int -> Int fib n | n == 0 = 0 | n == 1 = 1 | otherwise = fib (n-1) + fib (n-2) {-@ goo :: Nat -> Nat @-} goo :: Int -> Int goo x = fib x