A Concurrent Constraint Programming Interpretation of Access Permissions

02/13/2018
by   Carlos Olarte, et al.
0

A recent trend in object oriented (OO) programming languages is the use of Access Permissions (APs) as an abstraction for controlling concurrent executions of programs. The use of AP source code annotations defines a protocol specifying how object references can access the mutable state of objects. Although the use of APs simplifies the task of writing concurrent code, an unsystematic use of them can lead to subtle problems. This paper presents a declarative interpretation of APs as Linear Concurrent Constraint Programs (lcc). We represent APs as constraints (i.e., formulas in logic) in an underlying constraint system whose entailment relation models the transformation rules of APs. Moreover, we use processes in lcc to model the dependencies imposed by APs, thus allowing the faithful representation of their flow in the program. We verify relevant properties about AP programs by taking advantage of the interpretation of lcc processes as formulas in Girard's intuitionistic linear logic (ILL). Properties include deadlock detection, program correctness (whether programs adhere to their AP specifications or not), and the ability of methods to run concurrently. By relying on a focusing discipline for ILL, we provide a complexity measure for proofs of the above mentioned properties. The effectiveness of our verification techniques is demonstrated by implementing the Alcove tool that includes an animator and a verifier. The former executes the lcc model, observing the flow of APs and quickly finding inconsistencies of the APs vis-a-vis the implementation. The latter is an automatic theorem prover based on ILL. This paper is under consideration for publication in Theory and Practice of Logic Programming (TPLP).

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/08/2019

8523 means Parallel: Multiplicative Linear Logic Proofs as Concurrent Functional Programs

Along the lines of the Abramsky "Proofs-as-Processes" program, we presen...
research
02/14/2019

Sip4J: Statically inferring permission-based specifications for sequential Java programs

In mainstream programming languages such as Java, a common way to enable...
research
04/16/2021

{log}: Set Formulas as Programs

{log} is a programming language at the intersection of Constraint Logic ...
research
07/31/2019

Evaluation of the Implementation of an Abstract Interpretation Algorithm using Tabled CLP

CiaoPP is an analyzer and optimizer for logic programs, part of the Ciao...
research
04/02/2019

Concurrent Typestate-Oriented Programming in Java

We describe a generative approach that enables concurrent typestate-orie...
research
04/18/2022

Verification of Locally Tight Programs

ANTHEM is a proof assistant that can be used for verifying the correctne...
research
07/13/2023

Ill-Typed Programs Don't Evaluate

We introduce two-sided type systems, which are a particular kind of sequ...

Please sign up or login with your details

Forgot password? Click here to reset