6 research outputs found
Processes, Systems \& Tests: Defining Contextual Equivalences
In this position paper, we would like to offer and defend a new template to
study equivalences between programs -- in the particular framework of process
algebras for concurrent computation.We believe that our layered model of
development will clarify the distinction that is too often left implicit
between the tasks and duties of the programmer and of the tester. It will also
enlighten pre-existing issues that have been running across process algebras as
diverse as the calculus of communicating systems, the -calculus -- also
in its distributed version -- or mobile ambients.Our distinction starts by
subdividing the notion of process itself in three conceptually separated
entities, that we call \emph{Processes}, \emph{Systems} and \emph{Tests}.While
the role of what can be observed and the subtleties in the definitions of
congruences have been intensively studied, the fact that \emph{not every
process can be tested}, and that \emph{the tester should have access to a
different set of tools than the programmer} is curiously left out, or at least
not often formally discussed.We argue that this blind spot comes from the
under-specification of contexts -- environments in which comparisons takes
place -- that play multiple distinct roles but supposedly always \enquote{stay
the same}.We illustrate our statement with a simple Java example, the
\enquote{usual} concurrent languages, but also back it up with
-calculus and existing implementations of concurrent languages as
well
Useful Open Call-By-Need
This paper studies useful sharing, which is a sophisticated optimization for ?-calculi, in the context of call-by-need evaluation in presence of open terms. Useful sharing turns out to be harder in call-by-need than in call-by-name or call-by-value, because call-by-need evaluates inside environments, making it harder to specify when a substitution step is useful. We isolate the key involved concepts and prove the correctness and the completeness of useful sharing in this setting
Modules over monads and operational semantics
This paper is a contribution to the search for efficient and high-level
mathematical tools to specify and reason about (abstract) programming languages
or calculi. Generalising the reduction monads of Ahrens et al., we introduce
transition monads, thus covering new applications such as
lambda-bar-mu-calculus, pi-calculus, Positive GSOS specifications, differential
lambda-calculus, and the big-step, simply-typed, call-by-value lambda-calculus.
Moreover, we design a suitable notion of signature for transition monads
A Fresh Look at the lambda-Calculus (Invited Talk)
The (untyped) lambda-calculus is almost 90 years old. And yet - we argue here - its study is far from being over. The paper is a bird\u27s eye view of the questions the author worked on in the last few years: how to measure the complexity of lambda-terms, how to decompose their evaluation, how to implement it, and how all this varies according to the evaluation strategy. The paper aims at inducing a new way of looking at an old topic, focussing on high-level issues and perspectives
Modules over monads and operational semantics (expanded version)
This paper is a contribution to the search for efficient and high-level
mathematical tools to specify and reason about (abstract) programming languages
or calculi. Generalising the reduction monads of Ahrens et al., we introduce
transition monads, thus covering new applications such as
lambda-bar-mu-calculus, pi-calculus, Positive GSOS specifications, differential
lambda-calculus, and the big-step, simply-typed, call-by-value lambda-calculus.
Moreover, we design a suitable notion of signature for transition monads