| Type-based data structure verification |
| Full text |
Pdf
(563 KB)
|
Source
|
Conference on Programming Language Design and Implementation
archive
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
table of contents
Dublin, Ireland
Pages 304-315
Year of Publication: 2009
ISBN:978-1-60558-392-1
Also published in ...
|
|
Authors
|
|
Ming Kawaguchi
|
University of California, San Diego, San Diego, CA, USA
|
|
Patrick Rondon
|
University of California, San Diego, San Diego, CA, USA
|
|
Ranjit Jhala
|
University of California, San Diego, San Diego, USA
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 33, Downloads (12 Months): 106, Citation Count: 1
|
|
|
ABSTRACT
We present a refinement type-based approach for the static verification of complex data structure invariants. Our approach is based on the observation that complex data structures are typically fashioned from two elements: recursion (e.g., lists and trees), and maps (e.g., arrays and hash tables). We introduce two novel type-based mechanisms targeted towards these elements: recursive refinements and polymorphic refinements. These mechanisms automate the challenging work of generalizing and instantiating rich universal invariants by piggybacking simple refinement predicates on top of types, and carefully dividing the labor of analysis between the type system and an SMT solver. Further, the mechanisms permit the use of the abstract interpretation framework of liquid type inference to automatically synthesize complex invariants from simple logical qualifiers, thereby almost completely automating the verification. We have implemented our approach in dsolve, which uses liquid types to verify ocaml programs. We present experiments that show that our type-based approach reduces the manual annotation required to verify complex properties like sortedness, balancedness, binary-search-ordering, and acyclicity by more than an order of magnitude.
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
|
|
| |
4
|
S. Cui, K. Donnelly, and H. Xi. Ats: A language that combines programming with theorem proving. In FroCos, 2005.
|
| |
5
|
Luca de Alfaro. Vec: Extensible, functional arrays for ocaml. http://www.dealfaro.com/vec.html.
|
| |
6
|
L. de Moura and N. Bjørner. Z3: An efficient smt solver. In TACAS, pages 337--340, 2008.
|
| |
7
|
Joshua Dunfield. A Unified System of Type Refinements. PhD thesis, Carnegie Mellon University, Pittsburgh, PA, USA, 2007.
|
| |
8
|
J.C. Filliâtre. Ocaml software. http://www.lri.fr/ filliatr/software.en.html.
|
 |
9
|
|
 |
10
|
|
 |
11
|
|
 |
12
|
|
 |
13
|
|
| |
14
|
|
| |
15
|
John McCarthy. Towards a mathematical science of computation. In IFIP Congress, pages 21--28, 1962.
|
| |
16
|
|
| |
17
|
A. Nanevski, G. Morrisett, A. Shinnar, P. Govereau, and L. Birkedal. Ynot: Reasoning with the awkward squad. In ICFP, 2008. C. Okasaki. Purely Functional Data Structures. CUP, 1999.
|
| |
18
|
|
| |
19
|
|
 |
20
|
|
 |
21
|
|
| |
22
|
H. Xi. DML code examples. http://www.cs.bu.edu/fac/hwxi/DML/.
|
 |
23
|
|
| |
24
|
Hongseok Yang , Oukseh Lee , Josh Berdine , Cristiano Calcagno , Byron Cook , Dino Distefano , Peter O'Hearn, Scalable Shape Analysis for Systems Code, Proceedings of the 20th international conference on Computer Aided Verification, July 07-14, 2008, Princeton, NJ, USA
[doi> 10.1007/978-3-540-70545-1_36]
|
 |
25
|
|
|