【面向计算机的数理逻辑/软件理论基础笔记】形式化验证、模型检测、线性时态逻辑LTL

形式化验证

  • 为什么需要形式化验证?
    • 因为这种证明方法可以在理论上寻找到程序中的错误,而这些错误可能不可复现、无法被测试所覆盖、或者只会发生一次等,比如1994年奔腾芯片的FDIV错误,除法运算会发生某种偏差,这个问题是在90亿次除法运算中才可能出现1次错误,或者一些其他的著名BUG:原来曾有过这么多BUG!哪个CPU最严重。我们没用办法通过简单的测试来找到这些BUG,但通过形式化的验证却可以找到哪里可能存在问题。
  • 形式化验证的三个部分:
    • 用于系统建模的框架
    • 用于描述待验证性质的规范语言
    • 用来确定系统描述是否满足规范的验证方法
  • 根据证明的依据对形式化验证的分类
    • 基于证明的处理中:系统描述一组公式 Γ \Gamma Γ,他的规范是另一个公式 ϕ \phi ϕ,验证的方法就是试图找到 Γ ⊢ ϕ \Gamma \vdash \phi Γϕ的证明。
    • 基于模型的处理中(本节笔记重点):系统由适当逻辑的模型 M \mathcal{M} M表示,规范也是另一个公式 ϕ \phi ϕ表示,验证方法则是由计算模型 M \mathcal{M} M是否满足 ϕ \phi ϕ构成(写作 M ⊨ ϕ \mathcal{M} \models \phi Mϕ)。
  • 根据验证的完全程度对形式化验证的分类
    • 性质验证:规范描述系统的单一性质。
    • 完全验证:规范描述的系统的全部性质。

模型检测(Model Checking)

  • 时态逻辑(Temporal Logic)
    • 思想:在一个模型中,公式的真与假不是静态的,而在命题逻辑或谓词逻辑中的确如此。
    • 含义:时态逻辑的模型包含若干状态,而一个公式可以在某些状态下为真,在其他状态下为假。公式可以随系统的状态演化而改变其真值。
  • 模型检测:模型检测是一种自动的、基于模型的、性质验证的处理方法。
    • 模型检测也是基于时态逻辑的,在模型检测中,模型 M \mathcal{M} M是迁移系统,性质 ϕ \phi ϕ是是时态逻辑公式,为了验证一个系统满足一个性质,需要三步操作:
      • 使用模型检测器的描述性语言对系统进行建模,得到一个模型 M \mathcal{M} M
      • 使用模型检测器的规范语言对性质进行编码,禅师一个时态逻辑公式 ϕ \phi ϕ
      • M \mathcal{M} M ϕ \phi ϕ做输入,运行模型检测器

    如果模型检测器 M ⊨ ϕ \mathcal{M} \models \phi Mϕ的结果为假(或者no、false),大多数模型检测器会产生导致失败的系统行为轨迹,我们称这一操作为之为逆向追踪

    • 模型检测就是对问题 M , s ⊨ ϕ \mathcal{M},s \models \phi M,sϕ是否成立计算答案的过程,此处的 ϕ \phi ϕ是时态逻辑的一个公式, M \mathcal{M} M是所考虑的一个适当模型, s s s是该模型的一个状态, ⊨ \models 是满足关系。

线性时态逻辑(Linear-time Temporal Logic,简写为LTL)

  • 定义:一种能表达时间概念的特殊时态逻辑。它将时间轴看成一个线性的状态序列,可以无限延伸到未来。常用来精确表示模型的动态语义。
    • 计算路径(简称为路径):模型里的状态序列。因为未来是不确定的,有无数种可能,在模型中表示有无数条路径,代表未来不同的可能,任何一条路径都可能会是一条实际的路径(每一条路径都有可能发生,但只有一条路径会真正发生)。
    • 命题原子公式:原子公式用 p , q , r , p 1 , q 1 , r 1 . . . p,q,r,p_1,q_1,r_1... p,q,r,p1,q1,r1...等符号表示,这些原子代表系统可能成立的事实,比如“打印机正在打印”,“进程1220被挂起”,或者“程序计数器上的值为6”。
    • 原子集合:表示系统可能成立的全部事实,用 A t o m s Atoms Atoms表示,比如 p , q p,q p,q的所有组合: A t o m s = { ∅ , { p } , { q } , { p , q } } Atoms = \{\varnothing,\{p\},\{q\},\{p,q\}\} Atoms={,{p},{q},{p,q}}

LTL语法

ϕ : : = ⊥ ∣ ⊤ ∣ p ∣ ( ¬ ϕ ) ∣ ( ϕ ∧ ϕ ) ∣ ( ϕ ∨ ϕ ) ∣ ( ϕ → ϕ ) ∣ ( X ϕ ) ∣ ( F ϕ ) ∣ ( G ϕ ) ∣ ( ϕ U ϕ ) ∣ ( ϕ W ϕ ) ∣ ( ϕ R ϕ ) \phi ::= \perp | \top | p| (\neg \phi) | (\phi \wedge \phi)| (\phi \vee\phi)| (\phi \to \phi) | (X \phi)| (F \phi)| (G \phi)| (\phi U \phi)| (\phi W \phi)| (\phi R \phi) ϕ::=p(¬ϕ)(ϕϕ)(ϕϕ)(ϕϕ)(Xϕ)(Fϕ)(Gϕ)(ϕUϕ)(ϕWϕ)(ϕRϕ)

上述公式表示,如果 ϕ \phi ϕ是LTL公式,则 ¬ ϕ , ( ϕ ∧ ϕ ) , ( G ϕ ) ⋯ \neg \phi, (\phi \wedge \phi), (G \phi) \cdots ¬ϕ,(ϕϕ),(Gϕ)也是LTL公式,同时 ⊥ ∣ ⊤ ∣ p \perp | \top | p p也是LTL公式。其中, p p p是取自原子集合 A t o m s Atoms Atoms的任意命题原子

  • 时态连接词:

    • 一元时态连接词:
      • X X X:下一个状态。
      • F F F:某未来状态。
      • G G G:所有未来状态。
    • 二元时态连接词:
      • U U U:直到。
      • R R R:释放。
      • W W W:弱-直到。
  • 时态连接词的含义:

    • 原子命题 p p p表示路径 π \pi π中第一个原子命题是 p p p
      在这里插入图片描述

    • X p Xp Xp表示路径 π \pi π中第二个原子命题是 p p p
      -

    • G p Gp Gp表示路径 π \pi π中每一个原子命题都是 p p p
      在这里插入图片描述

    • p U q pUq pUq表示对于路径 π : s 0 → s 1 → ⋯ \pi:s_0 \to s_1 \to \cdots π:s0s1中,假设原子命题 p p p在且只在 s 3 , s 4 , s 5 , s 6 , s 7 , s 8 s_3,s_4,s_5,s_6,s_7,s_8 s3,s4,s5,s6,s7,s8状态点满足,原子命题 q q q只在 s 9 s_9 s9状态点满足。则如果 i i i的值为 0 , 1 , 2 0,1,2 0,1,2 π i ⊭ p U q \pi^i \nvDash pUq πipUq(因为这个时候的开始点没有 p p p);如果 i i i的值为 3 , 4 , 5 , 6 , 7 , 8 , 9 3,4,5,6,7,8,9 3,4,5,6,7,8,9,则 π i ⊨ p U q \pi^i \vDash pUq πipUq
      在这里插入图片描述

    • p R q pRq pRq
      q q q必须保持为真,直到 p p p为真的时刻
      在这里插入图片描述
      或者
      如果 p p p为真的时刻不存在,则 q q q一直为真
      在这里插入图片描述

    R R R U U U的对偶,即 ϕ R ψ \phi R \psi ϕRψ等价于 ¬ ( ¬ ϕ U ¬ ψ ) \neg (\neg \phi U \neg \psi) ¬(¬ϕU¬ψ)

  • LTL公式范例: ( F ( p → ( G   r ) ) ∨ ( ( ¬ q ) U   p ) ) (F(p \to (G \ r)) \vee ((\neg q) U \ p )) (F(p(G r))((¬q)U p))
    语法树:在这里插入图片描述

    在我们书写LTL公式时,在不引起歧义的前提下,很多括号可以省略,比如 ( p → ( F   q ) ) (p \to (F \ q)) (p(F q))可以无歧义地简写为 p → F   q p \to F \ q pF q

  • 语法优先级从高到低:

    • 一元时态连接词: ¬ , X , F , G \neg,X,F,G ¬,X,F,G
    • 二元时态连接词: U , R , W U,R,W U,R,W
    • ∨ , ∧ \vee,\wedge ,
    • → \to

LTL语义

  • 迁移系统: M = { S , → , L } \mathcal{M}=\{S,\to,L\} M={S,,L} S S S是一个状态集合; → \to 是迁移关系(这个迁移关系表示 S S S上的二元关系),使得每个属于 S S S s s s中(也就是 s ∈ S s \in S sS),有某个 s ′ s' s满足 s → s ′ s \to s' ss(这个 s ′ ∈ S s' \in S sS);标记函数 L → P ( A t o m s ) L \to \mathcal{P}(Atoms) LP(Atoms)

    • 迁移系统简称为模型 ,一个模型有状态集 S S S,关系 → \to (描述的是系统如何从一个状态转向另一个状态),以及每个状态 s s s伴随有原子命题的集合 L ( s ) L(s) L(s)。我们用 P ( A t o m s ) \mathcal{P}(Atoms) P(Atoms)表示 A t o m s Atoms Atoms的幂集,也叫做原子描述集。
    • 幂集范例:对于状态集 S = { p , q } S = \{p,q\} S={p,q},则他的幂集 P ( A t o m s ) = { ∅ , { p } , { q } , { p , q } } \mathcal{P}(Atoms)=\{\varnothing,\{p\},\{q\},\{p,q\}\} P(Atoms)={,{p},{q},{p,q}}
    • 用有向图表示一个有限迁移系统 M \mathcal{M} M的所有信息,图的结点包含了在该状态下为真的所有原子命题。
      • 模型范例: M \mathcal{M} M有三个状态 s 0 , s 1 , s 2 s_0,s_1,s_2 s0,s1,s2,状态之间仅有的可能迁移是 s 0 → s 1 , s 0 → s 2 , s 1 → s 0 , s 1 → s 2 , s 2 → s 2 s_0 \to s_1,s_0 \to s_2,s_1 \to s_0,s_1 \to s_2,s_2 \to s_2 s0s1,s0s2,s1s0,s1s2,s2s2,若 L ( s 0 ) = { p , q } , L ( s 1 ) = { q , r } , L ( s 2 ) = { r } L(s_0)=\{p,q\},L(s_1)=\{q,r\},L(s_2)=\{r\} L(s0)={p,q},L(s1)={q,r},L(s2)={r},则将模型的信息浓缩到状态图中为:
        在这里插入图片描述

    在上述状态图中,状态 r r r是一个死锁状态,他的下一个状态永远只能是自身

  • 无限路径:模型 M = { S , → , L } \mathcal{M}=\{S,\to,L\} M={S,,L}中的一条路径是 S S S中状态的无限序列 s 1 , s 2 , s 3 , ⋯ s_1,s_2,s_3,\cdots s1,s2,s3,,对每个 i ⩾ 1 i \geqslant 1 i1,都有 s i → s i + 1 s_i \to s_{i+1} sisi+1,则我们可以将该路径写为 π = s 1 → s 2 → s 3 → ⋯ \pi = s_1 \to s_2 \to s_3 \to \cdots π=s1s2s3,我们用 π i \pi^i πi表示从第 i i i个状态开始的后缀,比如 π 3 = s 3 → s 4 → ⋯ \pi^3=s_3\to s_4 \to \cdots π3=s3s4

    • 将上面的模型范例里的系统展开成一个从特定状态开始的所有计算路径的无限树为:
      在这里插入图片描述
  • M = { S , → , L } \mathcal{M}=\{S,\to,L\} M={S,,L}是一个模型, π = s 1 → s 2 → s 3 → ⋯ \pi = s_1 \to s_2 \to s_3 \to \cdots π=s1s2s3 M \mathcal{M} M中地一条路径,路径 π \pi π与LTL公式满足关系定义如下:

    • π ⊨ ⊤ \pi \vDash \top π
    • π ⊭ ⊥ \pi \nvDash \perp π

      ⊤ \top 表示总为真的事实, ⊥ \perp 表示总为假的事实

    • π ⊨ p \pi \vDash p πp当且仅当 p ∈ L ( s 1 ) p \in L(s_1) pL(s1)
    • π ⊨ ϕ 1 ∧ ϕ 2 \pi \vDash \phi_1 \wedge \phi_2 πϕ1ϕ2当且仅当 π ⊨ ϕ 1 \pi \vDash \phi_1 πϕ1 π ⊨ ϕ 2 \pi \vDash \phi_2 πϕ2
    • π ⊨ ϕ 1 ∨ ϕ 2 \pi \vDash \phi_1 \vee \phi_2 πϕ1ϕ2当且仅当 π ⊨ ϕ 1 \pi \vDash \phi_1 πϕ1 π ⊨ ϕ 2 \pi \vDash \phi_2 πϕ2
    • π ⊨ ϕ 1 → ϕ 2 \pi \vDash \phi_1 \to \phi_2 πϕ1ϕ2当且仅当只要 π ⊨ ϕ 1 \pi \vDash \phi_1 πϕ1就有 π ⊨ ϕ 2 \pi \vDash \phi_2 πϕ2
    • π ⊨ X   ϕ \pi \vDash X \ \phi πX ϕ当且仅当 π 2 ⊨ ϕ \pi^2 \vDash \phi π2ϕ
      • π ⊨ X   ϕ \pi \vDash X \ \phi πX ϕ表示路径从第二个状态开始满足LTL公式 ϕ \phi ϕ
      • ϕ \phi ϕ是原子集内的某个原子命题,也是一个LTL公式,在路径中也叫做状态; X   ϕ X \ \phi X ϕ表示这个原子命题的下一个状态; π 2 \pi^2 π2表示从路径 π \pi π上的第二个状态开始的路径
    • π ⊨ G   ϕ \pi \vDash G \ \phi πG ϕ当且仅当对所有 i ⩾ 1 , π i ⊨ ϕ i\geqslant 1,\pi^i \vDash \phi i1,πiϕ
    • π ⊨ F   ϕ \pi \vDash F \ \phi πF ϕ当且仅存在某个 i ⩾ 1 i\geqslant 1 i1使得 , π i ⊨ ϕ ,\pi^i \vDash \phi ,πiϕ
    • π ⊨ ϕ   U ψ \pi \vDash \phi \ U \psi πϕ Uψ当且仅当存在某个 i ⩾ 1 i\geqslant 1 i1,使得 π i ⊨ ψ \pi^i \vDash \psi πiψ并且对所有 j = 1 , ⋯   , i − 1 j=1,\cdots,i-1 j=1,,i1,有 π i ⊨ ϕ \pi^i\vDash \phi πiϕ
    • π ⊨ ϕ   W ψ \pi \vDash \phi \ W \psi πϕ Wψ当且仅当存在某个 i ⩾ 1 i\geqslant 1 i1,使得 π i ⊨ ψ \pi^i \vDash \psi πiψ且对所有的 j = 1 , ⋯   , i − 1 j=1,\cdots,i-1 j=1,,i1,有 π i ⊨ ϕ \pi^i\vDash \phi πiϕ,或者对所有 k ⩾ 1 k \geqslant 1 k1,有 π k ⊨ ψ \pi^k\vDash \psi πkψ
    • π ⊨ ϕ   R   ψ \pi \vDash \phi \ R \ \psi πϕ R ψ当且仅当或者存在某个 i ⩾ 1 i\geqslant 1 i1,使得 π i ⊨ ψ \pi^i \vDash \psi πiψ且对所有 j = 1 , ⋯   , i j=1,\cdots,i j=1,,i,有 π i ⊨ ψ \pi^i\vDash \psi πiψ;或者对所有 k ⩾ 1 k \geqslant 1 k1,有 π k ⊨ ψ \pi^k\vDash \psi πkψ

      π ⊨ ϕ   R   ψ \pi \vDash \phi \ R \ \psi πϕ R ψ还可以表述为:当且仅当或者 ∃ i ≥ 0 \exists i ≥ 0 i0使得 π i ⊨ ϕ \pi^i \vDash \phi πiϕ且对于每个 j ≤ i j ≤ i ji都有 π j ⊨ ψ πj \vDash \psi πjψ,或者对于所有的 k ≥ 0 k \geq 0 k0都有 π k ⊨ ψ \pi^k \vDash \psi πkψ

  • 状态满足公式:设 M = ( S , → , L ) M = (S, \to, L) M=(S,,L)是一个模型, s ∈ S , ϕ s \in S,\phi sS,ϕ是一个LTL公式,若对从 s s s出发的每条路 π \pi π都有 π ⊨ ϕ \pi \vDash \phi πϕ,则称状态 s s s满足 ϕ \phi ϕ,记作 M , s ⊨ ϕ M, s \vDash \phi M,sϕ,或 s ⊨ ϕ s \vDash \phi sϕ

  • 范例:

在这里插入图片描述
对于上面的Kripke结构,有如下结论:

  • s 0 ⊨ ( p ∧ q ) , ¬ r , X r s_0 \vDash (p \wedge q),\neg r,Xr s0(pq),¬r,Xr
    s 0 s_0 s0这个状态满足三个条件:
    • ( p ∧ q ) : (p \wedge q): (pq): s 0 s_0 s0状态上有原子命题 p p p q q q
    • ¬ r : \neg r: ¬r: s 0 s_0 s0状态上没有原子命题 r r r
    • X r : X r: Xr: s 0 s_0 s0状态的下一个结点有原子命题 r r r
  • s 0 ⊭ X ( q ∧ r ) s_0 \nvDash X(q \wedge r) s0X(qr)
    s 0 s_0 s0的下一个状态不一定满足包含原子命题 q q q r r r。因为 s 0 s_0 s0的下一个状态如果是 s 2 s_2 s2的话,只包含原子命题 r r r而不包含原子命题 q q q,如果 s 0 s_0 s0的下一个状态如果是 s 1 s_1 s1的话才包含原子命题 q q q r r r
  • s 0 ⊨ G ¬ ( p ∧ r ) s_0 \vDash G \neg(p \wedge r) s0G¬(pr)
    s 0 s_0 s0这个状态满足未来所有状态不同时包含原子命题 p p p r r r。因为 s 0 s_0 s0以后可能要迁移到 s 1 s_1 s1 s 2 s_2 s2或迁移回 s 0 s_0 s0,而这三个状态均不同时包含原子命题 p p p r r r,所以 s 0 s_0 s0这个状态满足未来所有状态不同时包含原子命题 p p p r r r
  • s 2 ⊨ G r s_2 \vDash G r s2Gr
    s 2 s_2 s2状态满足未来所有状态全部包含原子命题 r r r
  • s ⊨ F ( ¬ q ∧ r ) → F G r s \vDash F(\neg q \wedge r)\to FGr sF(¬qr)FGr
    s s s状态满足,如果未来的状态不含原子命题 q q q但包含原子命题 r r r,则未来全部状态都包含原子命题 r r r。因为不含原子命题 q q q但包含原子命题 r r r的状态只有 s 2 s_2 s2 s 2 s_2 s2的下一个状态永远只能是 s 2 s_2 s2 s 2 s_2 s2也只包含原子命题 r r r,所以未来全部状态都包含原子命题 r r r

语义等价

  • 定义:设 ϕ , ψ \phi,\psi ϕ,ψ是 LTL 公式, 若对于所有的模型 M \mathcal{M} M以及 M \mathcal{M} M中的所有的路 π \pi π都有 π ⊨ ψ \pi \vDash \psi πψ当且仅当 π ⊨ ψ \pi \vDash \psi πψ,则称 ϕ \phi ϕ ψ \psi ψ是语义等价的, 记作 ϕ ≡ ψ \phi \equiv \psi ϕψ
  • 语义等价等价刻画:设 ϕ , ψ \phi,\psi ϕ,ψ是 LTL 公式,它们是语义等价的,当且仅当若对于所有的模型 M \mathcal{M} M以及 M \mathcal{M} M中的所有的状态 s s s都有 s ⊨ ϕ s \vDash \phi sϕ当且仅当 s ⊨ ψ s \vDash \psi sψ
  • 等价性质:
    • 对偶性:
      • G ϕ ≡ ¬ F ¬ ϕ G \phi \equiv \neg F \neg \phi Gϕ¬F¬ϕ
      • F ϕ ≡ ¬ G ¬ ϕ F \phi \equiv \neg G \neg \phi Fϕ¬G¬ϕ
      • ϕ U ψ ≡ ¬ ( ¬ ϕ R ¬ ψ ) \phi U \psi \equiv \neg (\neg \phi R \neg \psi) ϕUψ¬(¬ϕR¬ψ)
      • ϕ R ψ ≡ ¬ ( ¬ ϕ U ¬ ψ ) \phi R \psi \equiv \neg (\neg \phi U \neg \psi) ϕRψ¬(¬ϕU¬ψ)
      • X ϕ ≡ ¬ X ¬ ϕ X \phi \equiv \neg X \neg \phi Xϕ¬X¬ϕ
    • 分配性:
      • F ( ϕ ∨ ψ ) ≡ F ϕ ∨ F ψ F(\phi \vee \psi) \equiv F \phi \vee F \psi F(ϕψ)FϕFψ
      • G ( ϕ ∧ ψ ) ≡ F ϕ ∧ F ψ G(\phi \wedge \psi) \equiv F \phi \wedge F \psi G(ϕψ)FϕFψ
  • 连接词相互定义
    • F ϕ ≡ ⊤ U ϕ F \phi \equiv \top U \phi FϕUϕ
    • G ϕ ≡ ⊥ R ϕ G \phi \equiv \perp R \phi GϕRϕ
    • ϕ R ψ ≡ ψ U ( ϕ ∧ ψ ) ∨ G ψ \phi R \psi \equiv \psi U (\phi \wedge \psi) \vee G \psi ϕRψψU(ϕψ)Gψ
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

print_Hyon

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

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

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

打赏作者

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

抵扣说明:

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

余额充值