Java is a programming language designed with concurrency in mind from its inception. However, the synchronization mechanism provided is a restricted version of Hoare's Monito...
Developing a distributed application for mobile resource constrained devices is a difficult and error-prone task that requires awareness of several system-level details (e.g., faul...
Shared mutable objects pose grave challenges in reasoning, especially for data abstraction and modularity. This paper presents a novel logic for erroravoiding partial correctness o...
Anindya Banerjee, David A. Naumann, Stan Rosenberg
Many compiler optimizations and software engineering tools need precise pointer analyses to be effective. Unfortunately, many Java features, such as dynamic class loading, refle...
Supporting read-only and side effect free execution has been the focus of a large body of work in the area of statically typed programming languages. Read-onlyness in dynamically t...