|
ABSTRACT
Program errors are hard to detect and are costly both to programmers who spend significant efforts in debugging, and to systems that are guarded by runtime checks. Extended static checking can reduce these costs by helping to detect bugs at compile-time, where possible. Extended static checking has been applied to objectoriented languages, like Java and C#, but it has not been applied to a lazy functional language, like Haskell. In this paper, we describe an extended static checking tool for Haskell, named ESC/Haskell, that is based on symbolic computation and assisted by a few novel strategies. One novelty is our use of Haskell as the specification language itself for pre/post conditions. Any Haskell function (including recursive and higher order functions) can be used in our specification which allows sophisticated properties to be expressed. To perform automatic verification, we rely on a novel technique based on symbolic computation that is augmented by counter-example guided unrolling. This technique can automate our verification process and be efficiently implemented.
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
|
|
| |
3
|
Mike Barnett, K. Rustan M. Leino, and Wolfram Schulte. The Spec# programming system: An overview. CASSIS, LNCS 3362, 2004.
|
| |
4
|
Koen Claessen and John Hughes. Specification-based testing with QuickCheck, volume Fun of Programming of Cornerstones of Computing, chapter 2, pages 17--40. Palgrave, March 2003.
|
 |
5
|
|
| |
6
|
|
 |
7
|
|
 |
8
|
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
|
 |
9
|
|
| |
10
|
Thomas A. Henzinger, Ranjit Jhala, and Rupak Majumdar. Counterexample-guided control. Automata, Languages and Programming: 30th International Colloquium, (ICALP03), 2719:886--902, 2003.
|
| |
11
|
Ralf Hinze, Johan Jeuring, and Andres Löh. Typed contracts for functional programming. In FLOPS '06: Functional and Logic Programming: 8th International Symposium, pages 208--225, 2006.
|
 |
12
|
|
| |
13
|
James Hook, Mark Jones, Richard Kieburtz, John Matthews, Peter White, Thomas Hallgren, and Iavor Diatchki. Programatica. http://www.cse.ogi.edu/PacSoft/projects/programatica/bodynew.htm, 2005.
|
| |
14
|
|
| |
15
|
Neil Mitchell and Colin Runciman. Unfailing Haskell: A static checker for pattern matching. In TFP '05: The 6th Symposium on Trends in Functional Programming, pages 313--328, 2005.
|
 |
16
|
|
| |
17
|
|
 |
18
|
|
| |
19
|
The GHC Team. The Glasgow Haskell Compiler User's Guide. www.haskell.org/ghc/documentation.html, 1998.
|
 |
20
|
|
| |
21
|
Dana N. Xu. Extended static checking for Haskell - technical report. http://www.cl.cam.ac.uk/users/nx200/research/escH-tr.ps, 2006.
|
|