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

Precise reasoning for programs using containers

Published: 26 January 2011 Publication History

Abstract

Containers are general-purpose data structures that provide functionality for inserting, reading, removing, and iterating over elements. Since many applications written in modern programming languages, such as C++ and Java, use containers as standard building blocks, precise analysis of many programs requires a fairly sophisticated understanding of container contents. In this paper, we present a sound, precise, and fully automatic technique for static reasoning about contents of containers. We show that the proposed technique adds useful precision for verifying real C++ applications and that it scales to applications with over 100,000 lines of code.

Supplementary Material

MP4 File (17-mpeg-4.mp4)

References

[1]
Dillig, I., Dillig, T., Aiken, A.: Fluid Updates: Beyond Strong vs. Weak Updates. In: ESOP. (2010)
[2]
Gulwani, S., Musuvathi, M.: Cover Algorithms. In: ESOP. (2008) 193--207
[3]
Cousot, P., Halbwachs, N.: Automatic Discovery of Linear Restraints among Variables of a Program. In: POPL, ACM (1978) 84--96
[4]
Karr, M.: Affine relationships among variables of a program. A.I. (1976) 133--151
[5]
Kovacs, L., Voronkov, A.: Finding loop invariants for programs over arrays using a theorem prover. In: FASE 2009. (2009) 470--485
[6]
Dillig, I., Dillig, T., Aiken, A.: SAIL: Static Analysis Intermediate Language. Stanford University Technical Report
[7]
Dillig, I., Dillig, T., Aiken, A.: Cuts from Proofs: A Complete and Practical Technique for Solving Linear Inequalities over Integers. In: CAV. (2009)
[8]
Dillig, I., Dillig, T., Aiken, A.: Small Formulas for Large Programs: On-line Constraint Simplification in Scalable Static Analysis. In: SAS. (2010)
[9]
Dillig, I., Dillig, T., Aiken, A.: Sound, Complete and Scalable Path-sensitive Analysis. In: PLDI. (2008) 270--280
[10]
http://www.sgi.com/tech/stl/: C++ standard template library
[11]
http://sourceforge.net/apps/trac/litesql/: LiteSQL
[12]
http://www.inkscape.org/: Inkscape
[13]
http://www.digikam.org/: Digikam
[14]
http://qt.nokia.com/products/: QT Framework
[15]
Lam, P., Kuncak, V., Rinard, M.: Hob: A tool for verifying data structure consistency. In: Compiler Construction. 237--241
[16]
Lam, P., Kuncak, V., Rinard, M.: Generalized Typestate Checking for Data Structure Consistency. In: VMCAI. (2005) 430--447
[17]
Kuncak, V., Lam, P., Zee, K., Rinard, M.: Modular Pluggable Analyses for Data Structure Consistency. IEEE Transactions on Software Engineering \textbf32(12) (2006) 988--1005
[18]
Ramalingam, G., Warshavsky, A., Field, J., Goyal, D., Sagiv, M.: Deriving Specialized Program Analyses for Certifying Component-client Conformance. In: PLDI. (2002) 94
[19]
Blanc, N., Groce, A., Kroening, D.: Verifying C with STL Containers via Predicate Abstraction. In: IEEE/ACM Conference on Automated software engineering, ACM (2007) 521--524
[20]
Gregor, D., Schupp, S.: STLlint: lifting static checking from languages to libraries. Software Practice and Experience \textbf36(3) (2006) 225
[21]
Deutsch, A.: Interprocedural may-alias analysis for pointers: Beyond k-limiting. In: PLDI, ACM NY, USA (1994) 230--241
[22]
Naik, M., Aiken, A.: Conditional Must not Aliasing for Static Race Detection. In: POPL. (2007) 338
[23]
Fink, S., Yahav, E., Dor, N., Ramalingam, G., Geay, E.: Effective Typestate Verification in the Presence of Aliasing. TOSEM \textbf17(2) (2008) 1--34
[24]
Reps, T.W., Sagiv, S., Wilhelm, R.: Static Program Analysis via 3-Valued Logic. In: CAV. (2004) 15--30
[25]
Shacham, O., Vechev, M., Yahav, E.: Chameleon: Adaptive Selection of Collections. In: PLDI, ACM (2009) 408--418
[26]
Gulwani, S., Mehra, K.K., Chilimbi, T.: Speed: Precise and efficient static estimation of program computational complexity. In: POPL. (2009) 127--139
[27]
Gulwani, S., McCloskey, B., Tiwari, A.: Lifting abstract interpreters to quantified logical domains. In: POPL, ACM (2008) 235--246

Cited By

View all
  • (2024)Representing Data Collections in an SSA FormProceedings of the 2024 IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO57630.2024.10444817(308-321)Online publication date: 2-Mar-2024
  • (2023) Anchor: Fast and Precise Value-flow Analysis for Containers via Memory OrientationACM Transactions on Software Engineering and Methodology10.1145/356580032:3(1-39)Online publication date: 26-Apr-2023
  • (2022)High Assurance Software for Financial Regulation and Business PlatformsVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-94583-1_6(108-126)Online publication date: 14-Jan-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2011
652 pages
ISBN:9781450304900
DOI:10.1145/1926385
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 46, Issue 1
    POPL '11
    January 2011
    624 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1925844
    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: 26 January 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. container analysis
  2. heap analysis
  3. symbolic heap

Qualifiers

  • Research-article

Conference

POPL '11
Sponsor:

Acceptance Rates

Overall Acceptance Rate 860 of 4,328 submissions, 20%

Upcoming Conference

POPL '26

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)15
  • Downloads (Last 6 weeks)1
Reflects downloads up to 05 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Representing Data Collections in an SSA FormProceedings of the 2024 IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO57630.2024.10444817(308-321)Online publication date: 2-Mar-2024
  • (2023) Anchor: Fast and Precise Value-flow Analysis for Containers via Memory OrientationACM Transactions on Software Engineering and Methodology10.1145/356580032:3(1-39)Online publication date: 26-Apr-2023
  • (2022)High Assurance Software for Financial Regulation and Business PlatformsVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-94583-1_6(108-126)Online publication date: 14-Jan-2022
  • (2021)Synthesizing data structure refinements from integrity constraintsProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454063(574-587)Online publication date: 19-Jun-2021
  • (2020)Scaling static taint analysis to industrial SOA applications: a case study at AlibabaProceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3368089.3417059(1477-1486)Online publication date: 8-Nov-2020
  • (2019)Combating Replay Attacks Against Voice AssistantsProceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies10.1145/33512583:3(1-26)Online publication date: 9-Sep-2019
  • (2019)Context-, flow-, and field-sensitive data-flow analysis using synchronized Pushdown systemsProceedings of the ACM on Programming Languages10.1145/32903613:POPL(1-29)Online publication date: 2-Jan-2019
  • (2019)Decidable verification of uninterpreted programsProceedings of the ACM on Programming Languages10.1145/32903593:POPL(1-29)Online publication date: 2-Jan-2019
  • (2018)Static Detection of Event-based Races in Android AppsACM SIGPLAN Notices10.1145/3296957.317317353:2(257-270)Online publication date: 19-Mar-2018
  • (2018)Verified three-way program mergeProceedings of the ACM on Programming Languages10.1145/32765352:OOPSLA(1-29)Online publication date: 24-Oct-2018
  • 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

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media