写给学生看的系统分析与验证笔记(十二)——验证ω-正则属性(Verifying ω-regular properties)


前言

经过这么多知识的准备,终于可以开始验证ω-正则属性了,之前介绍的ω-正则属性和NBA的知识都会用上

首先回顾一下我们是怎么做正则安全性的验证的,如下图所示
在这里插入图片描述
现在我们要验证的是ω-正则属性,其实总体流程都是一样的,先要有一个TS模型,然后将属性转换为接受坏行为的自动机,现在我们要用的自动机是NBA,并用 P ‾ \overline{P} P表示坏行为,用相同的运算 ⊗ \otimes 构建新TS,最后验证的F条件也发生了变化,我们也会介绍新的算法。

在这里插入图片描述
如果忘了啥叫ω-正则属性和NBA,看看这篇Büchi自动机


好,介绍结束,现在开始回归问题

给定一个TS和一个ω-正则属性P,如何判断 T S ⊨ P TS\vDash P TSP?

  • 建立对应系统坏行为的NBA,记为A,例如, L ω ( A ) = ( 2 A P ) ω ∖ P L_{ω}(A)=(2^{AP})^ω\setminus P Lω(A)=(2AP)ωP
  • 检查 T r a c e s ( T S ) ∩ L ω ( A ) = ∅ Traces(TS)\cap L_{ω}(A)=\varnothing Traces(TS)Lω(A)=是否成立(就是检查TS系统里面是否存在不满足属性的坏行为)
  • 为了做到上面的检查,需要利用运算 T S ⊗ A TS\otimes A TSA生成新的TS,并检查 T S ⊗ A TS\otimes A TSA满足永远不会形成接受A的情况

对于这里的第三步,对一个NBA来说,接受的情况是指可以使得NBA无限经常次访问F,不能满足接受,可以用语言表示为有限经常次访问F,我们需要用到TS上持续性(persistence property)的知识。

持续性

P p e r s P_{pers} Ppers为LT属性,并且 P p e r s ⊆ ( 2 A P ) ω P_{pers}\subseteq (2^{AP})^ω Ppers(2AP)ω,P如果被称为持续性,那么存在AP上的命题逻辑公式 ϕ \phi ϕ,使得
P p e r s = { A 0 A 1 A 2 . . . ∈ ( 2 A P ) ω ∣ ∃ i ≥ 0. ∀ j ≥ i . A j ⊨ ϕ } P_{pers}=\{A_{0}A_{1}A_{2}...∈(2^{AP})^ω|\exist i≥0.\forall j≥i.A_{j}\vDash\phi\} Ppers={A0A1A2...(2AP)ωi0.ji.Ajϕ}

就是说当某个时间点之后, ϕ \phi ϕ将会一直成立(用后面章节的LTL表示就是 ◊ □ ϕ \Diamond\Box\phi ϕ

这里的 ϕ \phi ϕ被称为 P p e r s P_{pers} Ppers的持续条件

看到上面图片的" T S ⊗ A ⊨ 有 限 经 常 次 访 问 F TS\otimes A\vDash有限经常次访问F TSA访F",“有限经常次访问F”表示在前面的某一段时间内可以访问F,但是当到达某一个时间点之后,就再也不会访问F,如果使用持续性的表达方式,这句话也可以换一种表达方式为" e v e n t u a l l y   f o r e v e r   ¬ F eventually\text{ }forever\text{ }\lnot F eventually forever ¬F",这句话的持续条件就是 ¬ F \lnot F ¬F

验证ω-正则属性

给定不存在终止状态的 T S = ( S , A c t , → , I , A P , L ) TS=(S, Act, →,I,AP, L) TS=(S,Act,,I,AP,L),以及一个非阻塞的NBA A = ( Q , Σ , δ , Q 0 , F ) A = (Q, Σ, δ, Q_{0}, F) A=(Q,Σ,δ,Q0,F),非阻塞(non-blocking)的意思是,对于NBA的每个状态来说,接受任意输入都能转换为下一个状态,而不会受到阻塞。这个NBA用来表示ω-正则属性P的坏行为。

生成新的TS过程与验证正则安全性几乎是一样的,因为NBA和NFA的表示方式相同,运算过程和 ⊗ \otimes 符号详细请看验证正则安全性

对于ω-正则属性的模型检测,下面几种陈述都是等价的

  • T ⊨ P T\vDash P TP
  • T r a c e s ( T S ) ∩ L ω ( A ) = ∅ Traces(TS)\cap L_{ω}(A)=\varnothing Traces(TS)Lω(A)=
  • T S ⊗ A ⊨ e v e n t u a l l y   f o r e v e r   ¬ F TS\otimes A\vDash eventually\text{ }forever\text{ }\lnot F TSAeventually forever ¬F

举例

现在我们有一个简单的红绿灯TS系统

在这里插入图片描述
嗯,实在是够简单的,毕竟是用作例子嘛

现在它有一个属性P“无限经常次会出现绿灯”(咳咳,我知道稍微瞄一眼就知道这个是对的,但是现在我们假装不知道这个属性是否成立)

为了验证这个性质是否成立,我们需要构建一个接受坏行为的NBA

对于这个属性坏行为就是取P的补,是指“有限经常次出现green”或者“最终永远不会出现green”
在这里插入图片描述
所以我们为这个坏行为构建了一个NBA,解释一下,首先在 q 0 q_{0} q0上的true表示了一个有限的片段,在这个有限的片段里面,出现什么都无所谓,然后到了某一个时间点,也就是 q 0 q_{0} q0 q 1 q_{1} q1的这个转换,输入的 ¬ g r e e n \lnot green ¬green代表了这个时间点,在这个时间点之后,就再也不会出现green了,将会一直出现 ¬ g r e e n \lnot green ¬green循环,因为一旦在这个时间点后出现了green,那么NBA就会转换到 q 2 q_{2} q2,导致无法无限经常次访问 q 1 q_{1} q1,该输入也就不能被NBA接受

有了TS模型和坏行为代表的NBA,接下来就该构建新的TS了,利用 ⊗ \otimes 计算,得出
在这里插入图片描述
我们要检查的是 e v e n t u a l l y   f o r e v e r   ¬ F eventually\text{ }forever\text{ }\lnot F eventually forever ¬F,看看它最终会不会永远不访问 q F q_{F} qF呢?这里的接受状态 q F q_{F} qF指的是 q 1 q_{1} q1,让我们来看一下,虽然它会经过 q 1 q_{1} q1,但也就最多经过一次,之后就再也不会经过了,所以是能够满足最终永远 ¬ F \lnot F ¬F这个条件的,即该TS能够满足属性P

既然讲完了模型检测的方法,又到了最后讲算法的环节啦,我们如何用一种算法表示上述检查 e v e n t u a l l y   f o r e v e r   ¬ F eventually\text{ }forever\text{ }\lnot F eventually forever ¬F的步骤?简单来说就是在新的TS上找环,看看一个可达状态 q F q_{F} qF是否在图中的一个环里面,如果它在环里面,那么说明它可能无限经常次被访问,即 T S ⊭ P TS\nvDash P TSP,如果不在环里就说明 T S ⊨ P TS\vDash P TSP,看看上面的图,状态 q 1 q_{1} q1并不在任何一个环里面。

接下来把红绿灯的模型换一换
在这里插入图片描述
最终生成的TS系统成为了这个样子,此时状态 q 1 q_{1} q1在一个环里面,所以这个系统不满足“无限经常次会出现绿灯”这一性质
在这里插入图片描述

算法的话就是图上的强连通分量(SCC)的问题,求解SCC需要基于所有的可达状态,除了基于强连通分量的方法外还有一种基于nested DFS的算法,该算法在最坏情况下仍要遍历所有的节点,但是也有可能提前终止,代码贴在Nested Dfs算法

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值