HALO: Haskell to Logic through Denotational Semantics
Journal article, 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

languages

verification

Author

D. Vytiniotis

Microsoft Research

S. P. 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)

SIGPLAN Notices (ACM Special Interest Group on Programming Languages)

0362-1340 (ISSN)

Vol. 48 1 431-442

Subject Categories

Software Engineering

DOI

10.1145/2480359.2429121

More information

Latest update

9/6/2018 1