ACM Home Page
Please provide us with feedback. Feedback
Type-based data structure verification
Full text PdfPdf (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
SESSION: Types table of contents
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
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 33,   Downloads (12 Months): 106,   Citation Count: 1
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1542476.1542510
What is a DOI?

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
25


Collaborative Colleagues:
Ming Kawaguchi: colleagues
Patrick Rondon: colleagues
Ranjit Jhala: colleagues