【面向计算机的数理逻辑/软件理论基础笔记】面向CTL的模型检测

模型检测

  • 定义:在定理证明中,形式验证把待证明的性质直接作为一个数学定理来证明,也称为演绎式验证。
  • 基本思想:和逐一证明一个结构下所有数据在一个公式下是否都正确相比,直接检验这个结构是否满足该公式来说更加容易。
  • 原理:模型通常是迁移系统或有限状态的自动机,用 M \mathcal{M} M表示,系统的性质用逻辑公式进行规约,用 ϕ \phi ϕ表示,时态逻辑是极其重要的性质规约逻辑。把系统的性质用模型进行规约,表示为 M ⊨ ϕ \mathcal{M} \vDash \phi Mϕ,核心是有穷状态空间上的遍历策略和算法。如果 M ⊨ ϕ \mathcal{M} \vDash \phi Mϕ成立,则输出为Yes,如果 M ⊨ ϕ \mathcal{M} \vDash \phi Mϕ不成立,则输出为No。

标记算法

  • 通俗理解:就好像一个适配器,为了让CTL公式 ϕ \phi ϕ能够更好的用于模型检测,通过改变连接词的方式,将其转换为等价公式,有利于模型检测。需要考虑的连接词为 ⊤ , ⊥ , ∧ , A F , E U , E X \top,\perp,\wedge,AF,EU,EX ,,,AF,EU,EX,当公式中出现这样的连接词时,我们才会考虑用标记算法让公式更有助于模型检测。
  • 基本思想:若状态 s s s满足 ϕ \phi ϕ,则在 s s s处进行标记公式 ϕ \phi ϕ,具体是以 ϕ \phi ϕ的结构进行标记。
  • 定义:设 ψ \psi ψ ϕ \phi ϕ的子公式且满足 ψ \psi ψ的所有直接子公式的状态都已标记了,现在来标记 ψ \psi ψ,标记算法如下:
    • ⊥ \perp :没有状态用 ⊥ \perp 标记
    • p p p:若 p ∈ L ( s ) p \in L(s) pL(s),则状态 s s s标记 p p p
    • ψ ∧ ψ \psi \wedge \psi ψψ:若 s s s已标记了 ψ 1 \psi_1 ψ1 ψ 2 \psi_2 ψ2,则 s s s标记 ψ ∧ ψ \psi \wedge \psi ψψ
    • ¬ ψ 1 \neg \psi_1 ¬ψ1:若 s s s没有标记 ψ 1 \psi_1 ψ1,则 s s s标记 ¬ ψ 1 \neg \psi_1 ¬ψ1
    • A F ψ 1 AF \psi_1 AFψ1
      • 若状态 s s s标记了 ψ 1 \psi_1 ψ1,则状态 s s s标记 A F ψ 1 AF \psi_1 AFψ1
      • 若状态 s s s的所有后继都标记了 A F ψ 1 AF \psi_1 AFψ1,则状态 s s s标记 A F ψ 1 AF \psi_1 AFψ1,直到不再发生变化
    • E [ ψ 1 U ψ 2 ] E[\psi_1 U \psi_2] E[ψ1Uψ2]
      • 若状态 s s s标记了 ψ 2 \psi_2 ψ2,则状态 s s s标记 E [ ψ 1 U ψ 2 ] E[\psi_1 U \psi_2] E[ψ1Uψ2]
      • 若状态 s s s标记了 ψ 1 \psi_1 ψ1 s s s有一个后继标记了 E [ ψ 1 U ψ 2 ] E[\psi_1 U \psi_2] E[ψ1Uψ2],则状态 s s s标记 E [ ψ 1 U ψ 2 ] E[\psi_1 U \psi_2] E[ψ1Uψ2],直到不再发生变化
    • E X ψ 1 EX \psi_1 EXψ1:若状态 s s s的一个后继标记了 ψ 1 \psi_1 ψ1,则状态 s s s标记 E X ψ 1 EX \psi_1 EXψ1

不动点

  • 单调函数:设 S S S是一状态集, 2 S 2^S 2S是S的幂集, F : 2 S → 2 S F:2^S \to 2^S F:2S2S是一函数
    • F F F是单调函数,若 ∀ X , Y ∈ 2 S \forall X,Y \in 2^S X,Y2S,当 X ⊆ Y X \subseteq Y XY时,有 F ( X ) ⊆ F ( Y ) F(X) \subseteq F(Y) F(X)F(Y)
    • S S S的子集 X X X称为 F F F的不动点,即 F ( X ) = X F(X) = X F(X)=X
  • 符号 F i ( X ) F^i (X) Fi(X)表示函数 F F F作用在集合 X X X i i i次,即
    F ( X ) = { X , i = 0 F ( F i − 1 ( X ) ) , i ≥ 1 F(X)= \left\{\begin{matrix} & X,&i=0 \\ & F(F^{i-1}(X)),&i\geq 1 \end{matrix}\right. F(X)={X,F(Fi1(X)),i=0i1
  • Knaster-Tarski不动点定理:设 S S S是含有 n + 1 n+1 n+1个元素的集合, F : 2 S → 2 S F:2^S \to 2^S F2S2S是单调函数,则 F n + 1 ( ϕ ) F^{n+1}(\phi) Fn+1(ϕ) F F F的最小不动点, F n + 1 ( S ) F^{n+1}(S) Fn+1(S) F F F的最大不动点
  • 范例:设 Y ∈ 2 S , s 0 ∈ S Y \in 2^S,s_0 \in S Y2S,s0S,定义 F ( Y ) = Y ∪ { s 0 } F(Y) = Y \cup \{s_0\} F(Y)=Y{s0},则 F F F 2 S 2^S 2S上的单调函数,且对于任一 Y ⊆ S Y \subseteq S YS都有 F ( Y ) F(Y) F(Y) F F F的不动点。最小不动点是 { s 0 } \{s_0\} {s0},最大不动点是 S S S
  • 定义:给定模型 M = ( S , → , L ) \mathcal{M} =(S,\to,L) M=(S,,L),设 Y ⊆ S Y \subseteq S YS。定义:
    • p r e ∃ ( Y ) = { s ∈ S ∣ 存 在 s ′ ∈ S , 使 得 s → s ′ 且 s ′ ∈ Y } pre_\exists (Y) = \{s \in S | 存在s' \in S,使得s \to s'且s' \in Y \} pre(Y)={sSsS使sssY},即若 s s s有一个后继在 Y Y Y中,则 s s s p r e ∃ ( Y ) pre_\exists (Y) pre(Y)中。
    • p r e ∀ ( Y ) = { s ∈ S ∣ 对 于 所 有 s ′ ∈ S , 若 s → s ′ 则 s ′ ∈ Y } pre_\forall (Y) = \{s \in S | 对于所有 s' \in S,若s \to s'则s' \in Y \} pre(Y)={sSsSsssY},即若 s s s所有后继都在 Y Y Y中,则 s s s p r e ∀ ( Y ) pre_\forall(Y) pre(Y)中。

    p r e pre pre表示沿迁移关系向后移动

  • S A T A F SAT_{AF} SATAF定理:
    • ϕ \phi ϕ是一个CTL公式, M = ( S , → , L ) \mathcal{M} =(S,\to,L) M=(S,,L)是一个模型,其中, S S S是含有 n + 1 n+1 n+1个状态的集合。
    • 定义函数 F : 2 S → 2 S F:2^S \to2^S F:2S2S
      F ( X ) = S A T ( ϕ ) ∪ p r e ∀ ( X ) , ∀ X ∈ 2 S F(X)=SAT(\phi) \cup pre_\forall (X),\forall X \in 2^S F(X)=SAT(ϕ)pre(X),X2S
      S A T A F ( ϕ ) = F n + 1 ( ϕ ) SAT_{AF}(\phi)=F^{n+1}(\phi) SATAF(ϕ)=Fn+1(ϕ),即 S A T A F ( ϕ ) SAT_{AF}(\phi) SATAF(ϕ) F F F的最小不动点。
  • S A T E U SAT_{EU} SATEU定理:
    • ϕ , ψ \phi,\psi ϕ,ψ是CTL公式, M = ( S , → , L ) \mathcal{M} =(S,\to,L) M=(S,,L)是一个模型,其中, S S S是含有 n + 1 n+1 n+1个状态的集合。
    • 定义函数 G : 2 S → 2 S G:2^S \to2^S G:2S2S
      G ( X ) = S A T ( ψ ) ∪ S A T ( ( ϕ ) ∩ p r e ∃ ( X ) ) , ∀ X ∈ 2 S G(X)=SAT(\psi) \cup SAT((\phi) \cap pre_\exists(X)),\forall X \in 2^S G(X)=SAT(ψ)SAT((ϕ)pre(X)),X2S
      S A T E U ( ϕ , ψ ) = G n + 1 ( ϕ ) SAT_{EU}(\phi,\psi)=G^{n+1}(\phi) SATEU(ϕ,ψ)=Gn+1(ϕ),即 S A T E U ( ϕ , ψ ) SAT_{EU}(\phi,\psi) SATEU(ϕ,ψ) G G G的最小不动点。
  • S A T E G SAT_{EG} SATEG定理:
    • ϕ \phi ϕ是CTL公式, M = ( S , → , L ) \mathcal{M} =(S,\to,L) M=(S,,L)是一个模型,其中, S S S是含有 n + 1 n+1 n+1个状态的集合。
    • 定义函数 F : 2 S → 2 S F:2^S \to2^S F:2S2S
      F ( X ) = S A T ( ϕ ) ∩ p r e ∃ ( X ) , ∀ X ∈ 2 S F(X)=SAT(\phi) \cap pre_\exists (X),\forall X \in 2^S F(X)=SAT(ϕ)pre(X),X2S
      S A T E G ( ϕ ) = F n + 1 ( ϕ ) SAT_{EG}(\phi)=F^{n+1}(\phi) SATEG(ϕ)=Fn+1(ϕ),即 S A T E G ( ϕ ) SAT_{EG}(\phi) SATEG(ϕ) F F F的最大不动点。

CTL模型检测算法的伪代码

  • 基本标记算法的伪代码:
    • 函数 S A T SAT SAT:将CTL公式作为输入并返回满足该公式的状态集合。
      f u n c t i o n   S A T ( ϕ ) b e g i n   c a s e   ϕ   i s   ⊤ : r e t u r n   S   ϕ   i s   ⊤ : r e t u r n   ϕ   ϕ   i s   a u t o m i c : r e t u r n   ϕ   ϕ   i s   ¬ ϕ 1 : r e t u r n   S − S A T ( ϕ 1 )   ϕ   i s   ϕ 1 ∧ ϕ 2 : r e t u r n   S A T ( ϕ 1 ) ∩ S A T ( ϕ 2 )   ϕ   i s   ϕ 1 ∨ ϕ 2 : r e t u r n   S A T ( ϕ 1 ) ∪ S A T ( ϕ 2 )   ϕ   i s   ϕ 1 → ϕ 2 : r e t u r n   S A T ( ¬ ϕ 1 ∨ ϕ 2 )   ϕ   i s   A X ϕ 1 : r e t u r n   S A T ( ¬ E X ¬ ϕ 1 )   ϕ   i s   E X ϕ 1 : r e t u r n   S A T E X   ϕ   i s   A [ ϕ 1 U ϕ 2 ] : r e t u r n   S A T ( ¬ E [ ¬ ϕ 2 U ( ¬ ϕ 1 ∧ ¬ ϕ 2 ) ] ∨ E G ¬ ϕ 2 )   ϕ   i s   E [ ϕ 1 U ϕ 2 ] : r e t u r n   S A T E U ( ϕ 1 , ϕ 2 )   ϕ   i s   E F ( ϕ 1 ) : r e t u r n   S A T ( E ( ⊤ ∪ ϕ 1 ) )   ϕ   i s   E G ( ϕ 1 ) : r e t u r n   S A T ( ¬ A F ¬ ϕ 1 )   ϕ   i s   A F ( ϕ 1 ) : r e t u r n   S A T A F ( ϕ 1 )   ϕ   i s   A G ( ϕ 1 ) : r e t u r n   S A T ( ¬ E F ¬ ϕ 1 )   e n d   c a s e e n d   f u n c t i o n   \begin{aligned} &function \ SAT(\phi)&\quad\quad\quad\quad\quad\quad& \\ &begin \\ &\quad \ case \\ &\quad\quad \ \phi \ is \ \top:return \ S \\ &\quad\quad \ \phi \ is \ \top:return \ \phi \\ &\quad\quad \ \phi \ is \ automic:return \ \phi \\ &\quad\quad \ \phi \ is \ \neg \phi_1:return \ S - SAT(\phi_1)\\ &\quad\quad \ \phi \ is \ \phi_1 \wedge \phi_2:return \ SAT(\phi_1) \cap SAT(\phi_2)\\ &\quad\quad \ \phi \ is \ \phi_1 \vee \phi_2:return \ SAT(\phi_1) \cup SAT(\phi_2)\\ &\quad\quad \ \phi \ is \ \phi_1 \to \phi_2:return \ SAT(\neg \phi_1 \vee \phi_2)\\ &\quad\quad \ \phi \ is \ AX \phi_1 :return \ SAT(\neg EX \neg \phi_1)\\ &\quad\quad \ \phi \ is \ EX \phi_1 :return \ SAT_{EX}\\ &\quad\quad \ \phi \ is \ A[\phi_1 U \phi_2] :return \ SAT(\neg E[\neg \phi_2 U (\neg \phi_1 \wedge \neg \phi_2)] \vee EG \neg \phi_2)\\ &\quad\quad \ \phi \ is \ E[\phi_1 U \phi_2] :return \ SAT_{EU}(\phi_1,\phi_2) \\ &\quad\quad \ \phi \ is \ EF(\phi_1) :return \ SAT(E(\top \cup \phi_1)) \\ &\quad\quad \ \phi \ is \ EG(\phi_1) :return \ SAT(\neg AF \neg \phi_1) \\ &\quad\quad \ \phi \ is \ AF(\phi_1) :return \ SAT_{AF}(\phi_1) \\ &\quad\quad \ \phi \ is \ AG(\phi_1) :return \ SAT(\neg EF\neg \phi_1) \\ &\quad \ end \ case \\ &end \ function\ \\ \end{aligned} function SAT(ϕ)begin case ϕ is :return S ϕ is :return ϕ ϕ is automic:return ϕ ϕ is ¬ϕ1:return SSAT(ϕ1) ϕ is ϕ1ϕ2:return SAT(ϕ1)SAT(ϕ2) ϕ is ϕ1ϕ2:return SAT(ϕ1)SAT(ϕ2) ϕ is ϕ1ϕ2:return SAT(¬ϕ1ϕ2) ϕ is AXϕ1:return SAT(¬EX¬ϕ1) ϕ is EXϕ1:return SATEX ϕ is A[ϕ1Uϕ2]:return SAT(¬E[¬ϕ2U(¬ϕ1¬ϕ2)]EG¬ϕ2) ϕ is E[ϕ1Uϕ2]:return SATEU(ϕ1,ϕ2) ϕ is EF(ϕ1):return SAT(E(ϕ1)) ϕ is EG(ϕ1):return SAT(¬AF¬ϕ1) ϕ is AF(ϕ1):return SATAF(ϕ1) ϕ is AG(ϕ1):return SAT(¬EF¬ϕ1) end caseend function 
    • 函数 S A T E X SAT_{EX} SATEX:它通过调用 S A T SAT SAT计算满足 ϕ \phi ϕ的状态,然后,它沿着 → \to 向后寻找满足 E X ϕ EX \phi EXϕ的状态。
      f u n c t i o n   S A T E X ( ϕ ) l o c a l   v a r   X , Y b e g i n X : = S A T ( ϕ ) ; Y : = p r e E ( X ) ; r e t u r n   Y e n d \begin{aligned} &function \ SAT_{EX}(\phi) \\ &local \ var \ X,Y\\ &begin \\ &\quad\quad X:=SAT(\phi); \\ &\quad\quad Y:=pre_E(X); \\ &\quad\quad return \ Y \\ &end \\ \end{aligned} function SATEX(ϕ)local var X,YbeginX:=SAT(ϕ);Y:=preE(X);return Yend
    • 函数 S A T A F SAT_{AF} SATAF:它通过调用 S A T SAT SAT计算满足 ϕ \phi ϕ的状态,然后,按照标记算法中所描述的方式将满足 A F ϕ AF \phi AFϕ的状态累计在一起。
      f u n c t i o n   S A T A F ( ϕ ) l o c a l   v a r X , Y b e g i n X : = S ; Y : = S A T ( ϕ ) ; r e p e a t   u n t i l X = Y ; b e g i n X : = Y ; Y : = Y ∪ p r e ∀ ( Y ) ; e n d r e t u r n   Y e n d \begin{aligned} &function \ SAT_{AF}(\phi) \\ &local \ var X,Y \\ &begin \\ &\quad\quad X:=S; \\ &\quad\quad Y:=SAT(\phi); \\ &\quad\quad repeat \ until X = Y; \\ &\quad\quad begin \\ &\quad\quad\quad X:=Y; \\ &\quad\quad\quad Y:=Y \cup pre_\forall (Y); \\ &\quad\quad end \\ &\quad\quad return \ Y\\ &end \\ \end{aligned} function SATAF(ϕ)local varX,YbeginX:=S;Y:=SAT(ϕ);repeat untilX=Y;beginX:=Y;Y:=Ypre(Y);endreturn Yend
    • 函数 S A T E U SAT_{EU} SATEU:通过调用 S A T SAT SAT计算满足 ϕ \phi ϕ的状态,然后按照计算中所描述的方式将满足 E [ ϕ U ψ ] E[\phi U\psi] E[ϕUψ]的状态累计在一起。
      f u n c t i o n   S A T E U ( ϕ , ψ ) l o c a l   v a r W , X , Y b e g i n W : = S A T ( ϕ ) ; X : = S ; Y : = S A T ( ψ ) ; r e p e a t   u n t i l   X = Y ; b e g i n X : = Y ; Y : = Y ∪ p r e ∃ ( Y ) ; e n d r e t u r n   Y e n d \begin{aligned} &function \ SAT_{EU}(\phi,\psi) \\ &local \ var W,X,Y \\ &begin \\ &\quad\quad W:=SAT(\phi); \\ &\quad\quad X:=S; \\ &\quad\quad Y:=SAT(\psi); \\ &\quad\quad repeat \ until \ X = Y; \\ &\quad\quad begin \\ &\quad\quad\quad X:=Y; \\ &\quad\quad\quad Y:=Y \cup pre_\exists(Y); \\ &\quad\quad end \\ &\quad\quad return \ Y\\ &end \\ \end{aligned} function SATEU(ϕ,ψ)local varW,X,YbeginW:=SAT(ϕ);X:=S;Y:=SAT(ψ);repeat until X=Y;beginX:=Y;Y:=Ypre(Y);endreturn Yend
  • 伪代码解释:
    • 主函数名称为 S A T SAT SAT,(单词satisfy的前三个字母大写),主函数将CTL公式作为输入
    • r e t u r n return return来返回函数结果
    • l o c a l   v a r local \ var local var来声明局部变量
    • S − Y S-Y SY表示不在 Y Y Y中的所有 s ∈ S s \in S sS的集合

状态爆炸问题

  • 原因:尽管标记算法关于模型的规模为线性的,但因为规模本身通常关于变量个数以及并行执行的系统组件的数目是指数的,导致程序中增加一个布尔变量,性质验证的复杂度会加倍。
  • 定义:使状态空间变得非常大的趋势称为状态爆炸问题。
  • 解决方法:有效的数据结构,又称为有序二元决策图,它表示状态集合而不是单个状态,SMV就是有序二元决策图。除此之外,还有很多其他的解决办法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

print_Hyon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值