Verification of Haskell Programs using Liquid Haskell
Formal Verification gives us the obvious benefits of reducing errors and an increased trues in the proven system. However, formal verification of programs are not common-place and are mostly reserved for some special use cases.
Liquid Haskell, a verifier for Haskell programs, tries to avoid these issues. With the use of refinement types and an SMT-solver, it tries to automate a lot of the verification.
In this thesis we investigated Liquid Haskell in two ways. Comparing it to the type level programming in Haskell, and also to verify properties of Finger trees.