School of Computing

A semantics for lazy assertions

Olaf Chitil

In Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation, PEPM 2011, pages 182-196. ACM, January 2011 [doi].

Abstract

Lazy functional programming languages need lazy assertions to ensure that assertions preserve the meaning of programs. Examples in this paper demonstrate that previously proposed lazy assertions nonetheless break basic semantic equivalences, because they include a non-deterministic disjunction combinator. The objective of this paper is to determine "correct" definitions for lazy assertions. The starting point is our formalisation of basic properties such as laziness, taking them as axioms of our design space. We develop the first denotational semantics for lazy assertions; assertions denote subdomains. We define a weak disjunction combinator and together with a conjunction combinator assertions form a bounded distributive lattice. From the established laws we derive an efficient prototype implementation of lazy assertions for Haskell as a library.

Download publication 195 kbytes (PDF)

Bibtex Record

@inproceedings{3093,
author = {Olaf Chitil},
title = {A semantics for lazy assertions},
month = {January},
year = {2011},
pages = {182-196},
keywords = {determinacy analysis, Craig interpolants},
note = {},
doi = {10.1145/1929501.1929527},
url = {http://www.cs.kent.ac.uk/pubs/2011/3093},
    publication_type = {inproceedings},
    submission_id = {21629_1300723517},
    ISBN = {978-1-4503-0485-6},
    booktitle = {Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation},
    series = {PEPM 2011},
    publisher = {ACM},
}

School of Computing, University of Kent, Canterbury, Kent, CT2 7NF

Enquiries: +44 (0)1227 824180 or contact us.

Last Updated: 21/03/2014