4 research outputs found
Static Trace-Based Deadlock Analysis for Synchronous Mini-Go
We consider the problem of static deadlock detection for programs in the Go
programming language which make use of synchronous channel communications. In
our analysis, regular expressions extended with a fork operator capture the
communication behavior of a program. Starting from a simple criterion that
characterizes traces of deadlock-free programs, we develop automata-based
methods to check for deadlock-freedom. The approach is implemented and
evaluated with a series of examples
A Refinement Logic for the Fork Calculus
The Fork Calculus FC presents a theory of communicating systems in family with CCS, but it differs in the way that processes are put in parallel. In CCS there is a binary parallel operator j, whereas FC contains a unary fork operator. We provide FC with an operational semantics, together with a congruence relation between processes. Further, a refinement logic for program specification and design is presented. In this logic it is possible to freely mix programming constructs with specification constructs, thereby allowing us to define a compositional proof system. The proof rules of this system are applied to a non-trivial example. 1 Introduction One goal for work within program specification is to provide a theory for the formal refinement of specifications into programs via sequences of verified-correct development steps. In this paper we shall pursue this goal by focusing on specification and stepwise refinement into programs in the Fork Calculus. The Fork Calculus, FC, first pre..