同步结构:信号语言与数学模型解析
1. 同步语言概述
同步语言旨在简化反应式系统的开发,为系统设计师提供从需求规格的早期阶段到代码生成或电路生产的最终阶段的方法框架。像 Signal、Lustre 和 Esterel 等同步语言,基于同步假设,提供了一种确定性的并发概念,其中操作和通信是即时的。在同步语言中,并发是将系统描述分解为一组基本通信进程的逻辑方式,并发组件之间的交互通过广播事件来实现。
同步语言能够对复杂的反应式系统进行高级规范和极其模块化的设计。其中,Signal 语言尤为有趣,它允许对系统的(早期)关系属性进行规范,然后逐步细化以获得可执行的规范。
2. Signal 语言简介
Signal 是一种等式同步编程语言,其程序模块化地组织成由信号上的联立方程组成的进程。在 Signal 中,方程是对输入信号的基本即时操作,用于定义输出。信号是在完全有序的瞬间集合上定义的值序列,在任何给定瞬间,信号要么存在,要么不存在。
Signal 中的进程语法如下:
P ::= (P || P ′) // 并行组合
| P /x // 限制
| R(x1, · · ·, xn) // 即时关系
| z := x when y // 选择
| z := x default y // 确定性合并
| y := x$ init v // 延迟
下面是各操作的详细解释:
- 并行组合(P || P ′) :同步 P 和 P ′ 产生的事件。