Haskell has many delightful features. Perhaps the one most beloved by its users is its type system that allows developers to specify and verify a variety of program properties at compile time. However, many properties, typically those that depend on relationships be-tween program values are impossible, or at the very least, cumber-some to encode within the existing type system. Many such prop-erties can be verified using a combination of Refinement Types and external SMT solvers. We describe the refinement type checker LIQUIDHASKELL, which we have used to specify and verify a variety of properties of over 10,000 lines of Haskell code from various popular libraries, including containers, hscolour, bytestring, text, vector-algorithms and xmon...
Because every aspect of our lives is now inexorably dependent on software, it is crucial that the so...
Abstract: Refactoring is a technique for improving the design of existing pro-grams without changing...
Ensuring correctness of real-world software applications is a challenging task. Testing can be used ...
Code deficiencies and bugs constitute an unavoidable part of software systems. In safety-critical sy...
SMT-based checking of refinement types for call-by-value lan-guages is a well-studied subject. Unfor...
International audienceRefinement types allow for lightweight program verification by enriching types...
Because of our increasing dependence on software in every aspect of our lives, it is crucial that ou...
Liquid Haskell is an extension to the type system of Haskell that supports formal reasoning about pr...
Abstract. We present a new technique called type targeted testing, which trans-lates precise refinem...
The use of typed intermediate languages can significantly increase the reliability of a compiler. By...
We propose a method for improving confidence in the correctness of Haskell programs by combining tes...
Graduation date: 2009Ensuring correctness of real-world software applications is a challenging task....
AbstractPlover is an automated property-verifier for Haskell programs that has been under developmen...
Modern programs in languages like Haskell include a lot of information beyond what is strictly requi...
In this paper we present a method for verifying Yhc bytecode, an intermediate form of Haskell suitab...
Because every aspect of our lives is now inexorably dependent on software, it is crucial that the so...
Abstract: Refactoring is a technique for improving the design of existing pro-grams without changing...
Ensuring correctness of real-world software applications is a challenging task. Testing can be used ...
Code deficiencies and bugs constitute an unavoidable part of software systems. In safety-critical sy...
SMT-based checking of refinement types for call-by-value lan-guages is a well-studied subject. Unfor...
International audienceRefinement types allow for lightweight program verification by enriching types...
Because of our increasing dependence on software in every aspect of our lives, it is crucial that ou...
Liquid Haskell is an extension to the type system of Haskell that supports formal reasoning about pr...
Abstract. We present a new technique called type targeted testing, which trans-lates precise refinem...
The use of typed intermediate languages can significantly increase the reliability of a compiler. By...
We propose a method for improving confidence in the correctness of Haskell programs by combining tes...
Graduation date: 2009Ensuring correctness of real-world software applications is a challenging task....
AbstractPlover is an automated property-verifier for Haskell programs that has been under developmen...
Modern programs in languages like Haskell include a lot of information beyond what is strictly requi...
In this paper we present a method for verifying Yhc bytecode, an intermediate form of Haskell suitab...
Because every aspect of our lives is now inexorably dependent on software, it is crucial that the so...
Abstract: Refactoring is a technique for improving the design of existing pro-grams without changing...
Ensuring correctness of real-world software applications is a challenging task. Testing can be used ...