Handbook of theoretical computer science (vol. B)
Semantics of programming languages: structures and techniques
Semantics of programming languages: structures and techniques
A Practical Approach to Programming With Assertions
IEEE Transactions on Software Engineering
Handbook of logic in computer science (vol. 3)
A technique for software module specification with examples
Communications of the ACM
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Computer
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Sound and complete models of contracts
Journal of Functional Programming
A simple rewrite notion for call-time choice semantics
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Static contract checking for Haskell
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A pattern logic for prompt lazy assertions in Haskell
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Monadic, prompt lazy assertions in Haskell
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Typed contracts for functional programming
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Contracts as pairs of projections
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
The interaction of contracts and laziness
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Practical typed lazy contracts
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.01 |
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.