Even well-typed programs can go wrong in modern functional languages, by encountering a pattern-match failure, or simply returning the wrong answer. An increasingly-popular response is to allow programmers to write contracts that express semantic properties, such as crash-freedom or some useful post-condition. We study the static verification of such contracts. Our main contribution is a novel translation to first-order logic of both Haskell programs, and contracts written in Haskell, all justified by denotational semantics. This translation enables us to prove that functions satisfy their contracts using an off-the-shelf first-order logic theorem prover
Abstract. Codatatypes are absent from many programming languages and proof assistants. We make a cas...
We present two tools which together allow reasoning about (a sub-stantial subset of) Haskell program...
textabstractThe purpose of this book is to teach logic and mathematical reasoning in practice, and ...
Even well-typed programs can go wrong in modern functional languages, by encountering a pattern-matc...
Even well-typed programs can go wrong in modern functional languages, by encountering a pattern-matc...
Program errors are hard to detect and are costly, to both programmers who spend sig-nificant efforts...
Abstract. We enrich the static semantics of Haskell in order to give stronger static guarantees abou...
Program errors are hard to detect and are costly both to programmers who spend significant efforts i...
Program errors are hard to detect and are costly both to programmers who spend significant efforts i...
Code deficiencies and bugs constitute an unavoidable part of software systems. In safety-critical sy...
The structured approach to argumentation has seen a surge of models, introducing a multitude of ways...
Abstract. A robust software component fulfills a contract: it expects data satisfying a certain prop...
A fully abstract denotational semantics for logic programming has not been constructed yet. In this ...
AbstractPlover is an automated property-verifier for Haskell programs that has been under developmen...
Formal description of a language gives insight into the language itself. The formal description may ...
Abstract. Codatatypes are absent from many programming languages and proof assistants. We make a cas...
We present two tools which together allow reasoning about (a sub-stantial subset of) Haskell program...
textabstractThe purpose of this book is to teach logic and mathematical reasoning in practice, and ...
Even well-typed programs can go wrong in modern functional languages, by encountering a pattern-matc...
Even well-typed programs can go wrong in modern functional languages, by encountering a pattern-matc...
Program errors are hard to detect and are costly, to both programmers who spend sig-nificant efforts...
Abstract. We enrich the static semantics of Haskell in order to give stronger static guarantees abou...
Program errors are hard to detect and are costly both to programmers who spend significant efforts i...
Program errors are hard to detect and are costly both to programmers who spend significant efforts i...
Code deficiencies and bugs constitute an unavoidable part of software systems. In safety-critical sy...
The structured approach to argumentation has seen a surge of models, introducing a multitude of ways...
Abstract. A robust software component fulfills a contract: it expects data satisfying a certain prop...
A fully abstract denotational semantics for logic programming has not been constructed yet. In this ...
AbstractPlover is an automated property-verifier for Haskell programs that has been under developmen...
Formal description of a language gives insight into the language itself. The formal description may ...
Abstract. Codatatypes are absent from many programming languages and proof assistants. We make a cas...
We present two tools which together allow reasoning about (a sub-stantial subset of) Haskell program...
textabstractThe purpose of this book is to teach logic and mathematical reasoning in practice, and ...