Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2103656.2103673acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Recursive proofs for inductive tree data-structures

Published: 25 January 2012 Publication History

Abstract

We develop logical mechanisms and procedures to facilitate the verification of full functional properties of inductive tree data-structures using recursion that are sound, incomplete, but terminating. Our contribution rests in a new extension of first-order logic with recursive definitions called Dryad, a syntactical restriction on pre- and post-conditions of recursive imperative programs using Dryad, and a systematic methodology for accurately unfolding the footprint on the heap uncovered by the program that leads to finding simple recursive proofs using formula abstraction and calls to SMT solvers. We evaluate our methodology empirically and show that several complex tree data-structure algorithms can be checked against full functional specifications automatically, given pre- and post-conditions. This results in the first automatic terminating methodology for proving a wide variety of annotated algorithms on tree data-structures correct, including max-heaps, treaps, red-black trees, AVL trees, binomial heaps, and B-trees.

Supplementary Material

JPG File (popl_2b_1.jpg)
MP4 File (popl_2b_1.mp4)

References

[1]
I. Balaban, A. Pnueli, and L. D. Zuck. Shape analysis by predicate abstraction. In VMCAI'05, volume 3385 of LNCS, pages 164--180. Springer, 2005.
[2]
M. Barnett, B.-Y. E. Chang, R. DeLine, B. Jacobs, and K. R.M. Leino. Boogie: A modular reusable verifier for object-oriented programs. In FMCO'05, volume 4111 of LNCS, pages 364--387. Springer, 2005.
[3]
J. Berdine, C. Calcagno, and P. W. O'Hearn. A decidable fragment of separation logic. In FSTTCS'04, volume 3328 of LNCS, pages 97--109. Springer, 2004.
[4]
J. Berdine, C. Calcagno, and P.W. O'Hearn. Symbolic execution with separation logic. In APLAS'05, volume 3780 of LNCS, pages 52--68. Springer, 2005.
[5]
N. Bjørner and J. Hendrix. Linear functional fixed-points. In CAV'09, volume 5643 of LNCS, pages 124--139. Springer, 2009.
[6]
A. Bouajjani, C. Dragoi, C. Enea, and M. Sighireanu. A logicbased framework for reasoning about composite data structures. In CONCUR'09, volume 5710 of LNCS, pages 178--195. Springer, 2009.
[7]
A. R. Bradley and Z. Manna. The Calculus of Computation. Springer, 2007.
[8]
W.-N. Chin, C. David, H. H. Nguyen, and S. Qin. Automated verification of shape, size and bag properties via user-defined predicates in separation logic. Science of Computer Programming, in press, 2010.
[9]
A. Chlipala. Mostly-automated verification of low-level programs in computational separation logic. In PLDI'11, pages 234--245. ACM, 2011.
[10]
T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to Algorithms. MIT Press, third edition, 2009.
[11]
L. M. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS'08, volume 4963 of LNCS, pages 337--340. Springer, 2008.
[12]
INRIA. The coq proof assistant. URL http://coq.inria.fr/.
[13]
V. Kuncak, R. Piskac, and P. Suter. Ordered sets in the calculus of data structures. In CSL'10, volume 6247 of LNCS, pages 34--48. Springer, 2010.
[14]
S. Lahiri and S. Qadeer. Back to the future: revisiting precise program verification using SMT solvers. In POPL'08, pages 171--182. ACM, 2008.
[15]
P. Madhusudan and X. Qiu. Efficient decision procedures for heaps using STRAND. In SAS'11, volume 6887 of LNCS, pages 43--59. Springer, 2011.
[16]
P. Madhusudan, G. Parlato, and X. Qiu. Decidable logics combining heap structures and data. In POPL'11, pages 611--622. ACM, 2011.
[17]
S. Magill, M.-H. Tsai, P. Lee, and Y.-K. Tsay. THOR: A tool for reasoning about shape and arithmetic. In CAV'08, volume 5123 of LNCS, pages 428--432. Springer, 2008.
[18]
G. Nelson. Verifying reachability invariants of linked structures. In POPL'83, pages 38--47. ACM, 1983.
[19]
P. W. O'Hearn, J. C. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In CSL'01, volume 2142 of LNCS, pages 1--19. Springer, 2001.
[20]
Z. Rakamaric, J. D. Bingham, and A. J. Hu. An inference-rule-based decision procedure for verification of heap-manipulating programs with mutable data and cyclic data structures. In VMCAI'07, volume 4349 of LNCS, pages 106--121. Springer, 2007.
[21]
Z. Rakamaric, R. Bruttomesso, A. J. Hu, and A. Cimatti. Verifying heap-manipulating programs in an SMT framework. In ATVA'07, volume 4762 of LNCS, pages 237--252. Springer, 2007.
[22]
S. Ranise and C. Zarba. A theory of singly-linked lists and its extensible decision procedure. In SEFM'06, pages 206--215. IEEE-CS, 2006.
[23]
J. Reynolds. Separation logic: a logic for shared mutable data structures. In LICS'02, pages 55--74. IEEE-CS, 2002.
[24]
G. Rosu, C. Ellison, and W. Schulte. Matching logic: An alternative to Hoare/Floyd logic. In AMAST'10, volume 6486 of LNCS, pages 142--162. Springer, 2010.
[25]
P. Suter, M. Dotta, and V. Kuncak. Decision procedures for algebraic data types with abstractions. In POPL'10, pages 199--210. ACM, 2010.
[26]
K. Zee, V. Kuncak, and M. C. Rinard. Full functional verification of linked data structures. In PLDI'08, pages 349--361. ACM, 2008.
[27]
K. Zee, V. Kuncak, and M. C. Rinard. An integrated proof language for imperative programs. In PLDI'09, pages 338--351. ACM, 2009.

Cited By

View all
  • (2023)A First-order Logic with FramesACM Transactions on Programming Languages and Systems10.1145/358305745:2(1-44)Online publication date: 15-May-2023
  • (2022)Model-guided synthesis of inductive lemmas for FOL with least fixpointsProceedings of the ACM on Programming Languages10.1145/35633546:OOPSLA2(1873-1902)Online publication date: 31-Oct-2022
  • (2020)A First-Order Logic with FramesProgramming Languages and Systems10.1007/978-3-030-44914-8_19(515-543)Online publication date: 27-Apr-2020
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '12: Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2012
602 pages
ISBN:9781450310833
DOI:10.1145/2103656
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 47, Issue 1
    POPL '12
    January 2012
    569 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2103621
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 25 January 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. heap analysis
  2. recursive program
  3. smt solvers
  4. tree

Qualifiers

  • Research-article

Conference

POPL '12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)16
  • Downloads (Last 6 weeks)2
Reflects downloads up to 17 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)A First-order Logic with FramesACM Transactions on Programming Languages and Systems10.1145/358305745:2(1-44)Online publication date: 15-May-2023
  • (2022)Model-guided synthesis of inductive lemmas for FOL with least fixpointsProceedings of the ACM on Programming Languages10.1145/35633546:OOPSLA2(1873-1902)Online publication date: 31-Oct-2022
  • (2020)A First-Order Logic with FramesProgramming Languages and Systems10.1007/978-3-030-44914-8_19(515-543)Online publication date: 27-Apr-2020
  • (2019)Structuring the synthesis of heap-manipulating programsProceedings of the ACM on Programming Languages10.1145/32903853:POPL(1-30)Online publication date: 2-Jan-2019
  • (2019)A Decidable Logic for Tree Data-Structures with MeasurementsVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-11245-5_15(318-341)Online publication date: 11-Jan-2019
  • (2019)Separation Logic with Linearly Compositional Inductive Predicates and Set Data ConstraintsSOFSEM 2019: Theory and Practice of Computer Science10.1007/978-3-030-10801-4_17(206-220)Online publication date: 11-Jan-2019
  • (2017)Foundations for natural proofs and quantifier instantiationProceedings of the ACM on Programming Languages10.1145/31580982:POPL(1-30)Online publication date: 27-Dec-2017
  • (2017)TreeFuser: a framework for analyzing and fusing general recursive tree traversalsProceedings of the ACM on Programming Languages10.1145/31339001:OOPSLA(1-30)Online publication date: 12-Oct-2017
  • (2017)Natural synthesis of provably-correct data-structure manipulationsProceedings of the ACM on Programming Languages10.1145/31338891:OOPSLA(1-28)Online publication date: 12-Oct-2017
  • (2016)Semantics-based program verifiers for all languagesACM SIGPLAN Notices10.1145/3022671.298402751:10(74-91)Online publication date: 19-Oct-2016
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media