目录
线性时序逻辑提供了一种非常直观但是在数学上又很精确的表示方法来描述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}) (□◊w1⇒□◊c1)∧(□◊w2⇒□◊c2)
- 火车轨道通行问题: □ ( 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_near→gate_is_close)
- 进程通信: □ ( r e q u e s t → ◊ r e s p o n s e ) \Box(request\rightarrow \Diamond response) □(request→◊response)
无限经常次可以表示为 □ ◊ φ \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} □◊waiti→□◊criti
- 弱公平性: ◊ □ w a i t i → □ ◊ c r i t i \Diamond\Box wait_{i}\rightarrow \Box \Diamond crit_{i} ◊□waiti→□◊criti
也可以用它来表示一些其他属性:
- 可达性
- 简单可达性: ◊ ψ \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} A0⊨a,即a∈A0
- σ ⊨ φ 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 j≥0使得 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 0≤i<1
- σ ⊨ ◊ φ \sigma\vDash\Diamondφ σ⊨◊φ 当且仅当 存在 j ≥ 0 j\ge0 j≥0使得 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 j≥0使得 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 j≥0使得 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 j≥0使得 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) π⊨◯◯(a∧b),因为迹的第三个命题是 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(a∧b),因为 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 s3⊨a∧b
- π ⊨ ( ¬ b ) U □ ( a ∧ b ) \pi\vDash(\lnot b)U\Box(a\wedge b) π⊨(¬b)U□(a∧b),因为到了状态 s 3 s_{3} s3之后将会一直处于 s 3 s_{3} s3状态,所以可以在 ( a ∧ b ) (a\wedge b) (a∧b)前面加上符号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(φ)
s⊨Words(φ)
当且仅当
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 TS⊨□a,因为这里每个状态中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⊭◯(a∧b),看到 s 3 s_{3} s3是一个初始状态,它的下一个状态还是 s 3 s_{3} s3,但是 s 3 s_{3} s3不满足 a ∧ b a\wedge b a∧b
- T S ⊭ b U ( a ∧ ¬ b ) TS\nvDash bU(a\wedge \lnot b) TS⊭bU(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)
s⊨fairϕ当且仅当 对于所有的π∈Paths(s),如果π⊨fair,那么π⊨ϕ当且仅当 s⊨(fair→ϕ)
其实这里想要表达的意思是,如果我们有了一套算法或者说流程可以验证TS系统是否满足LTL公式,那么我们可以用相同的流程步骤来检测在加入公平性约束的情况下,TS系统是否满足LTL公式。