Specifying Systems 笔记 (Liveness)
Specifying Systems 的 1-7
章层层推进,在实例中穿插着原理讲解,深入浅出地讲解了 Specification
是什么,以及如何设计系统规约。这些 Specification 表明了系统的 Safety
属性 ——
即系统行为被约束在一定范围内,不会做出一些不被允许的行为(something
bad does not happen)。在 TLA+ 中,通常使用公式
一些概念
value
value 表示通常意义上的值,如
state
state 是对一些变量进行赋值(的结果),如
state function
state function 是一个以 变量(不包含 primed variable)、常量、操作符构建的表达式。这个表达式给所有 state 都映射了一个 value。可以理解为每个 state 都可以经过这个 function 计算,得到一个 value。
state predicate
结果 value 为 Boolean 类型的 state
function。即 state predicate 一个作用于 state
进行真值判断的公式。
behavior
behavior 是 state 组成的无穷序列,如
step
step 是 state 之间直接变化的步骤。假如
primed variable
变量发生变化后的值,如
hr 变量经过一个 step 之后,其值等于原先的值加
1。
action
包含 primed variable 和 unprimed variable 的 formula。action 作用于 step 进行真值判断,以断定 state(的 value)是否可以再发生变化。specification(规约)通常由许多 action 组成。
formula
值为 TRUE 或 FALSE 的逻辑表达式(数理逻辑中的「公式」)
这些定义的形式和语义都不一定准确,只是帮助加深理解 TLA+。精确定义详见 Specifying Systems,尤其是 Chapter 16 有许多描述。
逻辑基础
命题逻辑
命题逻辑语法可以用如下 BNF 表示:
谓词逻辑
PTL: Propositional Temporal Logic,是 LTL 的另一种简称,参考:
Temporal Logic 简介
时态公式是行为(behavior)的真值判断式。对于一个行为
也可称作时态公式
Tip
为了便于叙述,我们将”时态公式”简称为”公式”。
公式可以通过连接词进行组合,也可使用量词进行修饰。组合公式的含义如下:
上面出现的公式
state predicate,P 是一个「状态谓词」。其语义是:如果将
看作时态公式,那么 (behavior)满足 当且仅当 中的第一个 state 满足 。 其中
是 state predicate。behavior 满足 当且仅当 behavior 中所有 state 满足 。 其中
是 action, 是 state function。behavior 满足该公式 当且仅当 behavior 中每一对相继的 states 是一个满足 的 step。 注意:
中的 可以是 state function,并不限定于 variables(如 )。state function 可以增加 prime 运算符形成 transition function。 等价于 。详见 Spcifying Systems 16.2.3。
这三种公式中,虽然
state predicate,但可以将其看作是一个没有
primed variables 的 action(这种 action 作用于 state
得到新的 state' 没有改变,即一个 stuttering
step)。这样,我们就可以把时态公式归纳为两种形式:
语义解释
定义
true 等价于
state predicate,只要
true,
true 等价于 所有的
step(
定义:true 等价于 对于所有的
true:
一个很自然的泛化就是把 action
Important
因此,
示例:
更多时态公式定义
公式中 A 是一个
action,是一个 state function,这表示最终某些 step 是一个改变了且满足 的 step。 如果定义
,那么也可以理解 是 和 的结合,即最终有一个 step 会发生。(这种理解不是完全正确的,因为 并不是一个合法的公式,只是一个简写)。 太好理解,不用解释 太好理解,不用解释
时态逻辑重言式(恒等式)
时态逻辑推理规则(类似于 MP 规则)
- 概括(泛化?)规则:
,表示 为 true时,为 true。 - 蕴含概括规则:
需要意与重言式与推理规则的区别。例如,上面的’概括规则’要求
true 时才能推定
Liveness 定义
liveness 属性可以通过时态逻辑进行描述!
TLA+ 提供两种标准的(常用的)构建 Liveness 的符号
Weak Fairness
这些公式的等价性可以通过时态逻辑和命题逻辑的重言式进行证明。如果用
Comments