进程项与操作语义 ​
一个简化进程语言可由
生成。
语义由结构操作规则生成LTS。例如
并行规则允许组件独立动作,也可规定互补动作
握手协议轨迹 ​
客户端
反复发送后等待接收;服务端
若互补动作必须握手,组合 send,再同步 recv,每轮回到初始组合状态。隐藏握手名后,外部观察可能只看见两个
若服务端改成
若并行规则还允许 send 在没有服务端时独立发生,模型变成异步或广播式通信,前述死锁可能消失。动作到底必须同步、可独立还是写入缓冲,必须由 SOS 规则决定,不能靠动作名称的自然语言含义。
引入显式 FIFO 时,组合状态需包含队列内容,send 变成入队、recv 变成出队。递归客户端即使控制项有限,未界队列也可生成无限状态图。
选择与并行的代数律 ​
在强互模拟下,选择常满足交换、结合、幂等:
并行常满足交换和结合到结构同构,但分配律
一般会因选择时机和同步环境不同而失败。代数律必须相对于具体操作语义与等价关系证明。
展开律可把有限并行项转换成其当前可执行动作之和,支撑等式推理;递归进程还需 guardedness 等条件保证方程有规范行为解。
行为等价的选择 ​
强 bisimulation 逐步匹配全部动作,连内部
等价越粗,可应用的代数替换越多,却可能丢掉死锁、分支时机或发散。若把进程项放入任意上下文,需要等价是 congruence;单纯的 weak bisimilarity 在某些选择算子下需加强为 observational congruence。
验证“两个孤立项等价”不自动允许在协议任意位置替换。上下文可能通过同步动作观察原先隐藏的分支。
failure semantics 不只记录 trace,还记录执行该 trace 后进程可稳定拒绝的事件集合。进程“内部选择只接受
must testing 量化所有内部计算:若某个内部选择会永久发散,哪怕另一个分支成功,测试也不一定必然通过。may testing 只需存在成功运行,保证更弱。选择等价前应先确定需求量词。
CCS、CSP 与 ACP 边界 ​
CCS 强调互补端口同步和 restriction,CSP 使用事件同步、trace/failure/divergence 语义,ACP 以通信函数和代数公理组织组合。它们共享进程代数思想,不是同一套操作符的不同拼写。
进程代数描述离散交互行为,不自动带时间、概率、资源消耗或共享内存弱序。相应扩展需要改变语义和等价概念。
模型检查可对有限状态进程项展开 LTS;递归和数据参数可能产生无限状态,代数语法有限不等于状态图有限。
递归与唯一解 ​
递归方程
未 guarded 的
发散进程
递归 operational semantics 常用 unfolding rule:若定义体展开后可做
开放环境的测试边界 ​
一个进程的可见动作往往还需环境握手。testing equivalence 把进程放入观察者上下文,并比较可能成功或必然成功;它能区分仅靠内部非确定“偶尔成功”和所有调度都能成功。
这说明单一 equivalence 不是进程代数的附属细节,而是决定哪些代数律和替换推论成立的语义选择。
隐藏操作还可能把原本外部可控的选择变成内部选择,从而改变 testing 结果。代数化简若先隐藏再使用外部选择律,必须确认该律对
参考资料
- Robin Milner, Communication and Concurrency, Prentice Hall, 1989, Chs. 1–7。
- C. A. R. Hoare, Communicating Sequential Processes, Prentice Hall, 1985, Chs. 1–5。
- J. C. M. Baeten, “A Brief History of Process Algebra,” Theoretical Computer Science 335(2–3), 2005, pp. 131–146。