skip to main content
10.1145/1040305.1040326acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article

Separation logic and abstraction

Published: 12 January 2005 Publication History

Abstract

In this paper we address the problem of writing specifications for programs that use various forms of modularity, including procedures and Java-like classes. We build on the formalism of separation logic and introduce the new notion of an abstract predicate and, more generally, abstract predicate families. This provides a flexible mechanism for reasoning about the different forms of abstraction found in modern programming languages, such as abstract datatypes and objects. As well as demonstrating the soundness of our proof system, we illustrate its utility with a series of examples.

References

[1]
M. Abadi and L. Cardelli. A theory of objects. Springer, 1996.]]
[2]
M. Barnett, R. DeLine, M. Fähndrich, K.R.M. Leino, and W. Schulte. Verification of object-oriented programs with invariants. Journal of Object Technology, 2004.]]
[3]
G.M. Bierman and M.J. Parkinson. Effects and effect inference for a core Java calculus. In Proceedings of WOOD, volume 82 of ENTCS, 2004.]]
[4]
L. Birkedal, N. Torp-Smith, and J.C. Reynolds. Local reasoning about a copying garbage collector. In Proceedings of POPL, 2004.]]
[5]
R. Bornat, C. Calcagno, P. O'Hearn, and M. Parkinson. Permissions accounting in separation logic. Proceedings of POPL, 2005.]]
[6]
D. Clarke and S. Drossopolou. Ownership, encapsulation and the disjointness of type and effect. In Proceedings of OOPSLA, 2002.]]
[7]
S. Drossopoulou and M. Smith. Cheaper reasoning with ownership types. In Proceedings of IWACO, 2003.]]
[8]
J. Ellis and L. Ho. JDBC 3.0 specification, 2001. http://java.sun.com/products/jdbc/download.html.]]
[9]
M. Grand. Patterns in Java, volume 1. Wiley, second edition, 2002.]]
[10]
J. Guttag. The Specification and Applications to Programming of Abstract Data Types. PhD thesis, Dept. of Computer Science, University of Toronto, 1975.]]
[11]
C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1(4):271--281, 1972.]]
[12]
B. W. Kernighan and D. M. Ritchie. The C Programming Language, Second Edition. Prentice-Hall, 1988.]]
[13]
J. Lamping. Typing the specialization interface. In Proceedings of OOPSLA, 1993.]]
[14]
K.R.M. Leino. Data groups: Specifying the modification of extended state. In Proceedings of OOPSLA, 1998.]]
[15]
K.R.M. Leino and G. Nelson. Data abstraction and information hiding. ACM Transactions on Programming Languages and Systems, 24:491--553, September 2002.]]
[16]
B. Liskov and S.N. Zilles. Programming with abstract data types. In Proceedings of Symposium on Very High Level Programming Languages, 1974.]]
[17]
B.H. Liskov and J.M. Wing. A behavioral notion of subtyping. ACM TOPLAS, 16(6):1811--1841, 1994.]]
[18]
R. Middelkoop, K. Huizing, and R. Kuiper. A Separation Logic Proof System for a Class-based Language. In Proceedings of LRPP, 2004.]]
[19]
I. Mijajlović and N. Torp-Smith. Refinement in a separation context. In Proceedings of FSTTCS, 2004.]]
[20]
J.C. Mitchell and G.D. Plotkin. Abstract types have existential type. ACM Trans. Program. Lang. Syst., 10(3):470--502, 1988.]]
[21]
P.W. O'Hearn. Resources, concurrency and local reasoning. Invited paper, inphProceedings of CONCUR, 2004.]]
[22]
P.W. O'Hearn, H.Yang, and J.C. Reynolds. Separation and information hiding. In Proceedings of POPL, 2004.]]
[23]
P.W. O'Hearn, J.C. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In Proceedings of CSL, 2001.]]
[24]
D. Oheimb and T. Nipkow. Hoare logic for NanoJava: Auxiliary variables, side effects and virtual methods revisited. In Formal Methods Europe, 2002.]]
[25]
D.L. Parnas. The secret history of information hiding. In Software Pioneers: Contributions to Software Engineering. Springer, 2002.]]
[26]
C. Pierik and F.S. de Boer. A syntax-directed Hoare logic for object-oriented programming concepts. In Formal Methods for Open Object-Based Distributed Systems, 2003.]]
[27]
A. Poetzsch-Heffter and P. Müller. A programming logic for sequential Java. In Proceedings of ESOP, 1999.]]
[28]
U.S. Reddy. Objects and classes in Algol-like languages. Information and Computation, 2002.]]
[29]
J.C. Reynolds. Separation logic: A logic for shared mutable data structures. In Proceedings of LICS, 2002.]]
[30]
R. Stata. Modularity in the presence of subclassing. Technical Report 145, Digital Equipment Corporation Systems Research Center, April 1997.]]
[31]
H. Yang. Local reasoning for stateful programs. PhD thesis, University of Illinois, July 2001.]]

Cited By

View all
  • (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)Challenges of Multilingual Program Specification and AnalysisLeveraging Applications of Formal Methods, Verification and Validation. Specification and Verification10.1007/978-3-031-75380-0_8(124-143)Online publication date: 30-Oct-2024
  • (2023)CommCSL: Proving Information Flow Security for Concurrent Programs using Abstract CommutativityProceedings of the ACM on Programming Languages10.1145/35912897:PLDI(1682-1707)Online publication date: 6-Jun-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2005
402 pages
ISBN:158113830X
DOI:10.1145/1040305
  • General Chair:
  • Jens Palsberg,
  • Program Chair:
  • Martín Abadi
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 40, Issue 1
    Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    January 2005
    391 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1047659
    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

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 January 2005

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. abstract data types
  2. classes
  3. modularity
  4. resources
  5. separation logic

Qualifiers

  • Article

Conference

POPL05

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)43
  • Downloads (Last 6 weeks)5
Reflects downloads up to 05 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (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)Challenges of Multilingual Program Specification and AnalysisLeveraging Applications of Formal Methods, Verification and Validation. Specification and Verification10.1007/978-3-031-75380-0_8(124-143)Online publication date: 30-Oct-2024
  • (2023)CommCSL: Proving Information Flow Security for Concurrent Programs using Abstract CommutativityProceedings of the ACM on Programming Languages10.1145/35912897:PLDI(1682-1707)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)Incorrectness Proofs for Object-Oriented Programs via Subclass ReflectionProgramming Languages and Systems10.1007/978-981-99-8311-7_13(269-289)Online publication date: 21-Nov-2023
  • (2022)Mechanized verification of a fine-grained concurrent queue from meta’s folly libraryProceedings of the 11th ACM SIGPLAN International Conference on Certified Programs and Proofs10.1145/3497775.3503689(100-115)Online publication date: 17-Jan-2022
  • (2022)Sound Automation of Magic WandsComputer Aided Verification10.1007/978-3-031-13188-2_7(130-151)Online publication date: 6-Aug-2022
  • (2021)The First Fifteen Years of the Verified Software ProjectTheories of Programming10.1145/3477355.3477362(93-124)Online publication date: 4-Oct-2021
  • (2021)Theorems for free from separation logic specificationsProceedings of the ACM on Programming Languages10.1145/34735865:ICFP(1-29)Online publication date: 19-Aug-2021
  • (2021)Verified Software UnitsProgramming Languages and Systems10.1007/978-3-030-72019-3_5(118-147)Online publication date: 23-Mar-2021
  • 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