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.
- M. Abadi and L. Cardelli. A theory of objects. Springer, 1996.]] Google ScholarDigital Library
- 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.]]Google ScholarCross Ref
- 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.]]Google Scholar
- L. Birkedal, N. Torp-Smith, and J.C. Reynolds. Local reasoning about a copying garbage collector. In Proceedings of POPL, 2004.]] Google ScholarDigital Library
- R. Bornat, C. Calcagno, P. O'Hearn, and M. Parkinson. Permissions accounting in separation logic. Proceedings of POPL, 2005.]] Google ScholarDigital Library
- D. Clarke and S. Drossopolou. Ownership, encapsulation and the disjointness of type and effect. In Proceedings of OOPSLA, 2002.]] Google ScholarDigital Library
- S. Drossopoulou and M. Smith. Cheaper reasoning with ownership types. In Proceedings of IWACO, 2003.]]Google Scholar
- J. Ellis and L. Ho. JDBC 3.0 specification, 2001. http://java.sun.com/products/jdbc/download.html.]]Google Scholar
- M. Grand. Patterns in Java, volume 1. Wiley, second edition, 2002.]]Google Scholar
- J. Guttag. The Specification and Applications to Programming of Abstract Data Types. PhD thesis, Dept. of Computer Science, University of Toronto, 1975.]] Google ScholarDigital Library
- C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1(4):271--281, 1972.]]Google ScholarDigital Library
- B. W. Kernighan and D. M. Ritchie. The C Programming Language, Second Edition. Prentice-Hall, 1988.]] Google ScholarDigital Library
- J. Lamping. Typing the specialization interface. In Proceedings of OOPSLA, 1993.]] Google ScholarDigital Library
- K.R.M. Leino. Data groups: Specifying the modification of extended state. In Proceedings of OOPSLA, 1998.]] Google ScholarDigital Library
- K.R.M. Leino and G. Nelson. Data abstraction and information hiding. ACM Transactions on Programming Languages and Systems, 24:491--553, September 2002.]] Google ScholarDigital Library
- B. Liskov and S.N. Zilles. Programming with abstract data types. In Proceedings of Symposium on Very High Level Programming Languages, 1974.]] Google ScholarDigital Library
- B.H. Liskov and J.M. Wing. A behavioral notion of subtyping. ACM TOPLAS, 16(6):1811--1841, 1994.]] Google ScholarDigital Library
- R. Middelkoop, K. Huizing, and R. Kuiper. A Separation Logic Proof System for a Class-based Language. In Proceedings of LRPP, 2004.]]Google Scholar
- I. Mijajlović and N. Torp-Smith. Refinement in a separation context. In Proceedings of FSTTCS, 2004.]] Google ScholarDigital Library
- J.C. Mitchell and G.D. Plotkin. Abstract types have existential type. ACM Trans. Program. Lang. Syst., 10(3):470--502, 1988.]] Google ScholarDigital Library
- P.W. O'Hearn. Resources, concurrency and local reasoning. Invited paper, inphProceedings of CONCUR, 2004.]]Google Scholar
- P.W. O'Hearn, H.Yang, and J.C. Reynolds. Separation and information hiding. In Proceedings of POPL, 2004.]] Google ScholarDigital Library
- P.W. O'Hearn, J.C. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In Proceedings of CSL, 2001.]] Google ScholarDigital Library
- D. Oheimb and T. Nipkow. Hoare logic for NanoJava: Auxiliary variables, side effects and virtual methods revisited. In Formal Methods Europe, 2002.]] Google ScholarDigital Library
- D.L. Parnas. The secret history of information hiding. In Software Pioneers: Contributions to Software Engineering. Springer, 2002.]] Google ScholarDigital Library
- 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.]]Google ScholarCross Ref
- A. Poetzsch-Heffter and P. Müller. A programming logic for sequential Java. In Proceedings of ESOP, 1999.]] Google ScholarDigital Library
- U.S. Reddy. Objects and classes in Algol-like languages. Information and Computation, 2002.]] Google ScholarDigital Library
- J.C. Reynolds. Separation logic: A logic for shared mutable data structures. In Proceedings of LICS, 2002.]] Google ScholarDigital Library
- R. Stata. Modularity in the presence of subclassing. Technical Report 145, Digital Equipment Corporation Systems Research Center, April 1997.]] Google ScholarDigital Library
- H. Yang. Local reasoning for stateful programs. PhD thesis, University of Illinois, July 2001.]] Google ScholarDigital Library
Index Terms
- Separation logic and abstraction
Recommendations
Separation logic and abstraction
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languagesIn 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 ...
A relational modal logic for higher-order stateful ADTs
POPL '10: Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesThe method of logical relations is a classic technique for proving the equivalence of higher-order programs that implement the same observable behavior but employ different internal data representations. Although it was originally studied for pure, ...
A relational modal logic for higher-order stateful ADTs
POPL '10The method of logical relations is a classic technique for proving the equivalence of higher-order programs that implement the same observable behavior but employ different internal data representations. Although it was originally studied for pure, ...
Comments