活性属性测试与SVL脚本语言在组合验证中的应用
活性属性测试相关理论
在系统验证领域,线性时间验证是一种常用的技术。系统的行为可以用有限动作集 $A$ 来描述,系统的计算 $c$ 是 $A$ 中动作的无限长序列,即 $c = a_1a_2a_3 \cdots$,所有这样的计算构成了系统的行为 $B$,它是 $A^\omega$ 的一个子集。而属性 $P$ 从抽象角度看,也是 $A^\omega$ 的一个子集,表示所有符合该属性直观意义的正确行为。系统的行为 $B$ 满足属性 $P$(记作:$B \vDash P$)当且仅当 $B$ 中的所有计算也都在 $P$ 中。
在测试系统时,与线性时间验证不同,我们考虑的是有限行为。因为我们只能在有限时间内观察系统,看到的只是其潜在无限行为的前缀。通常,属性可分为安全属性和活性属性两类。安全属性反映系统不存在错误,活性属性则体现系统有令人满意的进展。
对于活性属性,由于其特性,在进行详尽测试时,它总是能被轻易满足,所以无法直接对其进行测试。而对于安全属性,详尽测试的结果与线性时间验证的结果是一样精确的。
为了能够对活性属性进行测试,我们可以通过定义一个安全属性 $S_{B,P}$ 来近似活性属性 $P$。首先需要引入 Eilenberg - 极限的概念,设 $L$ 是 $A^*$ 的一个子集,Eilenberg - 极限 $\lim(L)$ 有其特定的定义。我们定义的安全属性 $S_{B,P}$ 满足一定条件,并且可以证明它确实是一个安全属性。通过测试 $S_{B,P}$ 进行详尽测试,相当于检查 $B \cap P$ 是否是 $B$ 中的一个稠密集合。这在拓扑学意义上是对 $B \subseteq B \cap P$ 的
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



