本章目录
- 时态逻辑分为线性时态逻辑和分叉时态逻辑,分叉时态逻辑里面有一种逻辑叫做计算树逻辑
线性时态逻辑(Linear temporal logic,简称LTL)
线性时间属性(LT property)
- 一个线性时间属性是在AP上的一组无限路径,我们通常很难直接指出这些属性是什么,但我们可以使用逻辑简洁地指定这些属性的规律,先让我们来看一下直接指出互斥现象和饥饿自由在每个时刻的方法:
- 在
A
P
=
{
c
1
,
c
2
}
AP=\{c_1,c_2\}
AP={c1,c2}上指定互斥现象的方法:
- P m u t e x = A 0 A 1 A 2 ⋯ P_{mutex}=A_0A_1A_2\cdots Pmutex=A0A1A2⋯(无限字),且对于 0 ≤ i 0\leq i 0≤i有 { c 1 , c 2 } ⊈ A i \{c_1,c_2\}\nsubseteq A_i {c1,c2}⊈Ai
- 在
A
P
=
{
c
1
,
w
1
,
c
2
,
w
2
}
AP=\{c_1,w_1,c_2,w_2\}
AP={c1,w1,c2,w2}上指定饥饿自由的方法:
-
P
n
o
s
t
a
r
v
e
=
A
0
A
1
A
2
⋯
P_{nostarve}=A_0A_1A_2\cdots
Pnostarve=A0A1A2⋯(无限字),且
( ∃ ∞ j . w 1 ∈ A j ) ⇒ ( ∃ ∞ j . c 1 ∈ A j ) ∧ ( ∃ ∞ j . w 2 ∈ A j ) ⇒ ( ∃ ∞ j . c 2 ∈ A j ) (\overset{\infty}{\exists } j.w_1 \in A_j)\Rightarrow (\overset{\infty}{\exists } j.c_1 \in A_j)\wedge (\overset{\infty}{\exists } j.w_2 \in A_j)\Rightarrow(\overset{\infty}{\exists } j.c_2 \in A_j) (∃∞j.w1∈Aj)⇒(∃∞j.c1∈Aj)∧(∃∞j.w2∈Aj)⇒(∃∞j.c2∈Aj)
-
P
n
o
s
t
a
r
v
e
=
A
0
A
1
A
2
⋯
P_{nostarve}=A_0A_1A_2\cdots
Pnostarve=A0A1A2⋯(无限字),且
- 在
A
P
=
{
c
1
,
c
2
}
AP=\{c_1,c_2\}
AP={c1,c2}上指定互斥现象的方法:
- 互斥现象:两个进程不可以同时进入临界资源
- 饥饿自由:当我不停的等待进入临界资源的时候,我最终可以不停的进入临界资源
- LTL的作用:描述LT特性的逻辑,但又不给出具体的时刻,只有时间的相对特性
LTL的语法
-
命题逻辑:描述系统在某一时刻的静态行为,LTL中最常用的是以下三种:
- 原子命题: a ∈ A P a \in AP a∈AP
- 否定律: ¬ ϕ \neg \phi ¬ϕ
- 结合律: ϕ ∧ ψ \phi \wedge \psi ϕ∧ψ
-
时态算子:描述系统在轨迹下所具有的性质,最基本的有以下两种:
- 下一时刻满足 ϕ \phi ϕ: ◯ ϕ \bigcirc \phi ◯ϕ,读作next
- 每一时刻一直满足 ϕ \phi ϕ直到 ψ \psi ψ: ϕ ⋃ ψ \phi \bigcup \psi ϕ⋃ψ,读作until
-
由命题逻辑和时态算子派生出的算子:
- ϕ ∨ ψ ≡ ¬ ( ¬ ϕ ∧ ¬ ψ ) \phi \vee \psi \equiv \neg(\neg \phi \wedge \neg \psi) ϕ∨ψ≡¬(¬ϕ∧¬ψ)
- ϕ ⇒ ψ ≡ ¬ ϕ ∨ ψ \phi \Rightarrow \psi \equiv \neg \phi \vee \psi ϕ⇒ψ≡¬ϕ∨ψ
- ϕ ⇔ ψ ≡ ( ϕ ⇒ ψ ) ∧ ( ψ ⇒ ϕ ) \phi \Leftrightarrow \psi \equiv (\phi \Rightarrow \psi) \wedge (\psi \Rightarrow \phi) ϕ⇔ψ≡(ϕ⇒ψ)∧(ψ⇒ϕ)
- ϕ ⨁ ψ ≡ ( ϕ ∧ ¬ ψ ) ∧ ( ¬ ϕ ∧ ψ ) \phi \bigoplus \psi \equiv (\phi \wedge \neg \psi) \wedge (\neg \phi \wedge \psi) ϕ⨁ψ≡(ϕ∧¬ψ)∧(¬ϕ∧ψ)
- t r u e ≡ ϕ ∨ ψ true \equiv \phi \vee \psi true≡ϕ∨ψ
- f a l s e ≡ ¬ t r u e false \equiv \neg true false≡¬true
-
◊
ϕ
≡
t
r
u
e
U
ϕ
\Diamond \phi \equiv true \ U \phi
◊ϕ≡true Uϕ
◊ \Diamond ◊读作eventually,表示在未来某刻会满足 ϕ \phi ϕ
-
□
ϕ
≡
¬
◊
¬
ϕ
\Box \phi \equiv \neg \Diamond \neg \phi
□ϕ≡¬◊¬ϕ
□ \Box □读作always,表示在此时起开始会一直满足 ϕ \phi ϕ
-
这些算子是有优先级的, ¬ , ◯ \neg,\bigcirc ¬,◯优先执行,其次是 ⋃ \bigcup ⋃,然后是 ∨ , ∧ \vee,\wedge ∨,∧,最后是 → \to →
-
对算子的直观解释:
在一条轨迹上,如果从某时刻起,每个时刻只满足 b b b,即便没出现过 a a a,那么该时刻也满足 a ⋃ b a \bigcup b a⋃b
-
此时,让我们用LTL语言表达互斥现象和饥饿自由在每个时刻的逻辑:
- 互斥现象: □ ¬ ( c 1 ∧ c 2 ) \Box \neg(c_1 \wedge c_2) □¬(c1∧c2)
- 饥饿自由: ( □ ◊ 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)
□ ◊ w 1 \Box \Diamond w_1 □◊w1理解方法:先看最外层,把 ◊ w 1 \Diamond w_1 ◊w1看作一个 ϕ \phi ϕ,则 □ ϕ \Box \phi □ϕ表示在此时起开始会一直满足 ϕ \phi ϕ;再看内层 ◊ w 1 \Diamond w_1 ◊w1,表示无限经常次满足 w 1 w_1 w1;因此,加起来表示,在此时起开始会一直无限经常次满足 w 1 w_1 w1
LTL的语义
- 由LTL公式
φ
\varphi
φ在AP上引起的LT性质为:
W
o
r
d
s
(
φ
)
=
{
σ
∈
(
2
A
P
)
ω
∣
σ
⊨
φ
}
Words(\varphi)=\{\sigma \in (2^{AP})^\omega |\sigma \vDash \varphi \}
Words(φ)={σ∈(2AP)ω∣σ⊨φ},其中
σ
\sigma
σ是一个轨迹,
σ
=
A
0
A
1
A
2
⋯
\sigma=A_0A_1A_2\cdots
σ=A0A1A2⋯,由这个LT性质可以推出如下性质:
- σ ⊨ t r u e \sigma \vDash true σ⊨true,表示路径 σ \sigma σ一定有一条正确的路径
-
σ
⊨
a
,
i
f
f
a
∈
A
0
(
i
.
e
.
,
A
0
⊨
a
)
\sigma \vDash a,iff \ a\in A_0(i.e.,A_0 \vDash a)
σ⊨a,iff a∈A0(i.e.,A0⊨a),表示当且仅当
a
a
a是状态集合
A
0
A_0
A0当中的一种可能时,路径
σ
\sigma
σ中包含
a
a
a
A 0 A_0 A0包含了初始状态所有的可能, a a a只是其中的一种
-
σ
⊨
φ
1
∧
φ
,
i
f
f
σ
⊨
φ
1
a
n
d
σ
⊨
φ
2
\sigma \vDash \varphi_1 \wedge \varphi,iff \ \sigma \vDash \varphi_1 \ and \ \sigma \vDash \varphi_2
σ⊨φ1∧φ,iff σ⊨φ1 and σ⊨φ2,表示如果路径
σ
\sigma
σ中包含了状态
φ
1
\varphi_1
φ1和
φ
2
\varphi_2
φ2,那么
σ
\sigma
σ包含
φ
1
∧
φ
2
\varphi_1 \wedge \varphi_2
φ1∧φ2
i . e . i.e. i.e.表示“也就是”
- σ ⊨ ¬ φ , i f f σ ⊭ φ \sigma \vDash \neg \varphi,iff \ \sigma \nvDash \varphi σ⊨¬φ,iff σ⊭φ
-
σ
⊨
◯
φ
,
i
f
f
σ
[
i
.
.
]
=
A
1
A
2
A
3
⋯
⊨
φ
\sigma \vDash \bigcirc \varphi,iff \ \sigma[i..]=A_1A_2A_3\cdots\vDash \varphi
σ⊨◯φ,iff σ[i..]=A1A2A3⋯⊨φ
σ [ i . . ] = A i A i + 1 A i + 2 ⋯ \sigma[i..]=A_iA_{i+1}A_{i+2}\cdots σ[i..]=AiAi+1Ai+2⋯,表示从索引 i i i开始后的 σ \sigma σ的后缀
- σ ⊨ ◊ φ , i f f ∃ j ⩾ 0. σ [ j . . ] ⊨ φ \sigma \vDash \Diamond \varphi,iff \ \exists j \geqslant 0.\sigma [j..]\vDash \varphi σ⊨◊φ,iff ∃j⩾0.σ[j..]⊨φ
- σ ⊨ □ φ , i f f ∀ j ⩾ 0. σ [ j . . ] ⊨ φ \sigma \vDash \Box \varphi,iff \ \forall j \geqslant 0.\sigma [j..]\vDash \varphi σ⊨□φ,iff ∀j⩾0.σ[j..]⊨φ
- σ ⊨ □ ◊ φ , i f f ∀ j ⩾ 0. ∃ ⩾ σ [ i . . ] ⊨ φ \sigma \vDash \Box\Diamond \varphi,iff \ \forall j \geqslant 0.\exists \geqslant \sigma [i..]\vDash \varphi σ⊨□◊φ,iff ∀j⩾0.∃⩾σ[i..]⊨φ
- σ ⊨ ◊ □ φ , i f f ∃ j ⩾ 0. ∀ ⩾ σ [ i . . ] ⊨ φ \sigma \vDash \Diamond\Box \varphi,iff \ \exists j \geqslant 0.\forall \geqslant \sigma [i..]\vDash \varphi σ⊨◊□φ,iff ∃j⩾0.∀⩾σ[i..]⊨φ
- 范例:
根据上图,我们可以推出这个TS的四个性质:- 从初始状态开始,每一个状态都满足 a a a,即 T S ⊨ □ a TS \vDash \Box a TS⊨□a
- 从初始状态开始,每一个状态都满足,如果该状态不满足 b b b,则该状态满足 a ∧ ¬ b a \wedge \neg b a∧¬b,即 T S ⊨ □ ( ¬ b ⇒ □ ( a ∧ ¬ b ) ) TS \vDash \Box (\neg b \Rightarrow \Box(a \wedge \neg b)) TS⊨□(¬b⇒□(a∧¬b))
- 从左边的初始状态 s 1 s_1 s1开始,下一个状态可以同时满足 a a a和 b b b,但从右边的初始状态开始, s 3 s_3 s3的下个状态还是 s 3 s_3 s3, s 3 s_3 s3并不能同时满足 a a a和 b b b,因此 T S ⊭ ◯ ( a ∧ b ) TS \nvDash \bigcirc (a \wedge b) TS⊭◯(a∧b)
- 从左边的初始状态 s 1 s_1 s1开始,每一个状态都满足 b b b,直到满足 a ∧ ¬ b a \wedge \neg b a∧¬b时,不再满足 b b b,但从右边的初始状态开始,并不满足,因此 T S ⊭ b ⋃ ( a ∧ ¬ b ) TS \nvDash b \bigcup(a \wedge \neg b) TS⊭b⋃(a∧¬b)
用LTL表示我们常见的性质
- 可达性(Reachability)
- 简单的可达性(simple reachability): ◊ ψ \Diamond \psi ◊ψ
- 多条件的可达性(conditional reachability): ϕ ⋃ ψ \phi \bigcup \psi ϕ⋃ψ
TS系统可以既不满足 ◊ a \Diamond a ◊a也不满足 ¬ ◊ a \neg \Diamond a ¬◊a:
- 安全性(Safety):
- 不变性(invariant): □ ϕ \Box \phi □ϕ
- 活性(Liveness): □ ( ϕ ⇒ ◊ ψ ) a n d o t h e r s \Box(\phi \Rightarrow \Diamond \psi) and \ others □(ϕ⇒◊ψ)and others
- 公平性(Fairness): □ ◊ ϕ a n d o t h e r s \Box \Diamond \phi \ and \ others □◊ϕ and others
- 等价性(Equivalence):如果 W o r d s ( ϕ ) = W o r d s ( ψ ) Words(\phi)=Words(\psi) Words(ϕ)=Words(ψ),那么 ϕ \phi ϕ和 ψ \psi ψ等价,表示为 ϕ ≡ ψ \phi \equiv\psi ϕ≡ψ
- 对偶性定律(Duality law):
- ¬ □ ϕ ≡ ◊ ¬ ϕ \neg \Box \phi \equiv \Diamond \neg \phi ¬□ϕ≡◊¬ϕ
- ¬ ◊ ϕ ≡ □ ¬ ϕ \neg \Diamond \phi \equiv \Box \neg \phi ¬◊ϕ≡□¬ϕ
- ¬ ◯ ϕ ≡ ◯ ¬ ϕ \neg \bigcirc \phi \equiv \bigcirc \neg \phi ¬◯ϕ≡◯¬ϕ
- 对偶性定律(Idempotency law):
- □ □ ϕ ≡ □ ϕ \Box \Box \phi \equiv \Box \phi □□ϕ≡□ϕ
- ◊ ◊ ϕ ≡ ◊ ϕ \Diamond \Diamond \phi \equiv \Diamond \phi ◊◊ϕ≡◊ϕ
- ϕ ⋃ ( ϕ ⋃ ψ ) ≡ ϕ ⋃ ψ \phi \bigcup ( \phi \bigcup \psi) \equiv \phi \bigcup \psi ϕ⋃(ϕ⋃ψ)≡ϕ⋃ψ
- ( ϕ ⋃ ψ ) ⋃ ψ ≡ ϕ ⋃ ψ (\phi \bigcup \psi) \bigcup \psi \equiv \phi \bigcup \psi (ϕ⋃ψ)⋃ψ≡ϕ⋃ψ
- 吸收律(Absorption law):
- ◊ □ ◊ ϕ ≡ □ ◊ ϕ \Diamond \Box \Diamond \phi \equiv \Box \Diamond \phi ◊□◊ϕ≡□◊ϕ
- □ ◊ □ ϕ ≡ ◊ □ ϕ \Box \Diamond \Box \phi \equiv \Diamond \Box \phi □◊□ϕ≡◊□ϕ
- 分布律(Distribution law):
- ◯ ( ϕ ⋃ ψ ) ≡ ( ◯ ϕ ) ⋃ ( ◯ ψ ) \bigcirc(\phi \bigcup \psi) \equiv (\bigcirc \phi) \bigcup (\bigcirc \psi) ◯(ϕ⋃ψ)≡(◯ϕ)⋃(◯ψ)
- ◊ ( ϕ ∨ ψ ) ≡ ◊ ϕ ∨ ◊ ψ \Diamond(\phi \vee\psi) \equiv \Diamond \phi \vee \Diamond \psi ◊(ϕ∨ψ)≡◊ϕ∨◊ψ
- □ ( ϕ ∧ ψ ) ≡ □ ϕ ∧ □ ψ \Box(\phi \wedge \psi) \equiv \Box \phi \wedge \Box \psi □(ϕ∧ψ)≡□ϕ∧□ψ
注意:
- ◊ ( ϕ ⋃ ψ ) ≢ ( ◊ ϕ ) ⋃ ( ◊ ψ ) \Diamond(\phi \bigcup \psi) \not\equiv (\Diamond\phi) \bigcup (\Diamond\psi) ◊(ϕ⋃ψ)≡(◊ϕ)⋃(◊ψ)
- ◊ ( ϕ ∧ ψ ) ≢ ◊ ϕ ∧ ◊ ψ \Diamond(\phi \wedge \psi) \not\equiv \Diamond\phi \wedge \Diamond\psi ◊(ϕ∧ψ)≡◊ϕ∧◊ψ
- □ ( ϕ ∨ ψ ) ≢ □ ϕ ∨ □ ψ \Box(\phi \vee \psi) \not\equiv \Box \phi \vee \Box \psi □(ϕ∨ψ)≡□ϕ∨□ψ
- 下面的这个例子说明了
◊
(
a
∧
b
)
≢
◊
a
∧
◊
b
\Diamond(a \wedge b) \not\equiv \Diamond a \wedge \Diamond b
◊(a∧b)≡◊a∧◊b:
T S ⊭ ◊ ( a ∧ b ) TS\nvDash \Diamond(a \wedge b) TS⊭◊(a∧b),但 T S ⊨ ◊ a ∧ ◊ b ) TS\vDash \Diamond a \wedge \Diamond b) TS⊨◊a∧◊b)
- 扩展律(Expansion laws):
- ϕ ⋃ ψ ≡ ψ ∨ ( ϕ ∧ ◯ ( ϕ ⋃ ψ ) ) \phi \bigcup \psi \equiv \psi \vee ( \phi \wedge \bigcirc ( \phi \bigcup \psi)) ϕ⋃ψ≡ψ∨(ϕ∧◯(ϕ⋃ψ))
- ◊ ϕ ≡ ϕ ∨ ◯ ◊ ϕ ) ) \Diamond \phi \equiv \phi \vee \bigcirc \Diamond \phi)) ◊ϕ≡ϕ∨◯◊ϕ))
- □ ϕ ≡ ϕ ∧ ◯ □ ϕ ) ) \Box \phi \equiv \phi \wedge \bigcirc \Box \phi)) □ϕ≡ϕ∧◯□ϕ))
在这篇文章里有对这几个特性的详尽介绍:https://blog.csdn.net/qq_37400312/article/details/109721435
公平性(Fairness)
- 定义:一条路径执行过程中所有过程均符合实际情况,则表示这个路径具有了公平性。
- 对于不满足公平性的路径,可以将不合实际的情况过程剔除,路径便具有了公平性。
- 无饥饿性通常是在公平性的条件下产生的。
- 公平性通常是建立活性问题的必要手段。
- 生活实例:
- 对于十字路口的两个红绿灯进程进程交错执行:
T
S
=
T
r
L
i
g
h
t
1
∣
∣
T
r
L
i
g
h
t
2
TS = TrLight_1||TrLight_2
TS=TrLight1∣∣TrLight2,给定一个活性性质的自然语言描述为:每个红绿灯都无限经常次处于绿灯的状态。这条性质表示红绿灯在无限次状态转化的过程中,会有无限次处于绿灯的状态。
- 轨迹: { r e d 1 , r e d 2 } , { g r e e n 1 , r e d 2 } , { r e d 1 , g r e e n 2 } , { g r e e n 1 , r e d 2 } ⋯ \{red_1,red_2\},\{green_1,red_2\},\{red_1,green_2\},\{green_1,red_2\}\cdots {red1,red2},{green1,red2},{red1,green2},{green1,red2}⋯,像这样的轨迹,满足刚才我们所说的活性,那么这条轨迹也具有安全性。
- 轨迹: { r e d 1 , r e d 2 } , { g r e e n 1 , r e d 2 } , { r e d 1 , r e d 2 } , { g r e e n 1 , r e d 2 } ⋯ \{red_1,red_2\},\{green_1,red_2\},\{red_1,red_2\},\{green_1,red_2\}\cdots {red1,red2},{green1,red2},{red1,red2},{green1,red2}⋯,像这样的轨迹,第二个红绿灯永远为红色,不满足刚才我们所说的活性,那么这条轨迹不具有安全性。
- 对于十字路口的两个红绿灯进程进程交错执行:
T
S
=
T
r
L
i
g
h
t
1
∣
∣
T
r
L
i
g
h
t
2
TS = TrLight_1||TrLight_2
TS=TrLight1∣∣TrLight2,给定一个活性性质的自然语言描述为:每个红绿灯都无限经常次处于绿灯的状态。这条性质表示红绿灯在无限次状态转化的过程中,会有无限次处于绿灯的状态。
公平性约束(Fairness constraints)
-
解释:一个程序,有一些路径永远不会执行,那么,不管这些路径执行后是正确还是错误,我们都不需要去验证它,所以我们在验证的过程中,需要加上一些约束,来避免我们去验证一些永远不会走的路径,这个约束,我们称之为公平性约束
-
基于动作的公平性用A-fair表示,有三种情况:无条件公平性、强公平性、弱公平性
-
对于一个没有初始状态的 T S = ( S , A c t , → , I , A P , L ) TS = (S,Act,\to,I,AP,L) TS=(S,Act,→,I,AP,L)
- 无初始状态
- A ⊆ A c t A \subseteq Act A⊆Act
- 无限执行片段 ρ = s 0 → α 0 s 1 → α 1 s 2 ⋯ \rho = s_0 \overset{\alpha_0}{\rightarrow} s_1 \overset{\alpha_1}{\rightarrow} s_2\cdots ρ=s0→α0s1→α1s2⋯
-
无条件公平性约束(Unconditional A-fair):若轨迹满足无条件公平性约束,则 A A A中存在的一个或多个动作可以无限经常次执行。
- 解释:当 ρ \rho ρ是一个无条件公平性路径时,对于 A A A中的动作在这条路径上无限经常此执行,比如 A = { ω } ⊆ A c t { N C , W , C } , ρ = s 0 → N C s 1 → W s 2 → C s 3 → N C ⋯ s n → N C ⋯ s m → N C ⋯ A=\{ \omega \} \subseteq Act\{ NC,W,C \},\rho=s_0 \overset{NC}{\rightarrow}s_1\overset{W}{\rightarrow}s_2\overset{C}{\rightarrow}s_3\overset{NC}{\rightarrow}\cdots s_n\overset{NC}{\rightarrow}\cdots s_m \overset{NC}{\rightarrow}\cdots A={ω}⊆Act{NC,W,C},ρ=s0→NCs1→Ws2→Cs3→NC⋯sn→NC⋯sm→NC⋯,动作 N C NC NC在路径上经常次执行,这个路径就叫做无条件公平路径
- 公式:
t r u e ⇒ ∀ k ⩾ 0 , ∃ j ⩾ k , α j ∈ A true \Rightarrow \forall k \geqslant 0,\exist j \geqslant k,\alpha_j \in A true⇒∀k⩾0,∃j⩾k,αj∈A
对轨迹中的动作序列的任一位置 k k k,总能在 k k k上或 k k k后面找到一个位置 j j j,该位置的动作 α j ∈ A \alpha_j \in A αj∈A
-
强公平性(Strongly A-fair):若轨迹满足强公平性约束,如果 A A A中存在的动作无限经常次想要执行,则会导致 A A A中存在一个或多个动作可以无限经常次执行。
- 公式:
( ∀ k ⩾ 0 , ∃ j ⩾ k , A c t ( s j ) ∩ A ≠ ∅ ) ⇒ ∀ k ⩾ 0 , ∃ j ⩾ k , α j ∈ A ( \forall k \geqslant 0,\exist j \geqslant k,Act(s_j) \cap A \neq \varnothing ) \Rightarrow \forall k \geqslant 0,\exist j \geqslant k,\alpha_j \in A (∀k⩾0,∃j⩾k,Act(sj)∩A=∅)⇒∀k⩾0,∃j⩾k,αj∈A
对轨迹中的状态序列的任一位置 k k k,若总能在 k k k上或 k k k后面找到一个位置 j j j,使得状态 s j s_j sj的所有直接动作 A c t ( s j ) Act(s_j) Act(sj)中存在 A A A中的动作(即 A c t ( s j ) ∩ A ≠ ∅ Act(s_j) \cap A \neq \varnothing Act(sj)∩A=∅,无限经常次想要执行),那么 A A A中一定存在无限经常次执行的动作
- 公式:
-
弱公平性(Weakly A-fair):若轨迹满足弱公平性约束,如果 A A A中的某时刻开始,无限经常次有 A A A中的动作想要执行,则会导致 A A A中存在一个或多个动作可以无限经常次执行。
- 公式:
( ∃ k ⩾ 0 , ∀ j ⩾ k , A c t ( s j ) ∩ A ≠ ∅ ) ⇒ ∀ k ⩾ 0 , ∃ j ⩾ k , α j ∈ A ( \exist k \geqslant 0,\forall j \geqslant k,Act(s_j) \cap A \neq \varnothing ) \Rightarrow \forall k \geqslant 0,\exist j \geqslant k,\alpha_j \in A (∃k⩾0,∀j⩾k,Act(sj)∩A=∅)⇒∀k⩾0,∃j⩾k,αj∈A
对轨迹中的状态序列的某一位置 k k k,若总能在 k k k上或 k k k后面找到一个位置 j j j,使得状态 s j s_j sj的所有直接动作 A c t ( s j ) Act(s_j) Act(sj)中存在 A A A中的动作(即 A c t ( s j ) ∩ A ≠ ∅ Act(s_j) \cap A \neq \varnothing Act(sj)∩A=∅,无限经常次想要执行),那么 A A A中一定存在无限经常次执行的动作
其中, A c t ( s ) = { α ∈ A c t ∣ ∃ s ′ ∈ S , s → α s ′ } Act(s) = \{ \alpha \in Act | \exist s' \in S,s\overset{\alpha}{\rightarrow} s' \} Act(s)={α∈Act∣∃s′∈S,s→αs′}
- 公式:
-
例题一:
- 取动作
A
=
{
e
n
t
e
r
1
,
e
n
t
e
r
2
}
A=\{enter_1,enter_2 \}
A={enter1,enter2},判断下面的红色轨迹是否满足强公平性?(红色轨迹从第2个位置开始,234位置的状态轮以闭圈的形式无限次执行)
- 答案:
- 在红色轨迹中,我们看到,状态 ⟨ w 1 , n 2 , y = 1 ⟩ \left \langle w_1,n_2,y=1 \right \rangle ⟨w1,n2,y=1⟩无限次想要执行 e n t e r 1 enter_1 enter1,状态 ⟨ w 1 , w 2 , y = 1 ⟩ \left \langle w_1,w_2,y=1 \right \rangle ⟨w1,w2,y=1⟩无限次想要执行 e n t e r 1 enter_1 enter1和 e n t e r 2 enter_2 enter2,轨迹最终的结果是无限经常次执行 e n t e r 2 enter_2 enter2,所以这个轨迹满足强公平性。
- 取动作
A
=
{
e
n
t
e
r
1
,
e
n
t
e
r
2
}
A=\{enter_1,enter_2 \}
A={enter1,enter2},判断下面的红色轨迹是否满足强公平性?(红色轨迹从第2个位置开始,234位置的状态轮以闭圈的形式无限次执行)
-
例题二:
-
取动作 A = { r e q 2 } A=\{req_2 \} A={req2},判断下面的红色轨迹是否满足弱公平性?(红色轨迹从第1个位置开始,123位置的状态轮以闭圈的形式无限次执行)
-
答案:
- 在红色轨迹中,我们看到,从第一个状态开始,每一个状态都无限经常次想要执行 r e q 2 req_2 req2,但 A A A中不存在无限经常次执行的动作,所以这个轨迹不满足弱公平性。
-
-
-
程序或进程在无条件公平性下终止的情况:
p r o c I n c = w h i l e ⟨ x ⩾ 0 d o x : = x + 1 ⟩ o d p r o c R e s e t = x : = − 1 \begin{aligned} proc \ Inc \ =& \ while \ \left \langle x \geqslant 0 \ do \ x := x + 1 \right \rangle \ od \\ proc \ Reset \ = & \ x := −1 \end{aligned} proc Inc =proc Reset = while ⟨x⩾0 do x:=x+1⟩ od x:=−1x x x是共享变量,初始值为0
-
公平性对路径的约束过强或过弱
- 公平性的目的是排除“不合理”的路径,但如果我们去除了过度或者取出不足时,对验证结果会产生一定的影响。
- 约束过强(去除过度时):
- 总的路径 ⊆ \subseteq ⊆合理的路径 ⊆ \subseteq ⊆验证用的路径
- 如果验证结果为false,则可以说明合理的路径对应的模型是有问题的
- 如果验证的结果为true,无法说明合理的路径对应的模型是正确的
- 约束过弱(去除不足时):
- 总的路径 ⊆ \subseteq ⊆验证用的路径 ⊆ \subseteq ⊆合理的路径
- 如果验证结果为true,则可以说明合理的路径对应的模型是正确的
- 如果验证的结果为false,无法说明合理的路径对应的模型是错误的
关于公平性的这部分,我在另一篇文章里进行了讲解,但为了方便理解关于LTL的公平性约束问题,我有将这部分内容重新粘贴了过来,另一篇文章的链接为:https://blog.csdn.net/qq_37400312/article/details/109721435
LTL的公平性约束
假设 ϕ \phi ϕ和 ψ \psi ψ是在AP上的命题逻辑公式,则
- 无条件的LTL公平性约束的形式如下: u f a i r = □ ◊ ψ ufair = \Box \Diamond \psi ufair=□◊ψ
- 强LTL公平性约束的形式如下: s f a i r = □ ◊ ϕ → □ ◊ ψ sfair = \Box \Diamond \phi \to \Box \Diamond \psi sfair=□◊ϕ→□◊ψ,从此刻起每时每刻都会想要在未来某时刻想要执行 ϕ \phi ϕ,则从此刻起每时每刻都会能够在未来某时刻能够执行 ψ \psi ψ
- 弱LTL公平性约束的形式如下: w f a i r = ◊ □ ϕ → ◊ □ ψ wfair = \Diamond \Box \phi \to \Diamond \Box \psi wfair=◊□ϕ→◊□ψ,在未来某一时刻起会一直想要执行 ϕ \phi ϕ,则在在未来某一时刻会一直能够执行 ψ \psi ψ
ϕ \phi ϕ表示想要执行, ψ \psi ψ表示能够执行
LTL的公平性假设
- 强公平性假设: s f a i r = ⋃ 0 < i ⩽ k ( □ ◊ ϕ i → □ ◊ ψ i ) sfair=\underset{0<i\leqslant k}{\bigcup}(\Box\Diamond \phi_i \to \Box\Diamond \psi_i) sfair=0<i⩽k⋃(□◊ϕi→□◊ψi)
- 通用格式: f a i r = u f a i r ∧ s f a i r ∧ w f a i r fair = ufair \wedge sfair \wedge wfair fair=ufair∧sfair∧wfair
- 经验法则:强或无条件公平性假设有利于解决争议,弱的公平性足以解决由交织产生的不决定性
计算树逻辑( Computation tree logic,简称CTL)
线性时态逻辑和分支时态逻辑
- 线性时态逻辑:以状态开始的(所有)路径的语句。例如:
- s ⊨ □ ( x ⩽ 20 ) s \vDash \Box(x \leqslant 20) s⊨□(x⩽20),表示从s开始的所有路径都满足 x ⩽ 20 x\leqslant 20 x⩽20
- 分支时态逻辑:关于以一个状态开始的所有或某些路径的语句。例如:
- s ⊨ ∀ □ ( x ⩽ 20 ) s \vDash \forall \Box (x \leqslant 20) s⊨∀□(x⩽20),表示从s开始的所有路径都满足 x ⩽ 20 x\leqslant 20 x⩽20
- s ⊨ ∃ □ ( x ⩽ 20 ) s \vDash \exists \Box (x \leqslant 20) s⊨∃□(x⩽20),表示从s开始存在路径满足 x ⩽ 20 x\leqslant 20 x⩽20
检查LTL中是否有 ∃ φ \exists \varphi ∃φ,可以用CTL的 ∀ ¬ φ \forall \neg \varphi ∀¬φ检测
转移系统(Transition systems)到树(Trees)的转换
Transition systems:
Trees:
我们看到,这个Transition systems有着无穷无尽的路径,我们用数来表示各个路径,但没有办法将其全部表示出来,图中表示了前四次转移,虽然没有办法全部表示,但我们可以根据Transition systems来判断某条路径是否满足某性质。
状态和算子
- 状态上的语句:
- 原子命题: a ∈ A P a \in AP a∈AP
- 否定律: ¬ ϕ \neg \phi ¬ϕ
- 结合律: ϕ ∧ ψ \phi \wedge \psi ϕ∧ψ
- 存在一条实现 ϕ \phi ϕ的路径: ∃ ϕ \exists \phi ∃ϕ
- 所有路径都可以实现 ϕ \phi ϕ: ∀ ϕ \forall \phi ∀ϕ
- 路径上的语句:
- 下一个状态满足: ◯ ϕ \bigcirc \phi ◯ϕ
- ϕ \phi ϕ一直满足直到 ψ \psi ψ满足: ϕ ⋃ ψ \phi \bigcup \psi ϕ⋃ψ
◯ \bigcirc ◯和 ⋃ \bigcup ⋃会与 ∃ \exists ∃和 ∀ \forall ∀交替使用
- 派生算子:
- 存在路径满足 ϕ \phi ϕ: ∃ ◊ ϕ ≡ ∃ ( t r u e ⋃ ϕ ) \exists \Diamond \phi \equiv \exists(true \bigcup \phi) ∃◊ϕ≡∃(true⋃ϕ)
- 所有路径满足 ϕ \phi ϕ: ∀ ◊ ϕ ≡ ∀ ( t r u e ⋃ ϕ ) \forall \Diamond \phi \equiv \forall (true \bigcup \phi) ∀◊ϕ≡∀(true⋃ϕ)
- 存在路径总是满足 ϕ \phi ϕ: ∃ □ ϕ ≡ ¬ ∀ ◊ ¬ ϕ \exists \Box \phi \equiv \neg \forall \Diamond \neg \phi ∃□ϕ≡¬∀◊¬ϕ
- 所有路径总是满足 ϕ \phi ϕ: ∀ □ ϕ ≡ ¬ ∃ ◊ ¬ ϕ \forall \Box \phi \equiv \neg \exists \Diamond \neg \phi ∀□ϕ≡¬∃◊¬ϕ
- 弱直到:
∃ ( ϕ W ψ ) ≡ ¬ ∀ ( ( ϕ ∧ ¬ ψ ) ⋃ ( ¬ ϕ ∧ ¬ ψ ) ) \exists(\phi W \psi) \equiv \neg \forall ((\phi \wedge \neg \psi)\bigcup(\neg \phi \wedge \neg \psi)) ∃(ϕWψ)≡¬∀((ϕ∧¬ψ)⋃(¬ϕ∧¬ψ))
∀ ( ϕ W ψ ) ≡ ¬ ∃ ( ( ϕ ∧ ¬ ψ ) ⋃ ( ¬ ϕ ∧ ¬ ψ ) ) \forall (\phi W \psi) \equiv \neg \exists((\phi \wedge \neg \psi)\bigcup(\neg \phi \wedge \neg \psi)) ∀(ϕWψ)≡¬∃((ϕ∧¬ψ)⋃(¬ϕ∧¬ψ))
语义
语义学的可视化化
CTL状态公式的语义学
s ⊨ ϕ s \vDash \phi s⊨ϕ表示当且仅当公式 ϕ \phi ϕ在状态 s s s中成立
- s ⊨ a s \vDash a s⊨a,在 a a a属于从状态 s s s出发的路径中的一条路径时,时成立,即 a ∈ L ( s ) a \in L(s) a∈L(s)
- s ⊨ ¬ ϕ s \vDash \neg \phi s⊨¬ϕ, i f f ¬ ( s ⊨ ϕ ) iff \ \neg (s \vDash \phi) iff ¬(s⊨ϕ)
- s ⊨ ¬ ϕ s \vDash \neg \phi s⊨¬ϕ, i f f ( s ⊨ ϕ ) ( s ⊨ ψ ) iff \ (s \vDash \phi) (s \vDash \psi) iff (s⊨ϕ)(s⊨ψ)
- s ⊨ ∃ ϕ s \vDash \exists \phi s⊨∃ϕ, i f f iff ~ iff 从 s s s开始的一些路径 π \pi π满足 π ⊨ ϕ \pi \vDash \phi π⊨ϕ
- s ⊨ ∀ ϕ s \vDash \forall \phi s⊨∀ϕ, i f f iff ~ iff 从 s s s开始的所有路径 π \pi π满足 π ⊨ ϕ \pi \vDash \phi π⊨ϕ
CTL路径公式的语义学
π ⊨ ϕ \pi \vDash \phi π⊨ϕ表示路径 π \pi π满足公式 ϕ \phi ϕ
- π ⊨ ◯ ϕ i f f π [ 1 ] ⊨ ϕ \pi \vDash \bigcirc \phi iff \ \pi [1] \vDash \phi π⊨◯ϕiff π[1]⊨ϕ
- π ⊨ ϕ ⋃ ψ i f f ( ∃ j ⩾ 0. π [ j ] ⊨ ψ ∧ ∀ 0 ⩽ k < j . π [ k ] ⊨ ϕ ) \pi \vDash \phi \ \bigcup \psi \ iff \ (\exists j \geqslant 0.\pi [j] \vDash \psi \wedge \forall 0 \leqslant k <j.\pi[k]\vDash \phi) π⊨ϕ ⋃ψ iff (∃j⩾0.π[j]⊨ψ∧∀0⩽k<j.π[k]⊨ϕ)
π [ i ] \pi[i] π[i]表示在路径 π \pi π上面的状态 s i s_i si
迁移系统语义
- 满足CTL状态公式 ϕ \phi ϕ的集合 S a t ( ϕ ) Sat(\phi) Sat(ϕ)定义为: S a t ( ϕ ) = { s ∈ S ∣ s ⊨ ϕ } Sat(\phi) =\{s \in S | s \vDash \phi \} Sat(ϕ)={s∈S∣s⊨ϕ}
- 当所有初始状态满足 ϕ \phi ϕ时,TS满足CTL公式: T S ⊨ ϕ i f f ∀ s 0 ⊨ ϕ TS \vDash \phi \ iff \ \forall_{s_0} \vDash \phi TS⊨ϕ iff ∀s0⊨ϕ
TS可能不满足 ϕ \phi ϕ也不满足 ¬ ϕ \neg \phi ¬ϕ,即 T S ⊭ ϕ a n d T S ⊭ ¬ ϕ TS \nvDash \phi \ and \ TS \nvDash \neg \phi TS⊭ϕ and TS⊭¬ϕ
CTL的一些常用性质
-
等价性(equivalence):如果两个CTL: ϕ \phi ϕ和 ψ \psi ψ的 S a t ( ϕ ) = S a t ( ψ ) Sat(\phi)=Sat(\psi) Sat(ϕ)=Sat(ψ),则 ϕ \phi ϕ和 ψ \psi ψ等价,即 ϕ ≡ ψ \phi \equiv \psi ϕ≡ψ
ϕ ≡ ψ i f f T S ⊨ ϕ ∧ T S ⊨ ψ \phi \equiv \psi \ iff \ TS \vDash \phi \wedge TS \vDash \psi ϕ≡ψ iff TS⊨ϕ∧TS⊨ψ -
扩展律(Expansion laws)
- ∀ ( ϕ ⋃ ψ ) ≡ ψ ∨ ( ϕ ∧ ∀ ◯ ∀ ( ϕ ⋃ ψ ) ) \forall (\phi \bigcup \psi) \equiv \psi \vee (\phi \wedge \forall \bigcirc \forall (\phi \bigcup \psi)) ∀(ϕ⋃ψ)≡ψ∨(ϕ∧∀◯∀(ϕ⋃ψ))
- ∀ ◊ ϕ ≡ ϕ ∨ ∀ ◯ ∀ ◊ ϕ \forall \Diamond \phi \equiv \phi \vee \forall \bigcirc \forall \Diamond \phi ∀◊ϕ≡ϕ∨∀◯∀◊ϕ
- ∀ □ ϕ ≡ ϕ ∧ ∀ ◯ ∀ □ ϕ \forall \Box \phi \equiv \phi \wedge \forall \bigcirc \forall \Box \phi ∀□ϕ≡ϕ∧∀◯∀□ϕ
- ∃ ( ϕ ⋃ ψ ) ≡ ψ ∨ ( ϕ ∧ ∀ ◯ ∀ ( ϕ ⋃ ψ ) ) \exists (\phi \bigcup \psi) \equiv \psi \vee (\phi \wedge \forall \bigcirc \forall (\phi \bigcup \psi)) ∃(ϕ⋃ψ)≡ψ∨(ϕ∧∀◯∀(ϕ⋃ψ))
- ∃ ◊ ϕ ≡ ϕ ∨ ∃ ◯ ∃ ◊ ϕ \exists \Diamond \phi \equiv \phi \vee \exists \bigcirc \exists \Diamond \phi ∃◊ϕ≡ϕ∨∃◯∃◊ϕ
- ∃ □ ϕ ≡ ϕ ∧ ∃ ◯ ∃ □ ϕ \exists \Box \phi \equiv \phi \wedge \exists \bigcirc \exists \Box \phi ∃□ϕ≡ϕ∧∃◯∃□ϕ
-
分布律(Distributive laws)
- ∀ □ ( ϕ ∧ ψ ) ≡ ∀ □ ϕ ∧ ∀ □ ψ \forall \Box(\phi \wedge \psi) \equiv \forall \Box \phi \wedge \forall \Box \psi ∀□(ϕ∧ψ)≡∀□ϕ∧∀□ψ
- ∃ ◊ ( ϕ ∨ ψ ) ≡ ∃ ◊ ϕ ∨ ∃ ◊ ψ \exists \Diamond (\phi \vee \psi) \equiv \exists \Diamond \phi \vee \exists \Diamond \psi ∃◊(ϕ∨ψ)≡∃◊ϕ∨∃◊ψ
- ∃ □ ( ϕ ∧ ψ ) ≢ ∃ □ ϕ ∧ ∃ □ ψ \exists \Box(\phi \wedge \psi) \not\equiv \exists \Box \phi \wedge \exists \Box \psi ∃□(ϕ∧ψ)≡∃□ϕ∧∃□ψ
- ∀ ◊ ( ϕ ∨ ψ ) ≡ ∀ ◊ ϕ ∨ ∀ ◊ ψ \forall \Diamond (\phi \vee \psi) \equiv \forall \Diamond \phi \vee \forall \Diamond \psi ∀◊(ϕ∨ψ)≡∀◊ϕ∨∀◊ψ