写给学生看的系统分析与验证笔记(十三)——线性时序逻辑(Linear temporal logic,LTL)


线性时序逻辑提供了一种非常直观但是在数学上又很精确的表示方法来描述LT性质,70年代后期,Pnueli提出将线性时序逻辑应用于验证复杂计算机系统。

LTL的语法(syntax)

LTL定义为:
φ::= true | a |  φ 1 ∧ φ 2  |  ¬ φ  |  ◯ φ  |  φ 1 U φ 2 \text{φ::= true | a | }φ_{1}\wedgeφ_{2}\text{ | }\lnot φ\text{ | }\bigcirc φ\text{ | } φ_{1} U φ_{2} φ::= true | a | φ1φ2 | ¬φ | φ | φ1Uφ2

LTL公式的基本成分是原子命题,上式中的a∈AP,上面出现了两个新的符号, ◯ \bigcirc 的含义是next,U表示until。

在这里插入图片描述
LTL的解释都是在一条无限轨迹中给出的

  • a表示a在当前时刻成立,在轨迹表现为在第一个位置成立
  • ◯ a \bigcirc a a表示a在下一个时刻成立,在轨迹表现为第二个位置成立
  • a U b aUb aUb表示直到b成立前,a一直成立
  • ◊ a = True U a \Diamond a=\text{True U a} a=True U a,表示的是a最终(eventually)能够成立,在轨迹上表现为,在某一个时刻的时候a成立
  • □ a \Box a a表示a总是(always)成立,即在全部的时刻都成立,在轨迹上表现为每个位置都成立, □ a = ¬ ◊ ¬ a \Box a=\lnot \Diamond \lnot a a=¬¬a

LTL公式的一些例子

  • 互斥问题,两个进程不能同时进入临界区: □ ( ¬ c r i t 1 ∨ ¬ c r i t 2 ) \Box(\lnot crit_{1}\vee \lnot crit_{2}) (¬crit1¬crit2)
  • 无饥饿,两个进程可以无限经常次访问临界区: ( □ ◊ w 1 ⇒ □ ◊ c 1 ) ∧ ( □ ◊ w 2 ⇒ □ ◊ c 2 ) (\Box\Diamond w_{1}\Rightarrow\Box\Diamond c_{1})\wedge(\Box\Diamond w_{2}\Rightarrow\Box\Diamond c_{2}) (w1c1)(w2c2)
  • 火车轨道通行问题: □ ( t r a i n _ i s _ n e a r → g a t e _ i s _ c l o s e ) \Box(train\_is\_near\rightarrow gate\_is\_close) (train_is_neargate_is_close)
  • 进程通信: □ ( r e q u e s t → ◊ r e s p o n s e ) \Box(request\rightarrow \Diamond response) (requestresponse)

无限经常次可以表示为 □ ◊ φ \Box \Diamond φ φ


用上了LTL公式后,我们可以非常方便地使用公式来表示LT性质

例如我们可以用它来表示两进程互斥问题中的公平性:

  • 无条件的公平性: □ ◊ c r i t i \Box \Diamond crit_{i} criti
  • 强公平性: □ ◊ w a i t i → □ ◊ c r i t i \Box \Diamond wait_{i}\rightarrow \Box \Diamond crit_{i} waiticriti
  • 弱公平性: ◊ □ w a i t i → □ ◊ c r i t i \Diamond\Box wait_{i}\rightarrow \Box \Diamond crit_{i} waiticriti

也可以用它来表示一些其他属性:

  • 可达性
    • 简单可达性: ◊ ψ \Diamond\psi ψ
    • 带条件的可达性: ϕ U ψ \phi U\psi ϕUψ
  • 安全性中的不变性: □ ϕ \Box\phi ϕ
  • 活性: □ ( ϕ ⇒ ◊ ψ ) \Box(\phi\Rightarrow\Diamond\psi) (ϕψ)

LTL的语义(semantics)

LTL在无限字上的语义

σ = A 0 A 1 A 2 . . . ∈ ( 2 A P ) ω \sigma=A_{0}A_{1}A_{2}...∈(2^{AP})^{\omega} σ=A0A1A2...(2AP)ω,LTL在无限字上的语义可以表示为:

  • σ ⊨ t r u e \sigma\vDash true σtrue
  • σ ⊨ a \sigma\vDash a σa当且仅当 A 0 ⊨ a , 即 a ∈ A 0 A_{0}\vDash a,即a∈A_{0} A0aaA0
  • σ ⊨ φ 1 ∧ φ 2 \sigma\vDash φ_{1}\wedge φ_{2} σφ1φ2当且仅当 σ ⊨ φ 1 \sigma\vDash φ_{1} σφ1 and σ ⊨ φ 2 \sigma\vDash φ_{2} σφ2
  • σ ⊨ ¬ φ \sigma\vDash \lnotφ σ¬φ 当且仅当 σ ⊭ φ \sigma\nvDash φ σφ
  • σ ⊨ ◯ φ \sigma\vDash \bigcircφ σφ 当且仅当 s u f f i x ( σ , 1 ) = A 1 A 2 A 3 . . . ⊨ φ suffix(\sigma,1)=A_{1}A_{2}A_{3}...\vDashφ suffix(σ,1)=A1A2A3...φ
  • σ ⊨ φ 1 U φ 2 \sigma\vDash φ_{1}Uφ_{2} σφ1Uφ2 当且仅当 存在 j ≥ 0 j\ge0 j0使得 s u f f i x ( σ , j ) = A j A j + 1 A j + 2 . . . ⊨ φ 2 suffix(\sigma,j)=A_{j}A_{j+1}A_{j+2}...\vDashφ_{2} suffix(σ,j)=AjAj+1Aj+2...φ2 s u f f i x ( σ , i ) = A i A i + 1 A i + 2 . . . ⊨ φ 1 suffix(\sigma,i)=A_{i}A_{i+1}A_{i+2}...\vDashφ_{1} suffix(σ,i)=AiAi+1Ai+2...φ1 0 ≤ i < 1 0\le i\lt 1 0i<1
  • σ ⊨ ◊ φ \sigma\vDash\Diamondφ σφ 当且仅当 存在 j ≥ 0 j\ge0 j0使得 A j A j + 1 A j + 2 . . . ⊨ φ A_{j}A_{j+1}A_{j+2}...\vDashφ AjAj+1Aj+2...φ
  • σ ⊨ □ φ \sigma\vDash\Boxφ σφ 当且仅当 对所有 j ≥ 0 j\ge0 j0使得 A j A j + 1 A j + 2 . . . ⊨ φ A_{j}A_{j+1}A_{j+2}...\vDashφ AjAj+1Aj+2...φ
  • σ ⊨ □ ◊ φ \sigma\vDash\Box\Diamondφ σφ 当且仅当 有无限多的 j ≥ 0 j\ge0 j0使得 A j A j + 1 A j + 2 . . . ⊨ φ A_{j}A_{j+1}A_{j+2}...\vDashφ AjAj+1Aj+2...φ
  • σ ⊨ □ ◊ φ \sigma\vDash\Box\Diamondφ σφ 当且仅当 对几乎所有的(almost all) j ≥ 0 j\ge0 j0使得 A j A j + 1 A j + 2 . . . ⊨ φ A_{j}A_{j+1}A_{j+2}...\vDashφ AjAj+1Aj+2...φ(这里的almost all就是表示从某一个时间点开始总是满足φ,个人觉得这个表达很有意思,因为后面无限时间满足相对于前面有限的不满足来说的确是几乎所有)

LTL在TS路径上的语义

假设TS = (S,Act,→,I,AP, L)并且φ是AP上的LTL公式

LTL在TS路径上的语义表示为
π = S 0 S 1 S 2 . . . ⊨ φ \pi=S_{0}S_{1}S_{2}...\vDashφ π=S0S1S2...φ
当且仅当 t r a c e ( π ) ⊨ φ trace(\pi)\vDash φ trace(π)φ
当且仅当 t r a c e ( π ) ∈ W o r d s ( φ ) trace(\pi)∈Words(φ) trace(π)Words(φ)

举例来说
现在我们有一个TS系统
在这里插入图片描述
这个系统的AP={a,b},它的初始状态有两个分别为 s 1 s_{1} s1 s 3 s_{3} s3

假设存在一条路径,从初始状态 s 1 s_{1} s1开始,到 s 2 s_{2} s2再到 s 3 s_{3} s3无限循环, π = s 1 s 2 s 3 s 3 s 3 . . . \pi=s_{1}s_{2}s_{3}s_{3}s_{3}... π=s1s2s3s3s3...,这条路径的迹为 t r a c e ( π ) = { a } ∅ { a , b } ω trace(\pi)=\{a\}\varnothing\{a,b\}^{\omega} trace(π)={a}{a,b}ω

我们可以得出

  • π ⊨ a \pi\vDash a πa,但是 π ⊭ b \pi\nvDash b πb,我们看到迹的第一个命题为 L ( s 1 ) = a L(s_{1})={a} L(s1)=a,所以它能满足a,但是不满足b
  • π ⊨ ◯ ( ¬ a ∧ ¬ b ) \pi\vDash \bigcirc (\lnot a\wedge \lnot b) π(¬a¬b),这里有个符号next,我们看到迹的第二个命题为 L ( s 2 ) = ∅ L(s_{2})=\varnothing L(s2)=,又因为AP={a,b},所以也就是 ( ¬ a ∧ ¬ b ) (\lnot a\wedge \lnot b) (¬a¬b)
  • π ⊨ ◯ ◯ ( a ∧ b ) \pi\vDash \bigcirc\bigcirc(a\wedge b) π(ab),因为迹的第三个命题是 L ( s 3 ) = { a , b } L(s_{3})=\{a,b\} L(s3)={a,b}
  • π ⊨ ( ¬ b ) U ( a ∧ b ) \pi\vDash(\lnot b)U(a\wedge b) π(¬b)U(ab),因为 s 1 , s 2 ⊨ ¬ b s_{1},s_{2}\vDash \lnot b s1,s2¬b,并且 s 3 ⊨ a ∧ b s_{3}\vDash a\wedge b s3ab
  • π ⊨ ( ¬ b ) U □ ( a ∧ b ) \pi\vDash(\lnot b)U\Box(a\wedge b) π(¬b)U(ab),因为到了状态 s 3 s_{3} s3之后将会一直处于 s 3 s_{3} s3状态,所以可以在 ( a ∧ b ) (a\wedge b) (ab)前面加上符号always

LTL在TS状态上的语义

LTL在TS状态上的语义表示为
s ⊨ φ s\vDashφ sφ
当且仅当 对与所有的 π ∈ P a t h s ( s ) \pi∈Paths(s) πPaths(s) t r a c e ( π ) ⊨ φ trace(\pi)\vDash φ trace(π)φ
当且仅当 s ⊨ W o r d s ( φ ) s\vDash Words(φ) sWords(φ)
当且仅当 T r a c e s ( s ) ⊆ W o r d s ( φ ) Traces(s)\subseteq Words(φ) Traces(s)Words(φ)

LTL在TS上的语义

LTL在TS上的语义表示为
T S ⊨ φ TS\vDashφ TSφ
当且仅当 T r a c e s ( T S ) ⊆ W o r d ( φ ) Traces(TS)\subseteq Word(φ) Traces(TS)Word(φ)

举例来说,现在有一个TS系统
在这里插入图片描述
我们可以得出

  • T S ⊨ □ a TS\vDash \Box a TSa,因为这里每个状态中a都成立
  • T S ⊨ □ ( ¬ b ⇒ □ ( a ∧ ¬ b ) ) TS\vDash \Box(\lnot b\Rightarrow\Box(a\wedge \lnot b)) TS(¬b(a¬b)) ¬ b \lnot b ¬b只有在 s 3 s_{3} s3中成立, s 3 s_{3} s3的之后的状态均是 s 3 s_{3} s3,使得 ( a ∧ ¬ b ) (a\wedge \lnot b) (a¬b)成立,所以式子满足
  • T S ⊭ ◯ ( a ∧ b ) TS\nvDash \bigcirc(a\wedge b) TS(ab),看到 s 3 s_{3} s3是一个初始状态,它的下一个状态还是 s 3 s_{3} s3,但是 s 3 s_{3} s3不满足 a ∧ b a\wedge b ab
  • T S ⊭ b U ( a ∧ ¬ b ) TS\nvDash bU(a\wedge \lnot b) TSbU(a¬b),我们看到 s 1 s 2 s 1 s 2 . . . s_{1}s_{2}s_{1}s_{2}... s1s2s1s2...这条无限的路径,可以看到虽然b一直成立,但是不存在使得 ( a ∧ ¬ b ) (a\wedge\lnot b) (a¬b)成立的状态

LTL在迹上的语义

LTL公式在迹上的语义可以表示为在AP上的无限字

又因为LT属性表示的是TS系统上应该显示的轨迹,是无限字的集合,所以我们可以用LTL公式来表示LT属性
W o r d ( ϕ ) = { σ ∈ ( 2 A P ) ω ∣ σ ⊨ ϕ } Word(\phi)=\{\sigma∈(2^{AP})^{\omega}|\sigma\vDash\phi\} Word(ϕ)={σ(2AP)ωσϕ}

关于否定的语义

对于路径来说,如果 π ⊨ ϕ \pi\vDash\phi πϕ当且仅当 π ⊭ ¬ ϕ \pi\nvDash\lnot \phi π¬ϕ,因为
W o r d s ( ¬ ϕ ) = ( 2 A P ) ω ∖ W o r d s ( ϕ ) Words(\lnot \phi)=(2^{AP})^{\omega} \setminus Words(\phi) Words(¬ϕ)=(2AP)ωWords(ϕ)

但是要注意 T S ⊭ ϕ TS\nvDash\phi TSϕ T S ⊨ ¬ ϕ TS\vDash\lnot\phi TS¬ϕ是不等价的


LTL等价的定义

如果两个LTL公式是等价的,用公式表示为 ϕ 1 ≡ ϕ 2 \phi_{1}\equiv\phi_{2} ϕ1ϕ2,当且仅当
W o r d ( ϕ 1 ) ≡ W o r d ( ϕ 2 ) Word(\phi_{1})\equiv Word(\phi_{2}) Word(ϕ1)Word(ϕ2)

也就是说,如果两个LTL公式是等价,那么这两个LTL公式表示的无限字的集合是相同的。

LTL公式的性质

对偶率(Duality laws)
¬ □ ϕ ≡ ◊ ¬ ϕ ¬ ◊ ϕ ≡ □ ¬ ϕ ¬ ◯ ϕ ≡ ◯ ¬ ϕ \lnot\Box\phi\equiv\Diamond\lnot\phi \\ \lnot\Diamond\phi\equiv\Box\lnot\phi \\ \lnot\bigcirc\phi\equiv\bigcirc\lnot\phi ¬ϕ¬ϕ¬ϕ¬ϕ¬ϕ¬ϕ

幂等律(Idempotence laws)
□ □ ϕ ≡ □ ϕ ◊ ◊ ϕ ≡ ◊ ϕ ϕ U ( ϕ U ψ ) ≡ ϕ U ψ ( ϕ U ψ ) U ψ ≡ ϕ U ψ \Box\Box\phi\equiv\Box\phi \\ \Diamond\Diamond\phi\equiv\Diamond\phi \\ \phi U(\phi U\psi)\equiv\phi U\psi \\ (\phi U\psi)U\psi\equiv\phi U\psi ϕϕϕϕϕU(ϕUψ)ϕUψ(ϕUψ)UψϕUψ

吸收率(Absorption laws)
◊ □ ◊ ϕ ≡ □ ◊ ϕ □ ◊ □ ϕ ≡ ◊ □ ϕ \Diamond\Box\Diamond\phi\equiv\Box\Diamond\phi \\ \Box\Diamond\Box\phi\equiv\Diamond\Box\phi ϕϕϕϕ

分配律(Distributive laws)
◯ ( ϕ U ψ ) ≡ ( ◯ ϕ ) U ( ◯ ψ ) ◊ ( ϕ ∨ ψ ) ≡ ( ◊ ϕ ) ∨ ( ◊ ψ ) □ ( ϕ ∧ ψ ) ≡ □ ϕ ∧ □ ψ \bigcirc(\phi U\psi)\equiv (\bigcirc\phi)U(\bigcirc\psi) \\ \Diamond(\phi \vee\psi)\equiv (\Diamond\phi)\vee(\Diamond\psi) \\ \Box(\phi\wedge\psi)\equiv\Box\phi\wedge\Box\psi (ϕUψ)(ϕ)U(ψ)(ϕψ)(ϕ)(ψ)(ϕψ)ϕψ


下面要介绍的性质非常重要
下面要介绍的性质非常重要
下面要介绍的性质非常重要

扩展率(Expansion laws)
ϕ U ψ ≡ ψ ∨ ( ϕ ∧ ◯ ( ϕ U ψ ) ) ◊ ϕ ≡ ϕ ∨ ◯ ◊ ϕ □ ϕ ≡ ϕ ∧ ◯ □ ϕ \phi U\psi\equiv\psi\vee(\phi\wedge\bigcirc(\phi U\psi)) \\ \Diamond\phi\equiv\phi\vee\bigcirc\Diamond\phi \\ \Box\phi\equiv\phi\wedge\bigcirc\Box\phi ϕUψψ(ϕ(ϕUψ))ϕϕϕϕϕϕ

扩展率是非常重要的一条性质,之后的LTL模型检测都会基于此。

特别是这个第一条公式,我个人感觉其实它的意思就是基于当前项然后向后走了一步,就拿 ϕ U ψ \phi U\psi ϕUψ来说,它代表 ψ \psi ψ成立前 ϕ \phi ϕ一直成立,首先看扩展出来的第一个 ψ \psi ψ,如果当前项是 ψ \psi ψ那么就代表到达了公式成立的条件,后面的也就可以不用管了,然后再看第二项 ϕ ∧ ◯ ( ϕ U ψ ) \phi\wedge\bigcirc(\phi U\psi) ϕ(ϕUψ)如果当前项是 ϕ \phi ϕ还没有达到公式成立的条件,那么如果公式成立,对于下一步来说肯定是满足 ϕ U ψ \phi U\psi ϕUψ的。

Weak until

前面介绍的until操作,它是一种比较强的限制,而weak until操作(或者称为unless)定义为
ϕ W ψ = ( ϕ U ψ ) ∨ □ ϕ \phi W\psi=(\phi U\psi)\vee\Box\phi ϕWψ=(ϕUψ)ϕ

也就是说 ϕ W ψ \phi W\psi ϕWψ表示为 ϕ U ψ \phi U\psi ϕUψ成立或者 □ ϕ \Box\phi ϕ成立

weak until和until操作是对偶的,具体表现为:
¬ ( ϕ U ψ ) = ( ϕ ∧ ¬ ψ ) W ( ¬ ϕ ∧ ¬ ψ ) ¬ ( ϕ W ψ ) = ( ϕ ∧ ¬ ψ ) U ( ¬ ϕ ∧ ¬ ψ ) \lnot(\phi U\psi)=(\phi \wedge\lnot\psi)W(\lnot\phi\wedge\lnot\psi) \\ \lnot(\phi W\psi)=(\phi \wedge\lnot\psi)U(\lnot\phi\wedge\lnot\psi) ¬(ϕUψ)=(ϕ¬ψ)W(¬ϕ¬ψ)¬(ϕWψ)=(ϕ¬ψ)U(¬ϕ¬ψ)
weak until和until两者的表达能力是相同的,两者之间可以互换
ϕ U ψ = ( ϕ W ψ ) ∧ ¬ □ ¬ ψ \phi U\psi=(\phi W\psi)\wedge\lnot\Box\lnot\psi ϕUψ=(ϕWψ)¬¬ψ

(其实我略微有点疑惑为什么要把这个知识点放在这个位置)

LTL与公平性

之前我们看到了,LTL公式可以用来描述两进程互斥问题的公平性属性,现在我们将它推广到一般的公平性问题

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

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

对于公平性假设fair和LTL公式 ϕ \phi ϕ,我们有如下结论
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ϕ)

其实这里想要表达的意思是,如果我们有了一套算法或者说流程可以验证TS系统是否满足LTL公式,那么我们可以用相同的流程步骤来检测在加入公平性约束的情况下,TS系统是否满足LTL公式。

  • 8
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值