Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1007/11804192_6guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Smallfoot: modular automatic assertion checking with separation logic

Published: 01 November 2005 Publication History

Abstract

Separation logic is a program logic for reasoning about programs that manipulate pointer data structures. We describe Smallfoot, a tool for checking certain lightweight separation logic specifications. The assertions describe the shapes of data structures rather than their detailed contents, and this allows reasoning to be fully automatic. The presentation in the paper is tutorial in style. We illustrate what the tool can do via examples which are oriented toward novel aspects of separation logic, namely: avoidance of frame axioms (which say what a procedure does not change); embracement of “dirty” features such as memory disposal and address arithmetic; information hiding in the presence of pointers; and modular reasoning about concurrent programs.

References

[1]
A. Banerjee and D.A. Naumann. Ownership confinement ensures representationindependence for object-oriented programs. Journal of the ACM, 52(6):894-960,2005. Preliminary version in POPL'02.
[2]
M. Barnett, R. DeLine, M. Fahndrich, K.R.M. Leino, and W. Schulte. Verificationof object-oriented programs with invariants. Journal of Object Technology, 3(6):27-56, 2004.
[3]
M. Barnett, K.R.M. Leino, and W. Schulte. The Spec# programming system: Anoverview. In CASSIS'04 post-proceedings, 2004.
[4]
J. Berdine, C. Calcagno, and P.W. O'Hearn. Verification condition generation andvariable conditions in Smallfoot. Available fromhttp://www.dcs.qmul.ac.uk/research/logic/theory/projects/smallfoot/index.html.
[5]
J. Berdine, C. Calcagno, and P.W. O'Hearn. Symbolic execution with separationlogic. In 3rd APLAS, pages 52-68, 2005.
[6]
L. Birkedal, N. Torp-Smith, and J.C. Reynolds. Local reasoning about a copyinggarbage collector. In 31st POPL, pages 220-231, 2004.
[7]
R. Bornat, C. Calcagno, and P. O'Hearn. Local reasoning, separation, and aliasing.Presented at 2nd SPACE Workshop, 2004.
[8]
R. Bornat, C. Calcagno, P. O'Hearn, and M. Parkinson. Permission accounting inseparation logic. 32nd POPL, 59-70, 2005.
[9]
J. Boyland. Checking interference with fractional permissions. In 10th SAS, pages55-72, 2003.
[10]
P. Brinch-Hansen, editor. The Origin of Concurrent Programming. Springer-Verlag, 2002.
[11]
S.D. Brookes. A semantics for concurrent separation logic. Theoretical ComputerScience, to appear. Preliminary version in CONCUR'04, 2006.
[12]
D. Clarke, J. Noble, and J. Potter. Simple ownership types for object containment.In 15th ECOOP, pages 53-76, 2001.
[13]
R. DeLine and M. Fähndrich. Enforcing high-level protocols in low-level software.In 8th PLDI, pages 59-69, 2001.
[14]
W. Dietl and P. Müller. Universes: Lightweight ownership for JML. Journal ofObject Technology, 2006.
[15]
C. Flanagan, S.N. Freund, and S. Qadeer. Thread-modular verification for sharedmemoryprograms. In 11th ESOP, pages 262-277, 2002.
[16]
C. Flanagan, K.R.M. Leino, M. Lillibridge, G. Nelson, J.B. Saxe, and R. Stata.Extended static checking for Java. In 9th PLDI, pages 234 - 245, 2002.
[17]
C.A.R. Hoare. Procedures and parameters: An axiomatic approach. In E. Engeler,editor, Symposium on the Semantics of Algorithmic Languages, volume 188of Lecture Notes in Mathematics, pages 102-116. Springer-Verlag, 1971.
[18]
C.A.R. Hoare. Towards a theory of parallel programming. In Operating SystemsTechniques, Acad. Press, pages 61-71. Reprinted in {10}, 1972.
[19]
B. Jacobs, K.R.M. Leino, F. Piessens, and W. Schulte. Safe concurrency for aggregateobjects with invariants. In 3rd SEFM, 2005.
[20]
J. Jenson, M. Jorgensen, N. Klarkund, and M. Schwartzback. Automatic verificationof pointer programs using monadic second-order logic. In 4th PLDI, pages225-236, 1997.
[21]
C.B. Jones. Specification and design of (parallel) programs. IFIP Conf., 1983.
[22]
C.B. Jones. Wanted: A compositional approach to concurrency. In A. McIver andC. Morgan, editors, Programming Methodology, pages 1-15, 2003. Springer-Verlag.
[23]
D.E. Knuth. The Art of Computer Programming, Volume I: Fundamental Algorithms.Addison Wesley, 2nd edition, 1973.
[24]
K.R.M. Leino and P. Müller. Object invariants in dynamic contexts. In 18thECOOP, pages 491-516, 2004.
[25]
K.R.M. Leino, A. Poetzsch-Heffter, and Y. Zhou. Using data groups to specify andcheck side effects. In 9th PLDI, pages 246 - 257, 2002.
[26]
M.M. Michael. Hazard pointers: Safe memory reclamation for lock-free objects.IEEE TPDS, 15(6):491-504, 2004.
[27]
J. Misra and K.M. Chandy. Proofs of networks of processes. IEEE Trans. SoftwareEng., 7(4):417-426, 1981.
[28]
A. Möller and M.I. Schwartzbach. The pointer assertion logic engine. In 8th PLDI,pages 221-231, 2001.
[29]
D.A. Naumann. Assertion-based encapsulation, invariants and simulations. In 3rdFMCO, pages 251-273, 2005.
[30]
D.A. Naumann and M. Barnett. Friends need a bit more: Maintaining invariantsover shared state. In 7th MPC, pages 54-84, 2004.
[31]
P.W. O'Hearn. Resources, concurrency and local reasoning. Theoretical ComputerScience, to appear. Preliminary version in CONCUR'04, 2006.
[32]
P.W. O'Hearn, J.C. Reynolds, and H. Yang. Local reasoning about programs thatalter data structures. In 15th CSL. pages 1-19, 2001.
[33]
P.W. O'Hearn, H. Yang, and J.C. Reynolds. Separation and information hiding.In 31st POPL, pages 268-280, 2004.
[34]
M. Parkinson and R. Bornat. Exploiting linearisability in program logic. Draftpaper, 2005.
[35]
J.C. Reynolds. Separation logic: A logic for shared mutable data structures. In17th LICS, pages 55-74.
[36]
N. Rinetzky, J. Bauer, T. Reps, M. Sagiv, and R. Wilhelm. A semantics for procedurelocal heaps and its abstractions. In 32nd POPL, pages 296-309, 2005.
[37]
M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic.ACM TOPLAS, 24(3):217-298, 2002.
[38]
J. Schwarz. Generic commands--A tool for partial correctness formalisms. TheComputer Journal, 20(2):151-155, 1977.
[39]
D. Walker and J.G. Morrisett. Alias types for recursive data structures. In 3rdTypes in Compilation Workshop, pages 177-206, 2001.
[40]
H. Yang. An example of local reasoning in BI pointer logic: the Schorr-Waite graphmarking algorithm. Presented at 1st SPACE Workshop, 2001.
[41]
H. Yang and P.W. O'Hearn. A semantic basis for local reasoning. In 5th FOSSACS,pages 402-416, 2002.

Cited By

View all
  • (2025)Formal Foundations for Translational Separation Logic VerifiersProceedings of the ACM on Programming Languages10.1145/37048569:POPL(569-599)Online publication date: 9-Jan-2025
  • (2024)Gradual C0: Symbolic Execution for Gradual VerificationACM Transactions on Programming Languages and Systems10.1145/370480846:4(1-57)Online publication date: 5-Dec-2024
  • (2024)Predictable Verification using Intrinsic DefinitionsProceedings of the ACM on Programming Languages10.1145/36564508:PLDI(1804-1829)Online publication date: 20-Jun-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
FMCO'05: Proceedings of the 4th international conference on Formal Methods for Components and Objects
November 2005
427 pages
ISBN:3540367497
  • Editors:
  • Frank S. de Boer,
  • Marcello M. Bonsangue,
  • Susanne Graf,
  • Willem-Paul de Roever

Sponsors

  • The Royal Netherlands Academy of Arts and Sciences: The Royal Netherlands Academy of Arts and Sciences
  • NWO: Dutch Orgartisation for Scientific Research
  • CWI: Centrum voor Wiskunde en Informatica - Netherlands
  • IPA: Institute for Programming research and Algorithmics
  • LIACS: The Leiden Institute of Advanced Computer Science

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 01 November 2005

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Formal Foundations for Translational Separation Logic VerifiersProceedings of the ACM on Programming Languages10.1145/37048569:POPL(569-599)Online publication date: 9-Jan-2025
  • (2024)Gradual C0: Symbolic Execution for Gradual VerificationACM Transactions on Programming Languages and Systems10.1145/370480846:4(1-57)Online publication date: 5-Dec-2024
  • (2024)Predictable Verification using Intrinsic DefinitionsProceedings of the ACM on Programming Languages10.1145/36564508:PLDI(1804-1829)Online publication date: 20-Jun-2024
  • (2024)Sound Gradual Verification with Symbolic ExecutionProceedings of the ACM on Programming Languages10.1145/36329278:POPL(2547-2576)Online publication date: 5-Jan-2024
  • (2024)Verification Algorithms for Automated Separation Logic VerifiersComputer Aided Verification10.1007/978-3-031-65627-9_18(362-386)Online publication date: 24-Jul-2024
  • (2023)Beyond Backtracking: Connections in Fine-Grained Concurrent Separation LogicProceedings of the ACM on Programming Languages10.1145/35912757:PLDI(1340-1364)Online publication date: 6-Jun-2023
  • (2023)A First-order Logic with FramesACM Transactions on Programming Languages and Systems10.1145/358305745:2(1-44)Online publication date: 15-May-2023
  • (2023)Testing the Satisfiability of Formulas in Separation Logic with PermissionsAutomated Reasoning with Analytic Tableaux and Related Methods10.1007/978-3-031-43513-3_23(427-445)Online publication date: 18-Sep-2023
  • (2022)Verified symbolic execution with Kripke specification monads (and no meta-programming)Proceedings of the ACM on Programming Languages10.1145/35476286:ICFP(194-224)Online publication date: 31-Aug-2022
  • (2022)InfERL: scalable and extensible Erlang static analysisProceedings of the 21st ACM SIGPLAN International Workshop on Erlang10.1145/3546186.3549929(33-39)Online publication date: 6-Sep-2022
  • Show More Cited By

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media