TLA+ 《Specifying Systems》翻译初稿——Section 4.5 What We're Specifying?(我们在定义什么?)

本节描述了规约可以是描述系统及其环境的公式,引入了封闭式系统规约和开放式系统规约的概念。

我在这一章的开头写过,我们将定义一个 F I F O FIFO 缓冲区。 F I F O FIFO 模块的公式 S p e c Spec 实际上定义了一组行为,每个行为都代表了一组在 i n in o u t out 通道上发送和接收的操作。发送方执行对 i n in 通道的发送操作,接收方执行对 o u t out 通道的接收操作。发送方和接收方不是 F I F O FIFO 缓冲区的一部分,它们形成了系统的“环境”。

我们的规约描述了一个由 F I F O FIFO 缓冲区及其环境组成的系统。满足模块 F I F O FIFO 规约公式的行为,表征了系统及其环境正确运行的过程。在理解规约时,明确指出哪些步骤是系统步骤,哪些是环境步骤通常是很有帮助的。我们可以通过定义下一个状态动作来说明:
N e x t S y s N e x t E n v N e x t Next \triangleq SysNext \lor EnvNext

这里 S y s N e x t SysNext 表示系统步骤, E n v N e x t EnvNext 表示环境步骤。对于 F I F O FIFO ,我们有如下定义:
S y s N e x t B u f R c v B u f S e n d E n v N e x t ( m s g M e s s a g e : S S e n d ( m s g ) ) R R c v SysNext \triangleq BufRcv \lor BufSend \\ EnvNext \triangleq (\exists msg \in Message:SSend(msg))\lor RRcv

虽然这种定义下一状态动作的方法可以提示读者阅读规约,但却没有什么形式上的意义,该 S p e c Spec 规约实际上还是等价于 I n i t [ N e x t ] Init \land \square[Next]_{\ldots} ,改变我们组织 N e x t Next 的方式并不会改变它的含义。如果一个行为不满足 S p e c Spec ,没有任何方式可以告诉我们到底是系统还是它的环境的原因。

S p e c Spec 这样描述了系统及其环境的正确行为的公式,我们称为封闭系统或完整系统规约。开放系统规约只描述系统的正确行为。如果行为能够表征系统正确运行的过程,或者只是它的环境出了问题,才导致不能正确地运行,则该行为满足开放系统规约。第10.7节解释如何编写开放系统规约。

开放系统规约在理论上更令人满意,不过封闭式系统规约更容易编写,并且它们背后的数学更简单,所以我们更习惯于书写封闭系统的规约。通常很容易将封闭系统规约转换为开放系统规约,不过在实践中,很少有理由这样做。

发布了4 篇原创文章 · 获赞 1 · 访问量 5747

猜你喜欢

转载自blog.csdn.net/robinhzp/article/details/104094772
今日推荐