34 research outputs found
The symbiosis of concurrency and verification: teaching and case studies
Concurrency is beginning to be accepted as a core knowledge area in the undergraduate CS
curriculum—no longer isolated, for example, as a support mechanism in a module on operating systems or
reserved as an advanced discipline for later study. Formal verification of system properties is often considered a
difficult subject area, requiring significant mathematical knowledge and generally restricted to smaller systems
employing sequential logic only. This paper presents materials, methods and experiences of teaching concurrency
and verification as a unified subject, as early as possible in the curriculum, so that they become fundamental elements
of our software engineering tool kit—to be used together every day as a matter of course. Concurrency and
verification should live in symbiosis. Verification is essential for concurrent systems as testing becomes especially
inadequate in the face of complex non-deterministic (and, therefore, hard to repeat) behaviours. Concurrency
should simplify the expression of most scales and forms of computer system by reflecting the concurrency of the
worlds in which they operate (and, therefore, have to model); simplified expression leads to simplified reasoning
and, hence, verification. Our approach lets these skills be developed without requiring students to be trained in
the underlying formal mathematics. Instead, we build on the work of those who have engineered that necessary
mathematics into the concurrency models we use (CSP, ?-calculus), the model checker (FDR) that lets us explore
and verify those systems, and the programming languages/libraries (occam-?, Go, JCSP, ProcessJ) that let us
design and build efficient executable systems within these models. This paper introduces a workflow methodology
for the development and verification of concurrent systems; it also presents and reflects on two open-ended case
studies, using this workflow, developed at the authors’ two universities. Concerns analysed include safety (don’t do
bad things), liveness (do good things) and low probability deadlock (that testing fails to discover). The necessary
technical background is given to make this paper self-contained and its work simple to reproduce and extend
Specifying and reasoning about concurrent systems in logic
Imperial Users onl
Continuous-time temporal logic specification and verification for nonlinear biological systems in uncertain contexts
In this thesis we introduce a complete framework for modelling and verification of biological systems in uncertain contexts based on the bond-calculus process algebra and
the LBUC spatio-temporal logic. The bond-calculus is a biological process algebra which
captures complex patterns of interaction based on affinity patterns, a novel communication
mechanism using pattern matching to express multiway interaction affinities and general
kinetic laws, whilst retaining an agent-centric modelling style for biomolecular species.
The bond-calculus is equipped with a novel continuous semantics which maps models to
systems of Ordinary Differential Equations (ODEs) in a compositional way.
We then extend the bond-calculus to handle uncertain models, featuring interval uncertainties in their species concentrations and reaction rate parameters. Our semantics is also
extended to handle uncertainty in every aspect of a model, producing non-deterministic
continuous systems whose behaviour depends either on time-independent uncertain parameters and initial conditions, corresponding to our partial knowledge of the system at
hand, or time-varying uncertain inputs, corresponding to genuine variability in a system’s
behaviour based on environmental factors.
This language is then coupled with the LBUC spatio-temporal logic which combines
Signal Temporal Logic (STL) temporal operators with an uncertain context operator
which quantifies over an uncertain context model describing the range of environments
over which a property must hold. We develop model-checking procedures for STL and
LBUC properties based on verified signal monitoring over flowpipes produced by the
Flow* verified integrator, including the technique of masking which directs monitoring for
atomic propositions to time regions relevant to the overall verification problem at hand.
This allows us to monitor many interesting nested contextual properties and frequently
reduces monitoring costs by an order of magnitude. Finally, we explore the technique
of contextual signal monitoring which can use a single Flow* flowpipe representing a
functional dependency to complete a whole tree of signals corresponding to different
uncertain contexts. This allows us to produce refined monitoring results over the whole
space and to explore the variation in system behaviour in different contexts
Revisiting sequential composition in process calculi
International audienceThe article reviews the various ways sequential composition is defined in traditional process calculi, and shows that such definitions are not optimal, thus limiting the dissemination of concurrency theory ideas among computer scientists. An alternative approach is proposed, based on a symmetric binary operator and write-many variables. This approach, which generalizes traditional process calculi, has been used to define the new LNT language implemented in the CADP toolbox. Feedback gained from university lectures and real-life case studies shows a high acceptance by computer-science students and industry engineers
Programming Languages and Systems
This open access book constitutes the proceedings of the 31st European Symposium on Programming, ESOP 2022, which was held during April 5-7, 2022, in Munich, Germany, as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2022. The 21 regular papers presented in this volume were carefully reviewed and selected from 64 submissions. They deal with fundamental issues in the specification, design, analysis, and implementation of programming languages and systems