|
ABSTRACT
Program errors are hard to detect and are costly both to programmers who spend significant efforts in debugging, and for systems that are guarded by runtime checks. Static verification techniques have been applied to imperative and object-oriented languages, like Java and C#, but few have been applied to a higher-order lazy functional language, like Haskell. In this paper, we describe a sound and automatic static verification framework for Haskell, that is based on contracts and symbolic execution. Our approach is modular and gives precise blame assignments at compile-time in the presence of higher-order functions and laziness.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
| |
2
|
Mike Barnett, K. Rustan M. Leino, and Wolfram Schulte. The Spec# programming system: An overview. CASSIS, LNCS 3362, 2004.
|
| |
3
|
|
| |
4
|
L. Burdy, Y. Cheon, D. Cok, M. Ernst, J. Kiniry, G. Leavens, K. Leino, and E. Poll. An overview of JML tools and applications, 2003.
|
| |
5
|
Koen Claessen and John Hughes. Specification-based testing with QuickCheck. In Fun of Programming, Cornerstones of Computing, pages 17--40. Palgrave, March 2003.
|
| |
6
|
Sa Cui, Kevin Donnelly, and Hongwei Xi. ATS: A language that combines programming with theorem proving. In Bernhard Gramlich, editor, FroCos, volume 3717 of Lecture Notes in Computer Science, pages 310--320. Springer, 2005.
|
| |
7
|
|
| |
8
|
|
| |
9
|
R. B. Findler, M. Blume, and M. Felleisen. An investigation of contracts as projections. Technical report, University of Chicago Computer Science Department, 2006. Technical Report TR-2004-02.
|
| |
10
|
Robert Bruce Findler and Matthias Blume. Contracts as pairs of projections. In Functional and Logic Programming, pages 226--241. Springer Berlin / Heidelberg, 2006.
|
 |
11
|
|
 |
12
|
|
 |
13
|
Cormac Flanagan , K. Rustan M. Leino , Mark Lillibridge , Greg Nelson , James B. Saxe , Raymie Stata, Extended static checking for Java, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
 |
14
|
|
 |
15
|
|
| |
16
|
Jessica Gronski and Cormac Flanagan. Unifying hybrid types and contracts. In Eighth Symposium on Trends in Functional Programming, April 2007.
|
 |
17
|
|
| |
18
|
Ralf Hinze, Johan Jeuring, and Andres Löh. Typed contracts for functional programming. In Functional and Logic Programming: 8th International Symposium, pages 208--225, 2006.
|
 |
19
|
|
| |
20
|
Kenneth Knowles and Cormac Flanagan. Type reconstruction for general refinement types. In ESOP '07: Programming Languages and Systems, 16th European Symposium on Programming. Springer-Verlag, April 2007.
|
| |
21
|
Kenneth Knowles, Aaron Tomb, Jessica Gronski, Stephen N. Freund, and Cormac Flanagan. SAGE: Unified hybrid checking for first--class types, general refinement types, and dynamic (extended report). Technical report, UC Santa Cruz, 2006. http://sage.soe.ucsc.edu/sage-tr.pdf.
|
| |
22
|
|
| |
23
|
Philippe Meunier, Robert Bruce Findler, and Matthias Felleisen. Modular set-based analysis from contracts. In Morrisett and Peyton Jones {27}, pages 218--231.
|
| |
24
|
|
| |
25
|
Neil Mitchell. Transformation and Analysis of Functional Programs. PhD thesis, University of York, 2008.
|
 |
26
|
|
 |
27
|
|
| |
28
|
Aleksandar Nanevski, Amal Ahmed, Greg Morrisett, and Lars Birkedal. Abstract predicates and mutable ADTs in Hoare Type Theory. In Rocco De Nicola, editor, ESOP, volume 4421 of Lecture Notes in Computer Science, pages 189--204. Springer, 2007.
|
 |
29
|
|
 |
30
|
|
| |
31
|
|
 |
32
|
|
| |
33
|
The GHC Team. The Glasgow Haskell Compiler user's guide. www.haskell.org/ghc/documentation.html, 1998.
|
| |
34
|
J Visser, J. N. Oliveira, Barbosa L. S., J. F. Ferreira, and A. Mendes. CAMILA revival: VDM meets Haskell. In Nico Plat and Peter Gorm Larsen, editors, Overture Workshop (co-located with FM'05), 2005.
|
| |
35
|
Philip Wadler and Robert Bruce Findler. Well-typed programs can't be blamed. In Workshop on Scheme and Functional Programming, Sept 2007.
|
 |
36
|
|
 |
37
|
|
 |
38
|
|
| |
39
|
Na Xu. Static Contract Checking for Haskell. PhD thesis, University of Cambridge, 2008. http://www.cl.cam.ac.uk/techreports/.
|
|