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

skip to main content
10.1007/978-3-642-11957-6_14guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Fluid updates: beyond strong vs. weak updates

Published: 20 March 2010 Publication History

Abstract

We describe a symbolic heap abstraction that unifies reasoning about arrays, pointers, and scalars, and we define a fluid update operation on this symbolic heap that relaxes the dichotomy between strong and weak updates. Our technique is fully automatic, does not suffer from the kind of state-space explosion problem partition-based approaches are prone to, and can naturally express properties that hold for non-contiguous array elements. We demonstrate the effectiveness of this technique by evaluating it on challenging array benchmarks and by automatically verifying buffer accesses and dereferences in five Unix Coreutils applications with no annotations or false alarms.

References

[1]
Chase, D. R., Wegman, M., Zadeck, F. K.: Analysis of pointers and structures. In: PLDI, pp. 296-310. ACM, New York (1990)
[2]
Blanchet, B., Cousot, P., Cousot, R., Feret, J., Mauborgne, L., Miné, A., Monniaux, D., Rival, X.: Design and implementation of a special-purpose static program analyzer for safety-critical real-time embedded software (2002)
[3]
Reps, T. W., Sagiv, S., Wilhelm, R.: Static program analysis via 3-valued logic. In: Alur, R., Peled, D. A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 15-30. Springer, Heidelberg (2004)
[4]
Gopan, D., Reps, T., Sagiv, M.: A framework for numeric analysis of array operations. In: POPL, pp. 338-350. ACM, New York (2005)
[5]
Aiken, A., Bugrara, S., Dillig, I., Dillig, T., Hackett, B., Hawkins, P.: An overview of the saturn project. In: PASTE, pp. 43-48. ACM, New York (2007)
[6]
Ball, T., Rajamani, S.: The slam project: debugging system software via static analysis. In: POPL, NY, USA, pp. 1-3 (2002)
[7]
Lee, S., Cho, D.: Packet-scheduling algorithm based on priority of separate buffers for unicast and multicast services. Electronics Letters 39(2), 259-260 (2003)
[8]
Nguyen, K., Nguyen, T., Cheung, S.: P2p streaming with hierarchical network coding (July 2007)
[9]
Landi, W., Ryder, B. G.: A safe approximate algorithm for interprocedural aliasing. SIGPLAN Not. 27(7), 235-248 (1992)
[10]
Cooper, D.: Theorem proving in arithmetic without multiplication. Machine Intelligence 7, 91-100 (1972)
[11]
Gulwani, S., Musuvathi, M.: Cover algorithms. In: Drossopoulou, S. (ed.) ESOP 2008. LNCS, vol. 4960, pp. 193-207. Springer, Heidelberg (2008)
[12]
Karr, M.: Affine relationships among variables of a program. A. I., 133-151 (1976)
[13]
Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: POPL, pp. 84-96. ACM, New York (1978)
[14]
Dillig, I., Dillig, T., Aiken, A.: Cuts from proofs: A complete and practical technique for solving linear inequalities over integers. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 233-247. Springer, Heidelberg (2009)
[15]
Chandra, S., Reps, T.: Physical type checking for c. SIGSOFT 24(5), 66-75 (1999)
[16]
Gulwani, S., Mehra, K., Chilimbi, T.: SPEED: precise and efficient static estimation of program computational complexity. In: POPL, pp. 127-139 (2009)
[17]
Jhala, R., Mcmillan, K. L.: Array abstractions from proofs. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 193-206. Springer, Heidelberg (2007)
[18]
Halbwachs, N., Péron, M.: Discovering properties about arrays in simple programs. In: PLDI, pp. 339-348. ACM, New York (2008)
[19]
Kovacs, L., Voronkov, A.: Finding loop invariants for programs over arrays using a theorem prover. In: Chechik, M., Wirsing, M. (eds.) FASE 2009. LNCS, vol. 5503, pp. 470-485. Springer, Heidelberg (2009)
[20]
http://www.gnu.org/software/coreutils/ Unix coreutils
[21]
Jones, N., Muchnick, S.: Flow analysis and optimization of LISP-like structures. In: POPL, pp. 244-256. ACM, New York (1979)
[22]
Deutsch, A.: Interprocedural may-alias analysis for pointers: Beyond k-limiting. In: PLDI, pp. 230-241. ACM, New York (1994)
[23]
Allamigeon, X.: Non-disjunctive numerical domain for array predicate abstraction. In: Drossopoulou, S. (ed.) ESOP 2008. LNCS, vol. 4960, pp. 163-177. Springer, Heidelberg (2008)
[24]
Gulwani, S., McCloskey, B., Tiwari, A.: Lifting abstract interpreters to quantified logical domains. In: POPL, pp. 235-246. ACM, New York (2008)
[25]
Seghir, M., Podelski, A., Wies, T.: Abstraction Refinement for Quantified Array Assertions. In: Palsberg, J., Su, Z. (eds.) SAS 2009. LNCS, vol. 5673, pp. 3-18. Springer, Heidelberg (2009)
[26]
Flanagan, C., Qadeer, S.: Predicate abstraction for software verification. In: POPL, pp. 191-202. ACM, New York (2002)
[27]
Schmidt, D. A.: A calculus of logical relations for over- and underapproximating static analyses. Sci. Comput. Program. 64(1), 29-53 (2007)
[28]
Calcagno, C., Distefano, D., O'Hearn, P., Yang, H.: Compositional shape analysis by means of bi-abduction. In: POPL, pp. 289-300. ACM, New York (2009)
[29]
Cousot, P.: Verification by abstract interpretation. In: Dershowitz, N. (ed.) Verification: Theory and Practice. LNCS, vol. 2772, pp. 243-268. Springer, Heidelberg (2004)
[30]
Dillig, I., Dillig, T., Aiken, A.: Fluid updates: Beyond strong vs. weak updates (extended version), http://www.stanford.edu/~isil/esop-extended.pdf

Cited By

View all
  • (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)PalanTírProceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security10.1145/3548606.3560570(3135-3149)Online publication date: 7-Nov-2022
  • (2022)Lemmaless Induction in Trace LogicIntelligent Computer Mathematics10.1007/978-3-031-16681-5_14(191-208)Online publication date: 19-Sep-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
ESOP'10: Proceedings of the 19th European conference on Programming Languages and Systems
March 2010
629 pages
ISBN:3642119565
  • Editor:
  • Andrew D. Gordon

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 20 March 2010

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

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

Other Metrics

Citations

Cited By

View all
  • (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)PalanTírProceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security10.1145/3548606.3560570(3135-3149)Online publication date: 7-Nov-2022
  • (2022)Lemmaless Induction in Trace LogicIntelligent Computer Mathematics10.1007/978-3-031-16681-5_14(191-208)Online publication date: 19-Sep-2022
  • (2021)Data Abstraction: A General Framework to Handle Program Verification of Data StructuresStatic Analysis10.1007/978-3-030-88806-0_11(215-235)Online publication date: 17-Oct-2021
  • (2021)Diffy: Inductive Reasoning of Array Programs Using Difference InvariantsComputer Aided Verification10.1007/978-3-030-81688-9_42(911-935)Online publication date: 20-Jul-2021
  • (2020)Verification of an Optimized NTT AlgorithmSoftware Verification10.1007/978-3-030-63618-0_9(144-160)Online publication date: 19-Jul-2020
  • (2018)Inferring functional properties of matrix manipulating programs by abstract interpretationFormal Methods in System Design10.1007/s10703-017-0311-x53:2(221-258)Online publication date: 1-Oct-2018
  • (2017)Failure-directed program trimmingProceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering10.1145/3106237.3106249(174-185)Online publication date: 21-Aug-2017
  • (2017)Synthesis of circular compositional program proofs via abductionInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-015-0397-719:5(535-547)Online publication date: 1-Oct-2017
  • (2016)From invariant checking to invariant inference using randomized searchFormal Methods in System Design10.1007/s10703-016-0248-548:3(235-256)Online publication date: 1-Jun-2016
  • Show More Cited By

View Options

View options

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media