Christian Haack ; Marieke Huisman ; Clément Hurlin ; Afshin Amighi - Permission-Based Separation Logic for Multithreaded Java Programs

lmcs:998 - Logical Methods in Computer Science, February 27, 2015, Volume 11, Issue 1 - https://doi.org/10.2168/LMCS-11(1:2)2015
Permission-Based Separation Logic for Multithreaded Java ProgramsArticle

Authors: Christian Haack ; Marieke Huisman ORCID; Clément Hurlin ; Afshin Amighi

    This paper presents a program logic for reasoning about multithreaded Java-like programs with dynamic thread creation, thread joining and reentrant object monitors. The logic is based on concurrent separation logic. It is the first detailed adaptation of concurrent separation logic to a multithreaded Java-like language. The program logic associates a unique static access permission with each heap location, ensuring exclusive write accesses and ruling out data races. Concurrent reads are supported through fractional permissions. Permissions can be transferred between threads upon thread starting, thread joining, initial monitor entrancies and final monitor exits. In order to distinguish between initial monitor entrancies and monitor reentrancies, auxiliary variables keep track of multisets of currently held monitors. Data abstraction and behavioral subtyping are facilitated through abstract predicates, which are also used to represent monitor invariants, preconditions for thread starting and postconditions for thread joining. Value-parametrized types allow to conveniently capture common strong global invariants, like static object ownership relations. The program logic is presented for a model language with Java-like classes and interfaces, the soundness of the program logic is proven, and a number of illustrative examples are presented.


    Volume: Volume 11, Issue 1
    Published on: February 27, 2015
    Imported on: October 17, 2012
    Keywords: Computer Science - Logic in Computer Science
    Funding:
      Source : OpenAIRE Graph
    • Verification of Concurrent Data Structures; Funder: European Commission; Code: 258405

    20 Documents citing this article

    Consultation statistics

    This page has been seen 1287 times.
    This article's PDF has been downloaded 869 times.