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 \(\pi\)-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 \(\lambda\)-calculus and existing implementations of concurrent languages as well.
翻译:在此立场文件中, 我们希望提供并维护一个新的模板, 研究程序之间的等值 -- 特定的进程代数框架中的等值, 用于同时计算 。 我们相信, 我们的分层发展模式将澄清程序员的任务和职责与测试员的任务和职责之间往往隐含的区别 。 它还将启发像对通信系统的微积分( \\\\ pi\)- 计算 -- 也在其分布式 { 或移动环境 。 我们的区别始于在三个概念上分离的实体内对进程本身概念进行分解的分解 。 我们称之为程序员的任务和职责之间往往存在隐含的区别 。 尽管人们可以观察到的东西的作用以及连接定义的精细度都得到了深入的研究, 简单的计算过程可以测试 \ { { { 后方} 或移动环境。 \ \ \ 测试者应该从三个概念上分离的实体内对进程本身的概念进行分解 。 \ \ { { { { { { { { { { { { { { { { { { { { { { { r r } r } r } } 。} 。} 在不同的环境里 里 中, 测试器应该从一个不同的环境里 使用不同的环境里 中,,,,,,,,,,,,,,,,, 也可以 以 以 直 。