{-@ LIQUID "--higherorder" @-} {-@ LIQUID "--ple" @-} module Fib0 where {-@ reflect fibExp @-} {-@ fibExp :: Nat -> Nat @-} fibExp :: Int -> Int fibExp n | n == 0 = 0 | n == 1 = 1 | otherwise = fibExp (n-2) + fibExp (n-1) -- 0 => 0 -- 1 => 1 -- 2 => 1 -- 3 => 2 {-@ test :: a -> { fibExp 3 == 2 } @-} test :: a -> () test _ = ()