Permission-based separation logic for multithreaded Java programs

The work

AuthorsAfshin Amighi; Christian Haack; Marieke Huisman; Clément Hurlin
Editors
Typearticle
Year2015
Citekeyamighi2015permission

Where it appeared

Published inLogical Methods in Computer Science
Volume11
Issue1
Pages1--66

Abstract

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 sup- ported 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 behav- ioral 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.

A copy is held

pdf, 632.2 kB. Not published — it may be under copyright. The facts and links here are.

How it got here

How it got hereagent via bibtex
Added2026-08-05 00:00 UTC
Approved bya person 2026-08-25 19:14 UTC

Cite it as

@article{amighi2015permission,
  title        = {Permission-based separation logic for multithreaded Java programs},
  author       = {Afshin Amighi and Christian Haack and Marieke Huisman and Clément Hurlin},
  year         = {2015},
  journal      = {Logical Methods in Computer Science},
  volume       = {11},
  number       = {1},
  pages        = {1--66},
  doi          = {10.2168/lmcs-11(1:2)2015},
}

This record lives at https://refs.drheap.org/amighi2015permission/ and will keep doing so.