Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Structured Types and Separation Logic

Published: 01 July 2008 Publication History
  • Get Citation Alerts
  • Abstract

    Structured types, such as C's arrays and structs, present additional challenges in pointer program verification. The conventional proof abstractions, multiple independent typed heaps and separation logic, which in previous work have been built on a low-level memory model for C and shown to be sound, are not directly applicable in verifications. This is due to the non-monotonic nature of pointer and lvalue validity in the presence of the unary &-operator. For example, type-safe updates through pointers to fields of a struct break the independence of updates across typed heaps or @?^*-conjuncts. In this paper we present a generalisation of our earlier formal memory model that captured the low-level features of C's pointers and memory and formed the basis for an expressive implementation of separation logic, with new features providing explicit support for C's structured types. We implement this framework in the theorem prover Isabelle/HOL and all proofs are machine checked.

    References

    [1]
    Bornat, R., Proving pointer programs in Hoare Logic. In: Backhouse, R., Oliveira, J. (Eds.), LNCS, 1837. pp. 102-126.
    [2]
    Burstall, R., Some techniques for proving correctness of programs which alter data structures. In: Meltzer, B., Michie, D. (Eds.), Machine Intelligence 7, Edinburgh University Press. pp. 23-50.
    [3]
    Filliâtre, J.-C. and Marché, C., Multi-prover verification of C programs. In: LNCS, 3308. pp. 15-29.
    [4]
    Hohmuth, M., H. Tews and S.G. Stephens, Applying source-code verification to a microkernel --- the VFiasco project, Technical Report TUD-FI02-03-März, TU Dresden (2002)
    [5]
    Ishtiaq, S.S. and P.W. O'Hearn, BI as an assertion language for mutable data structures, in: POPL '01: Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (2001), pp. 14--26
    [6]
    Marti, N., R. Affeldt and A. Yonezawa, Verification of the heap manager of an operating system using separation logic, in: Third workshop on Semantics, Program Analysis, and Computing Environments For Memory Management (SPACE 2006), 2006, pp. 61--72
    [7]
    Mehta, F. and T. Nipkow, Proving pointer programs in higher-order logic, Information and Computation (2005), to appear
    [8]
    Moy, Y., Union and cast in deductive verification, in: C/C++ Verification Workshop, Oxford, UK, 2007
    [9]
    Norrish, M., “C formalised in HOL,” Ph.D. thesis, Computer Laboratory, University of Cambridge (1998)
    [10]
    Reynolds, J.C., Separation logic: A logic for shared mutable data structures, in: Proc. 17th IEEE Symposium on Logic in Computer Science, 2002, pp. 55--74
    [11]
    Schirmer, N., “Verification of Sequential Imperative Programs in Isabelle/HOL,” Ph.D. thesis, Technische Universität München (2006)
    [12]
    Siff, M., S. Chandra, T. Ball, K. Kunchithapadam and T. Reps, Coping with type casts in C, in: ESEC/FSE-7: Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering (1999), pp. 180--198
    [13]
    Tuch, H. and Klein, G., A unified memory model for pointers. In: Sutcliffe, G., Voronkov, A. (Eds.), LNCS, 3835. pp. 474-488.
    [14]
    Tuch, H., G. Klein and M. Norrish, Types, bytes, and separation logic, in: M. Hofmann and M. Felleisen, editors, Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Nice, France, 2007, p. 12
    [15]
    Weber, T., Towards mechanized program verification with separation logic. In: Marcinkowski, J., Tarlecki, A. (Eds.), Lecture Notes in Computer Science, 3210. pp. 250-264.
    [16]
    Wenzel, M., Type classes and overloading in higher-order logic. In: Gunter, E.L., Felty, A. (Eds.), LNCS, 1275. pp. 307-322.

    Cited By

    View all
    • (2009)Separation Logic Verification of C Programs with an SMT SolverElectronic Notes in Theoretical Computer Science (ENTCS)10.1016/j.entcs.2009.09.057254(5-23)Online publication date: 1-Oct-2009
    • (2009)Formal Memory Models for the Verification of Low-Level Operating-System CodeJournal of Automated Reasoning10.1007/s10817-009-9122-042:2-4(189-227)Online publication date: 1-Apr-2009

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Electronic Notes in Theoretical Computer Science (ENTCS)
    Electronic Notes in Theoretical Computer Science (ENTCS)  Volume 217, Issue
    July, 2008
    228 pages

    Publisher

    Elsevier Science Publishers B. V.

    Netherlands

    Publication History

    Published: 01 July 2008

    Author Tags

    1. C
    2. Interactive Theorem Proving
    3. Separation Logic

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0

    Other Metrics

    Citations

    Cited By

    View all
    • (2009)Separation Logic Verification of C Programs with an SMT SolverElectronic Notes in Theoretical Computer Science (ENTCS)10.1016/j.entcs.2009.09.057254(5-23)Online publication date: 1-Oct-2009
    • (2009)Formal Memory Models for the Verification of Low-Level Operating-System CodeJournal of Automated Reasoning10.1007/s10817-009-9122-042:2-4(189-227)Online publication date: 1-Apr-2009

    View Options

    View options

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media