写给学生看的系统分析与验证笔记(十八)—CTL与公平性


回顾

稍微回顾一下LTL与公平性相关的知识

我们知道,在LTL上的公平性约束可以表示为

ϕ \phi ϕ ψ \psi ψ是命题公式:

  • 无条件的公平性: □ ◊ ψ \Box\Diamond\psi ψ
  • 强公平性: □ ◊ ϕ → □ ◊ ψ \Box\Diamond\phi\rightarrow\Box\Diamond\psi ϕψ
  • 弱公平性: ◊ □ ϕ → □ ◊ ψ \Diamond\Box\phi\rightarrow\Box\Diamond\psi ϕψ

并且,在LTL上添加公平性约束,并不会影响我们的对LTL的模型检测,因为我们推导了结论:
s ⊨ f a i r ϕ 当且仅当 对于所有的π∈Paths(s),如果 π ⊨ f a i r , 那 么 π ⊨ ϕ 当且仅当  s ⊨ ( f a i r → ϕ ) s\vDash_{fair}\phi \\ \text{当且仅当 对于所有的π∈Paths(s),如果}π\vDash fair,那么π\vDash\phi \\ \text{当且仅当 }s\vDash (fair\rightarrow\phi) sfairϕ当且仅当 对于所有的π∈Paths(s),如果πfairπϕ当且仅当 s(fairϕ)

看到 s ⊨ ( f a i r → ϕ ) s\vDash (fair\rightarrow\phi) s(fairϕ)这个地方,假设我们的公平性假设现在是fair= ◊ □   a \Diamond\Box\ a  a,那么可满足性就变成了 s ⊨ ( ◊ □ ¬ a ∨ ϕ ) s\vDash (\Diamond\Box\lnot a\vee\phi) s(¬aϕ),这边是个 ∨ \vee 的关系,所以模型检测算法可以直接用在具有公平性约束的LTL上。

前面有一张对比LTL和CTL的表,我们也知道了如果CTL具有公平性约束,就不会像LTL那么简单了,需要额外的技术进行操作,那么接下来慢慢看吧。

CTL公平性约束

其实形式上的话和LTL的公平性约束公式有点像,不过CTL要考虑所有路径的状况

unconditional CTL fairness定义为:
u f a i r = ⋀ 1 ≤ i ≤ k □ ◊ ψ i ufair=\bigwedge_{1≤i≤k}\Box\Diamond\psi_{i} ufair=1ikψi

strong CTL fairness的形式为:
s f a i r = ⋀ 1 ≤ i ≤ k ( □ ◊ ψ i → □ ◊ ϕ i ) sfair=\bigwedge_{1≤i≤k}(\Box\Diamond\psi_{i}\rightarrow\Box\Diamond\phi_{i}) sfair=1ik(ψiϕi)

weak CTL fairness定义为:
w f a i r = ⋀ 1 ≤ i ≤ k ( ◊ □ ψ i → □ ◊ ϕ i ) wfair=\bigwedge_{1≤i≤k}(\Diamond\Box\psi_{i}\rightarrow\Box\Diamond\phi_{i}) wfair=1ik(ψiϕi)

其中 ψ i , ϕ i \psi_{i},\phi_{i} ψi,ϕi是CTL状态公式

CTL公平性假设fair定义和公平性假设定义类似,就是ufair,sfair,wfair上面三者的结合

CTL公平性假设的语义

  • s ⊨ f a i r t r u e s\vDash_{fair} true sfairtrue
  • s ⊨ f a i r a s\vDash_{fair} a sfaira当且仅当 a∈Label(s)
  • s ⊨ f a i r φ 1 ∧ φ 2 s\vDash_{fair} φ_{1}\wedge φ_{2} sfairφ1φ2当且仅当 ( s ⊨ f a i r φ 1 ) ∨ ( s ⊨ f a i r φ 2 ) (s\vDash_{fair} φ_{1})\vee (s\vDash_{fair} φ_{2}) (sfairφ1)(sfairφ2)
  • s ⊨ f a i r ¬ φ s\vDash_{fair} \lnotφ sfair¬φ 当且仅当 ¬ ( s ⊨ f a i r φ ) \lnot(s\vDash_{fair} φ) ¬(sfairφ)
  • s ⊨ f a i r ∃ φ s\vDash_{fair} \existφ sfairφ 当且仅当 存在从s开始的公平性路径满足 s ⊨ f a i r φ s\vDash_{fair}φ sfairφ
  • s ⊨ f a i r ∀ φ s\vDash_{fair} \forallφ sfairφ 当且仅当 对于所有从s开始的公平性路径满足 s ⊨ f a i r φ s\vDash_{fair}φ sfairφ
  • s ⊨ f a i r ◯ φ s\vDash_{fair} \bigcircφ sfairφ 当且仅当 π [ 1 ] ⊨ f a i r φ \pi[1]\vDash_{fair}φ π[1]fairφ
  • s ⊨ f a i r φ 1 U φ 2 s\vDash_{fair} φ_{1}Uφ_{2} sfairφ1Uφ2 当且仅当 存在 j ≥ 0 j\ge0 j0使得 π [ j ] ⊨ f a i r φ 2 ∧ ( ∀ 0 ≤ k < j . π [ k ] ⊨ f a i r φ 1 ) \pi[j]\vDash_{fair}φ_{2}\wedge(\forall0\le k\lt j.\pi[k]\vDash_{fair}φ_{1}) π[j]fairφ2(0k<j.π[k]fairφ1)

带有公平性假设的CTL模型检测问题

给定一个TS模型,给定一个CTL公式 ϕ \phi ϕ,它的形式为ENF,并且给定一个CTL上的公平性假设fair,如何判断 T S ⊨ f a i r ϕ TS\vDash_{fair} \phi TSfairϕ是否成立?

其实和LTL最不同的处理方式就是:

通过忽略不公平路径的方式来改变CTL公式的语义

算法主要流程不变:

  1. 递归地计算 S a t ( ϕ ) = { s ∈ S ∣ s ⊨ ϕ } Sat(\phi)=\{s\in S|s\vDash\phi\} Sat(ϕ)={sSsϕ}
  2. 检查是不是所有的初始状态都属于 S a t ( ϕ ) Sat(\phi) Sat(ϕ),即 S 0 ⊆ S a t ( ϕ ) S_{0}\subseteq Sat(\phi) S0Sat(ϕ)

但是可满足集的计算方式部分发生了变化

1、不发生变化的部分

  • S a t f a i r ( t r u e ) = S Sat_{fair}(true)=S Satfair(true)=S
  • S a t f a i r ( a ) = { s ∈ S ∣ a ∈ L ( s ) } Sat_{fair}(a)=\{s\in S|a\in L(s)\} Satfair(a)={sSaL(s)},对于任意a∈AP
  • S a t f a i r ( ϕ ∧ ψ ) = S a t f a i r ( ϕ ) ∩ S a t f a i r ( ψ ) Sat_{fair}(\phi\wedge\psi)=Sat_{fair}(\phi)\cap Sat_{fair}(\psi) Satfair(ϕψ)=Satfair(ϕ)Satfair(ψ)
  • S a t f a i r ( ¬ ϕ ) = S ∖ S a t f a i r ( ϕ ) Sat_{fair}(\lnot\phi)=S\setminus Sat_{fair}(\phi) Satfair(¬ϕ)=SSatfair(ϕ)

2、发生部分变化的部分

  • S a t f a i r ( ∃ ◯ ϕ ) = S a t ( ∃ ◯ ( ϕ ∧ a f a i r ) ) Sat_{fair}(\exist\bigcirc\phi)=Sat(\exist\bigcirc(\phi\wedge a_{fair})) Satfair(ϕ)=Sat((ϕafair))
  • S a t f a i r ( ∃ ϕ U ψ ) = S a t ( ∃ ( ϕ U ( ψ ∧ a f a i r ) ) ) Sat_{fair}(\exist \phi U\psi)=Sat(\exist(\phi U(\psi\wedge a_{fair}))) Satfair(ϕUψ)=Sat((ϕU(ψafair)))

这个 a f a i r a_{fair} afair是一个额外添加的原子命题,它的含义是
a f a i r ∈ L ( s ) 当 且 仅 当 s ⊨ f a i r ∃ □ t r u e a_{fair}\in L(s)当且仅当s\vDash_{fair}\exist\Box true afairL(s)sfairtrue

自然语言表述一下就是把不公平的部分排除在外不进行考虑, 根据例子来看看这个 a f a i r a_{fair} afair是怎么把不公平路径排掉的

例如我们有这么一个TS系统
在这里插入图片描述
给定一个CTL公式 ∃ ◊ c \exist\Diamond c c,给定一个strong fair: f a i r = □ ◊ b → □ ◊ c fair=\Box\Diamond b\rightarrow\Box\Diamond c fair=bc

然后,因为这个CTL公式带有了公平性假设的约束,所以我们只考虑满足公平性假设的情况,而不考虑不满足公平性假设的情况,所以原始的CTL公式变化为 ∃ ◊ ( c ∧ a f a i r ) \exist\Diamond (c\wedge a_{fair}) (cafair)

我们可以看到虚线上面的状态都是满足这个公平性假设,而唯独最下面的那个状态不满足,我们就把它排除掉。
在这里插入图片描述
最后 ( c ∧ a f a i r ) (c\wedge a_{fair}) (cafair)指的就是下图中蓝色圆圈的状态
在这里插入图片描述
通过加入命题公式 a f a i r a_{fair} afair的方式,我们用形式化的方式将不公平路径从考虑中排除,然后就按照计算Sat方式就可以完成计算了。

其中这两部分和纯CTL的模型检测还是很相似的,不过一旦CTL公式是类似于 ∃ □ a \exist\Box a a这样子的话,上面的方式就没啥用了,所以对于 ∃ □ a \exist\Box a a需要重新定义算法

3、需要重新定义算法的部分( ∃ □ a \exist\Box a a)

这个部分我们就是要计算 S a t f a i r ( ∃ □ a ) Sat_{fair}(\exist\Box a) Satfair(a)这个特例,怎么算呢?分为三步:
1、在TS上除去那些 s ⊭ a s\nvDash a sa的状态,获得一个子图
2、找找看子图上是否存在满足公平性的状态所组成的环,并使得从初始状态 s 0 s_{0} s0出发可以达到这个环
3、所有环上的状态以及可以到达这个环的状态组成的集合就是 S a t f a i r ( ∃ □ a ) Sat_{fair}(\exist\Box a) Satfair(a)的值

来看一个例子,假设我们有这么一个TS,CTL公式为 ∃ □ a \exist\Box a a s ⊨ a s\vDash a sa s ⊭ a s\nvDash a sa的部分都标出来了,我们按照第一步先把 s ⊭ a s\nvDash a sa的状态都删了,得到右边那一张子图

在这里插入图片描述
现有公平性假设为 f a i r = ( □ ◊ b 1 → □ ◊ c 1 ) ∧ ( □ ◊ b 2 → □ ◊ c 2 ) fair=(\Box\Diamond b_{1}\rightarrow \Box\Diamond c_{1})\wedge (\Box\Diamond b_{2}\rightarrow \Box\Diamond c_{2}) fair=(b1c1)(b2c2)

在这里插入图片描述
我们看看这个子图里面,是否有满足公平性的状态组成的环,我们现在找到一个环由 s 1 s_{1} s1 s 2 s_{2} s2组成,并且它们满足公平性,我们看到 s 0 s_{0} s0是初始状态可以到达这个环,而 s 3 s_{3} s3也可以到达这个环,所以 S a t f a i r ( ∃ □ a ) = { s 0 , s 1 , s 2 , s 3 } Sat_{fair}(\exist\Box a)=\{s_{0},s_{1},s_{2},s_{3}\} Satfair(a)={s0,s1,s2,s3}

至此我们解决了带有公平性假设的CTL模型检测问题

时间复杂度

假设TS带有N个状态和M个转换,假设公平性假设由k个约束组成

那么解决带有公平性假设约束的CTL公式 ϕ \phi ϕ的模型检测问题的时间复杂度为:
O ( ∣ ϕ ∣ ⋅ ( M + N ) ⋅ k ) O(|\phi|·(M+N)·k) O(ϕ(M+N)k)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值