Liquid Haskell is a
program verifier
In the context of hardware and software systems, formal verification is the act of Mathematical proof, proving or disproving the correctness (computer science), correctness of intended algorithms underlying a system with respect to a certain for ...
for the
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
Haskell
Haskell () is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming lan ...
which allows specifying correctness properties by using
refinement type
In type theory, a refinement type is a type endowed with a predicate which is assumed to hold for any element of the refined type. Refinement types can express preconditions when used as function arguments or postconditions when used as retur ...
s.
Properties are verified using a
satisfiability modulo theories
In computer science and mathematical logic, satisfiability modulo theories (SMT) is the problem of determining whether a mathematical formula is satisfiable. It generalizes the Boolean satisfiability problem (SAT) to more complex formulas involvin ...
(SMT) solver which is
SMTLIB2-compliant, such as the
Z3 Theorem Prover
Z3, also known as the Z3 Theorem Prover, is a cross-platform satisfiability modulo theories (SMT) solver by Microsoft.
Overview
Z3 was developed in the ''Research in Software Engineering'' (RiSE) group at Microsoft Research and is targeted at solv ...
.
See also
*
Formal verification
In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal met ...
References
*
*
Further reading
*
*
External links
*
*
Formal methods tools
Static program analysis tools
Type systems
Free software programmed in Haskell
Software using the BSD license
{{Free-software-stub