Context-aware Trace Contracts
Preprint
Abstract
The behavior of concurrent, asynchronous procedures depends in general on the call context, because of the global protocol that governs scheduling. This context cannot be specified with the state-based Hoare-style contracts common in deductive verification. Recent work generalized state-based to trace contracts, which permit to specify the internal behavior of a procedure, such as calls or state changes, but not its call context. In this article we propose a program logic of context-aware trace contracts for specifying global behavior of asynchronous programs. We also provide a sound proof system that addresses two challenges: To observe the program state not merely at the end points of a procedure, we introduce the novel concept of an observation quantifier. And to combat combinatorial explosion of possible call sequences of procedures, we transfer Liskov's principle of behavioral subtyping to the analysis of asynchronous procedures.Keywords
All Related Versions
This publication has 15 references indexed in Scilit:
- Deductive verification of active objects with CrowbarScience of Computer Programming, 2023
- Behavioral Contracts for Cooperative Scheduling2020
- Verifying OpenJDK’s Sort Method for Generic CollectionsJournal of Automated Reasoning, 2017
- Compositional reasoning about active objects with shared futuresFormal Aspects of Computing, 2015
- The dynamic frames theoryFormal Aspects of Computing, 2010
- A Hoare Logic for the Coinductive Trace-Based Big-Step Semantics of While2010
- State space reduction using partial order techniquesInternational Journal on Software Tools for Technology Transfer, 1999
- Larch: Languages and Tools for Formal Specification1993
- Applying 'design by contract'Computer, 1992
- Temporal logic can be more expressiveInformation and Control, 1983