HALO: Haskell to logic through denotational semantics
Paper in proceeding, 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.

static contract checking

first-order logic

Author

Dimitrios Vytiniotis

Microsoft Research Cambridge

Simon L. Peyton-Jones

Microsoft Research Cambridge

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
978-1-4503-1832-7 (ISBN)

Subject Categories (SSIF 2011)

Software Engineering

DOI

10.1145/2429069.2429121

ISBN

978-1-4503-1832-7

More information

Created

10/8/2017