计算树逻辑(Computation Tree Logic,简写CTL)
- 个人理解:说到树,我联想到最多的就是数据结构里面的树,一个结点对应着多个分支结点,而这个计算树逻辑,和数据结构里面的树有些类似。我们可以把当前时间看作是根节点,下面的不同分支,都是未来某一时刻的可能性,比如我要去学校,我会经过出门这个根节点,但我可能会骑自行车或乘坐大巴这两种方式去学校,也就是两个不同的子节点,根据选择的不同方式,引发更多的子节点。
- 定义:计算树逻辑是一种分支时间逻辑,即它的时间模型是一个树状结构,其中未来是不确定的。未来有不同的路径,其中的任何一个都可能是现实的“实际”路径。
CTL语法
ϕ : : = ⊥ ∣ ⊤ ∣ p ∣ ( ¬ ϕ ) ∣ ( ϕ ∧ ϕ ) ∣ ( ϕ ∨ ϕ ) ∣ ( ϕ → ϕ ) ∣ ( A X ϕ ) ∣ ( E X ϕ ) ∣ ( A F ϕ ) ∣ ( E F ϕ ) ∣ ( A G ϕ ) ∣ ( E G ϕ ) ∣ A [ ( ϕ U ϕ ) ] ∣ ∣ E [ ( ϕ U ϕ ) ] \phi ::= \perp | \top | p| (\neg \phi) | (\phi \wedge \phi)| (\phi \vee\phi)| (\phi \to \phi) | (AX \phi)| (EX \phi)| (AF \phi)| (EF \phi)| (AG \phi)| (EG \phi)| A[(\phi U \phi)]|| E[(\phi U \phi)] ϕ::=⊥∣⊤∣p∣(¬ϕ)∣(ϕ∧ϕ)∣(ϕ∨ϕ)∣(ϕ→ϕ)∣(AXϕ)∣(EXϕ)∣(AFϕ)∣(EFϕ)∣(AGϕ)∣(EGϕ)∣A[(ϕUϕ)]∣∣E[(ϕUϕ)]
- A A A和 E E E表示路径量词, A A A表示所有的路, E E E表示存在一条路
- 在CTL公式中,时态连接词前面必须要跟路径量词 A A A或 E E E
- 解释下列CTL公式:
- E F q EFq EFq:路径上存在一个满足 q q q的可达状态
- A G ( p → E [ p U q ] ) AG(p \to E[pUq]) AG(p→E[pUq]):对于所有满足 p p p的状态出发,都有“一直保持 p p p直到满足 q q q”的状态出现(后一句也可以说是:都存在“一直保持 p p p直到满足 q q q”的状态)
- A G ( p → E G q ) AG(p \to EGq) AG(p→EGq):只要满足 p p p的状态出现,就有系统能永远保持 q q q(也可以理解为:对于所有满足 p p p的状态也都存在满足 q q q的状态)
- E F A G q EFAGq EFAGq:有一可达的状态使得从此状态出发的所有可达状态都满足 q q q
- 进程总可以请求进入它的界区: A G ( r → E X t ) AG(r \to EXt) AG(r→EXt)(也可以理解为:对于所有满足 r r r的状态都存在下一个状态满足 t t t)
- 对于任何状态,若一个请求出现则这个请求最终会被接受: A G ( 请 求 → A F 接 受 ) AG(请求 \to AF 接受) AG(请求→AF接受)
- 一部在 2 楼且处于上升的电梯,当有乘客在想到 5 楼时,电梯不会改变上升方向直到 5 楼: A G ( 2 楼 ∧ 上 升 ∧ 按 下 5 楼 按 钮 → A [ 上 升 U 5 楼 ] ) AG(2 楼 \wedge 上升 \wedge 按下 5 楼按钮 \to A[上升U5 楼]) AG(2楼∧上升∧按下5楼按钮→A[上升U5楼])
- 从任何状态出发总能到达重启状态: A G ( E F 重 启 ) AG(EF重启) AG(EF重启)
CTL语义
-
给定模型 M = ( S , → , L ) , s ∈ S \mathcal{M} = (S, \to, L), s \in S M=(S,→,L),s∈S, ϕ \phi ϕ是 CTL 公式。以 ϕ \phi ϕ的结构归纳定义 M , s ⊨ ϕ \mathcal{M},s \vDash \phi M,s⊨ϕ如下:
-
M , s ⊨ ⊤ \mathcal{M},s \vDash \top M,s⊨⊤
-
M , s ⊭ ⊥ \mathcal{M},s \nvDash \perp M,s⊭⊥
-
M , s ⊨ p \mathcal{M},s \vDash p M,s⊨p当且仅当 p ∈ L ( s ) p \in L(s) p∈L(s)
-
M , s ⊨ ¬ ϕ \mathcal{M},s \vDash \neg \phi M,s⊨¬ϕ当且仅当 M , s ⊭ ϕ \mathcal{M},s \nvDash \phi M,s⊭ϕ
-
M , s ⊨ ϕ ∧ ψ \mathcal{M},s \vDash \phi \wedge \psi M,s⊨ϕ∧ψ当且仅当 M , s ⊨ ϕ \mathcal{M},s \vDash \phi M,s⊨ϕ且 M , s ⊨ ψ \mathcal{M},s \vDash \psi M,s⊨ψ
-
M , s ⊨ ϕ ∨ ψ \mathcal{M},s \vDash \phi \vee \psi M,s⊨ϕ∨ψ当且仅当 M , s ⊨ ϕ \mathcal{M},s \vDash \phi M,s⊨ϕ或 M , s ⊨ ψ \mathcal{M},s \vDash \psi M,s⊨ψ
-
M , s ⊨ ϕ → ψ \mathcal{M},s \vDash \phi \to \psi M,s⊨ϕ→ψ当且仅当 M , s ⊨ ϕ \mathcal{M},s \vDash \phi M,s⊨ϕ则 M , s ⊨ ψ \mathcal{M},s \vDash \psi M,s⊨ψ
-
M , s ⊨ A X ϕ \mathcal{M},s \vDash AX \phi M,s⊨AXϕ当且仅当对于所有的 s → s 1 s \to s_1 s→s1,有 M , s 1 ⊨ ϕ \mathcal{M},s_1 \vDash \phi M,s1⊨ϕ。
-
M
,
s
0
⊨
A
X
ϕ
\mathcal{M},s_0 \vDash AX \phi
M,s0⊨AXϕ可以理解为:
s
0
s_0
s0的所有下一个状态点都满足
ϕ
\phi
ϕ
-
M
,
s
0
⊨
A
X
ϕ
\mathcal{M},s_0 \vDash AX \phi
M,s0⊨AXϕ可以理解为:
s
0
s_0
s0的所有下一个状态点都满足
ϕ
\phi
ϕ
-
M , s ⊨ E X ϕ \mathcal{M},s \vDash EX \phi M,s⊨EXϕ当且仅当对于某个使得 s → s 1 s \to s_1 s→s1的 s 1 s_1 s1,有 M , s 1 ⊨ ϕ \mathcal{M},s_1 \vDash \phi M,s1⊨ϕ。
-
M
,
s
0
⊨
E
X
ϕ
\mathcal{M},s_0 \vDash EX \phi
M,s0⊨EXϕ可以理解为:存在
s
0
s_0
s0的下一个状态满足
ϕ
\phi
ϕ
-
M
,
s
0
⊨
E
X
ϕ
\mathcal{M},s_0 \vDash EX \phi
M,s0⊨EXϕ可以理解为:存在
s
0
s_0
s0的下一个状态满足
ϕ
\phi
ϕ
-
M , s ⊨ A G ϕ \mathcal{M},s \vDash AG \phi M,s⊨AGϕ当且仅当对于从 s s s出发的所有路径 s 0 → s 1 → s 2 → ⋯ s_0 \to s_1 \to s_2 \to \cdots s0→s1→s2→⋯(其中 s 0 s_0 s0就是 s s s),对于这些路径上的所有 s i s_i si,都有 M , s i ⊨ ϕ \mathcal{M},s_i \vDash \phi M,si⊨ϕ
-
M
,
s
0
⊨
A
G
ϕ
\mathcal{M},s_0 \vDash AG \phi
M,s0⊨AGϕ可以理解为:所有从
s
0
s_0
s0出发的路径上每一个状态都满足
ϕ
\phi
ϕ
-
M
,
s
0
⊨
A
G
ϕ
\mathcal{M},s_0 \vDash AG \phi
M,s0⊨AGϕ可以理解为:所有从
s
0
s_0
s0出发的路径上每一个状态都满足
ϕ
\phi
ϕ
-
M , s ⊨ E G ϕ \mathcal{M},s \vDash EG \phi M,s⊨EGϕ当且仅当存在一条从 s s s出发的路径 s 0 → s 1 → s 2 → ⋯ s_0 \to s_1 \to s_2 \to \cdots s0→s1→s2→⋯(其中 s 0 s_0 s0就是 s s s),对于这些路径上的所有 s i s_i si,都有 M , s i ⊨ ϕ \mathcal{M},s_i \vDash \phi M,si⊨ϕ
-
M
,
s
0
⊨
E
G
ϕ
\mathcal{M},s_0 \vDash EG \phi
M,s0⊨EGϕ可以理解为:存在一条从
s
0
s_0
s0出发的路径上所有状态满足
ϕ
\phi
ϕ
-
M
,
s
0
⊨
E
G
ϕ
\mathcal{M},s_0 \vDash EG \phi
M,s0⊨EGϕ可以理解为:存在一条从
s
0
s_0
s0出发的路径上所有状态满足
ϕ
\phi
ϕ
-
M , s ⊨ A F ϕ \mathcal{M},s \vDash AF \phi M,s⊨AFϕ当且仅当对于从 s s s出发的所有路径 s 0 → s 1 → s 2 → ⋯ s_0 \to s_1 \to s_2 \to \cdots s0→s1→s2→⋯(其中 s 0 s_0 s0就是 s s s),对于每条路径,都存在 s i s_i si,有 M , s i ⊨ ϕ \mathcal{M},s_i \vDash \phi M,si⊨ϕ
-
M
,
s
0
⊨
A
F
ϕ
\mathcal{M},s_0 \vDash AF \phi
M,s0⊨AFϕ可以理解为:从
s
0
s_0
s0出发的任意一条路径,路径上一定会经过一个满足
ϕ
\phi
ϕ的状态
-
M
,
s
0
⊨
A
F
ϕ
\mathcal{M},s_0 \vDash AF \phi
M,s0⊨AFϕ可以理解为:从
s
0
s_0
s0出发的任意一条路径,路径上一定会经过一个满足
ϕ
\phi
ϕ的状态
-
M , s ⊨ E F ϕ \mathcal{M},s \vDash EF \phi M,s⊨EFϕ当且仅当存在一条从 s s s出发的路径 s 0 → s 1 → s 2 → ⋯ s_0 \to s_1 \to s_2 \to \cdots s0→s1→s2→⋯(其中 s 0 s_0 s0就是 s s s),该路径上存在 s i s_i si,有 M , s i ⊨ ϕ \mathcal{M},s_i \vDash \phi M,si⊨ϕ
-
M
,
s
0
⊨
E
F
ϕ
\mathcal{M},s_0 \vDash EF \phi
M,s0⊨EFϕ可以理解为:存在从
s
0
s_0
s0出发的路径,一定会存在一个满足
ϕ
\phi
ϕ的状态
-
M
,
s
0
⊨
E
F
ϕ
\mathcal{M},s_0 \vDash EF \phi
M,s0⊨EFϕ可以理解为:存在从
s
0
s_0
s0出发的路径,一定会存在一个满足
ϕ
\phi
ϕ的状态
-
M , s ⊨ A [ ϕ U ψ ] \mathcal{M},s \vDash A[\phi U \psi] M,s⊨A[ϕUψ]当且仅当对于从 s s s出发的所有路 s 0 → s 1 → ⋯ s_0 \to s_1 \to \cdots s0→s1→⋯(其中 s 0 s_0 s0就是 s s s),存在 i ≥ 0 i \geq 0 i≥0使得 M , s i ⊨ ψ \mathcal{M},s_i \vDash \psi M,si⊨ψ且对于所有的 0 ≤ j < i 0 \leq j < i 0≤j<i都有 M , s j ⊨ ϕ \mathcal{M},s_j \vDash \phi M,sj⊨ϕ
-
M , s ⊨ E [ ϕ U ψ ] \mathcal{M},s \vDash E[\phi U \psi] M,s⊨E[ϕUψ]当且仅当存在从 s s s出发的路 s 0 → s 1 → ⋯ s_0 \to s_1 \to \cdots s0→s1→⋯(其中 s 0 s_0 s0就是 s s s),存在 i ≥ 0 i \geq 0 i≥0使得 M , s i ⊨ ψ \mathcal{M},s_i \vDash \psi M,si⊨ψ且对于所有的 0 ≤ j < i 0 \leq j < i 0≤j<i都有 M , s j ⊨ ϕ \mathcal{M},s_j \vDash \phi M,sj⊨ϕ
-
-
范例:
对于上面的Kripke结构,有如下结论:- M , s 0 ⊨ E X ( q ∧ r ) \mathcal{M},s_0 \vDash EX(q \wedge r) M,s0⊨EX(q∧r):在模型 M \mathcal{M} M中,存在一个状态 s i s_i si,使得 s i → s 0 s_i \to s_0 si→s0且 s i ⊨ ( q ∧ r ) s_i \vDash (q \wedge r) si⊨(q∧r)(我们可以看出存在的这个状态就是 s 1 s_1 s1)
- M , s 0 ⊨ A [ p U r ] \mathcal{M},s_0 \vDash A[p U r] M,s0⊨A[pUr]:在模型 M \mathcal{M} M中,对于从 s 0 s_0 s0出发的所有路径 s 0 → s 1 → s 0 → s 2 ⋯ s_0 \to s_1 \to s_0 \to s_2 \cdots s0→s1→s0→s2⋯或者 s 0 → s 2 → s 2 → s 2 ⋯ s_0 \to s_2 \to s_2 \to s_2 \cdots s0→s2→s2→s2⋯等路径,都存在从 s 0 s_0 s0开始的路径上的所有状态一直满足 p p p,直到遇到满足 r r r的状态
- M , s 0 ⊨ ¬ E F ( p ∧ r ) \mathcal{M},s_0 \vDash \neg EF(p \wedge r) M,s0⊨¬EF(p∧r):在模型 M \mathcal{M} M中,对于从 s 0 s_0 s0出发的所有路径,都不可能会经过同时满足状态 p p p和 r r r的结点
- M , s 0 ⊨ E G r \mathcal{M},s_0 \vDash EGr M,s0⊨EGr:在模型 M \mathcal{M} M中,对于从 s 0 s_0 s0出发的所有路径,一定存在从某一个结点开始,以后的所有结点全部满足状态 r r r(只要到达 s 2 s_2 s2之后,所有的路径均满足状态 r r r)
-
模型满足性:设 M = { S , → , L } \mathcal{M} = \{S, \to, L\} M={S,→,L}是模型, ϕ \phi ϕ是CTL公式。若对于任一 s ∈ S s \in S s∈S都有 M , s ⊨ ϕ \mathcal{M}, s \vDash ϕ M,s⊨ϕ,则称模型 M \mathcal{M} M满足CTL公式 ϕ \phi ϕ, 记作 M ⊨ ϕ \mathcal{M} \vDash \phi M⊨ϕ
-
语义等价:CTL公式 ϕ , ψ \phi,\psi ϕ,ψ称为语义等价,记作 ϕ ≡ ψ \phi \equiv \psi ϕ≡ψ,若对于任何模型 M \mathcal{M} M,都有 M ⊨ ϕ \mathcal{M} \vDash \phi M⊨ϕ 当且仅当 M ⊨ ψ \mathcal{M} \vDash \psi M⊨ψ
-
CTL扩展公式
- A F ϕ ≡ ¬ E G ¬ ϕ AF \phi \equiv \neg EG \neg \phi AFϕ≡¬EG¬ϕ
- E F ϕ ≡ ¬ A G ¬ ϕ EF \phi \equiv \neg AG \neg \phi EFϕ≡¬AG¬ϕ
- A X ϕ ≡ ¬ E X ¬ ϕ AX \phi \equiv \neg EX \neg \phi AXϕ≡¬EX¬ϕ
- A F ϕ ≡ A [ ⊤ U ϕ ] AF \phi \equiv A[\top U \phi] AFϕ≡A[⊤Uϕ]
- E F ϕ ≡ E [ ⊤ U ϕ ] EF \phi \equiv E[\top U \phi] EFϕ≡E[⊤Uϕ]
-
CTL 连接词充分性:CTL 时态连接词集是充分的当且仅当它包含 E U EU EU以及 { A X , E X } \{AX, EX\} {AX,EX}中一个元素以及 { E G , A F , A U } \{EG, AF, AU\} {EG,AF,AU}中一个元素
-
CTL语义等价公式(可用于 CTL 模型检测算法):
- A G ϕ ≡ ϕ ∧ A X A G ϕ AG \phi \equiv \phi \wedge AXAG \phi AGϕ≡ϕ∧AXAGϕ
- E G ϕ ≡ ϕ ∧ E X E G ϕ EG \phi \equiv \phi \wedge EXEG \phi EGϕ≡ϕ∧EXEGϕ
- A F ϕ ≡ ϕ ∨ A X A F ϕ AF \phi \equiv \phi \vee AXAF \phi AFϕ≡ϕ∨AXAFϕ
- E F ϕ ≡ ϕ ∨ E X E F ϕ EF \phi \equiv \phi \vee EXEF \phi EFϕ≡ϕ∨EXEFϕ
- A [ ϕ U ψ ] ≡ ψ ∨ ( ϕ ∧ A X A [ ϕ U ψ ] ) A[\phi U \psi ] \equiv \psi \vee (\phi \wedge AXA[\phi U \psi]) A[ϕUψ]≡ψ∨(ϕ∧AXA[ϕUψ])
- E [ ϕ U ψ ] ≡ ψ ∨ ( ϕ ∧ E X E [ ϕ U ψ ] ) E[\phi U \psi ] \equiv \psi \vee (\phi \wedge EXE[\phi U \psi]) E[ϕUψ]≡ψ∨(ϕ∧EXE[ϕUψ])