HALO: Haskell to logic through denotational semantics
Paper in proceedings, 2013

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.

first-order logic

static contract checking

Author

Dimitrios Vytiniotis

Microsoft Research

Simon L. Peyton-Jones

Microsoft Research

Dan Rosén

Chalmers, Computer Science and Engineering (Chalmers), Software Technology (Chalmers)

Koen Lindström Claessen

Chalmers, Computer Science and Engineering (Chalmers), Software Technology (Chalmers)

Conference Record of the Annual ACM Symposium on Principles of Programming Languages

0730-8566 (ISSN)

431-442

Subject Categories

Software Engineering

DOI

10.1145/2429069.2429121

ISBN

978-1-4503-1832-7

More information

Latest update

9/6/2018 1