【系统分析与验证学习笔记】8:无限字上ω正则LT性质的验证

Bu¨chiωω非确定Büchi自动机\rightleftharpoons \omega 正则语言 \rightleftharpoons \omega 正则表达式

1 无限字上的自动机

1.1 Büchi自动机

Büchi自动机(Büchi Automata)可以用于描述无限字上的LT性质。老师PPT上还是用了Peterson’s banking system的例子,如下面这个【请求服务的最终都能获得服务】的活性(liveness)性质:
always(reqLeventually @accountL)  always(reqReventually @accountR)always(req_L \Rightarrow eventually \ @account_L) \ \wedge \ always(req_R \Rightarrow eventually \ @account_R)

活性性质是【当某用户想访问账户时,最终一定能访问到】,则其对立面就是【存在当某用户想访问账户时,永远也访问不到的情况】。这里称后者是一种unlive behavior,它能表示成若干无限长的trace的集合,对应了Büchi自动机:
在这里插入图片描述
则要检查模型TSTS是否满足活性性质PliveP_{live},也就是在验证模型的所有trace和活性性质的补表达的ω\omega正则语言是否不交:
Traces(TS)  Lω(Live)=Traces(TS) \ \cap \ \mathcal{L}_{\omega}(\overline{Live})=\varnothing

1.2 ω\omega正则表达式

正则表达式表达的是有限字的语言,ω\omega正则表达式表达的则是无限字语言,字母表Σ\Sigma上的ω\omega正则表达式总能写为如下的一般形式:
G=E1.F1ω+ ... +En.Fnω    for n>0G=E_1.F_1^{\omega} + \ ... \ + E_n.F_n^{\omega} \ \ \ \ for \ n > 0

其中EiE_iFiF_i是正则表达式。

例如,(A+B).Bω(A+B)^*.B^{\omega}(B.A)ω(B^*.A)^{\omega}A.Bω+AωA^*.B^{\omega}+A^{\omega}都是ω\omega正则表达式。

1.3 ω\omega正则表达式的语义

首先,有限字上的语言LΣ\mathcal{L} \subseteq \Sigma^*可以理解为从有限状态机上初始状态到终止状态的各种执行序列所识别的转移边上的字母来构成的语言,则有限字上的语言的无限次自连接:
Lω={w1w2w3...  i0.wiL}\mathcal{L}^{\omega} = \{w_1w_2w_3... \ | \ \forall i \geq 0 . w_i \in \mathcal{L} \}

表达的就是无限次“从初始状态到可接受状态的任意执行”。具体地,1.2中给出的ω\omega正则表达式的一般形式对应的ω\omega正则语言是这样的集合:
Lω(G)=L(E1).L(F1)ω  ...  L(En).L(Fn)ω\mathcal{L}_{\omega}(G)=\mathcal{L}(E_1).\mathcal{L}(F_1)^{\omega} \ \cup \ ... \ \cup \ \mathcal{L}(E_n).\mathcal{L}(F_n)^{\omega}

ω\omega正则表达式等价,当且仅当它们所表达的语言是等价的,即:
G1G2   iff   Lω(G1)Lω(G2)G_1 \equiv G_2 \ \ \ iff \ \ \ \mathcal{L}_{\omega}(G_1) \equiv \mathcal{L}_{\omega}(G_2)

1.4 ω\omega正则语言

一语言L\mathcal{L}是正则的,当且仅当存在一ω\omega正则表达式G能表示该语言,即L=Lω(G)\mathcal{L}=\mathcal{L}_{\omega}(G)。例如字母表Σ={A,B}\Sigma=\{ A,B \}上的ω\omega正则语言,可导出为正则表达式:

  • A无限经常次出现:(B.A)ω(B^*.A)^{\omega}
  • A有限次出现:(A+B).Bω(A+B)^*.B^{\omega}
  • 空语言:ω\varnothing^{\omega}

ω\omega正则语言对并、交、补都是封闭的,并且是无空的(不存在ϵ\epsilon)。

2 ω\omega正则性质

2.1 简述

称原子命题AP上的一个LT性质P是ω\omega正则的,仅当P是在字母表2AP2^{AP}上的ω\omega正则语言。换句话说,原子命题AP上的一个LT性质P是ω\omega正则的,仅当存在一个能接受此性质P的NBA(非确定Büchi自动机)。

注意,ω\omega正则语言和NBA(非确定Büchi自动机)的表达能力相同,但是NBA和DBA的表达能力不同。

2.2 例子

  • 任何不变性PinvP_{inv}都是ω\omega正则性质,因为总可以表示成形如Φω\Phi^{\omega}ω\omega正则语言。

  • 任何正则的安全性PsafeP_{safe}都是ω\omega正则性质,因为其补P=BadPref(P).(2AP)ω\overline{P}=BadPref(P).(2^{AP})^{\omega}ω\omega正则的,而且ω\omega正则语言对补封闭,所以求补之前的PsafeP_{safe}也是ω\omega正则的。

  • 任何活性PliveP_{live}都是ω\omega正则性质,可以从这章最开始的例子直观理解。

3 非确定性Büchi自动机(NBA)

3.1 简述

从前面的分析可以知道,有限自动机(FA)只能识别有限字,不能识别无限字,而NBA可以识别无限字。但是NBA中的状态也和FA中的状态一样,是有限个的,因此NBA识别出的无限字中一定有一些状态会无限经常次出现

NBA类似于NFA,但是其可接受状态的衡量标准是不同的,对NBA而言,那些总是无限经常次出现的状态称为可接受状态

3.2 NBA可接受的语言

A=(Q,Σ,δ,Q0,F)A=(Q,\Sigma,\delta,Q_0,F)表示NBA。其中σ:Q×Σ2Q\sigma:Q \times \Sigma \to 2^Q是从QQ中状态经识别Σ\Sigma中字母,到达2Q2^Q中状态集的转移。也就是说,qApq \xrightarrow[]{A} p当且仅当pσ(q,A)p \in \sigma(q,A)

σ=A1A2...Σω\sigma=A_1A_2...\in \Sigma^{\omega}表示无限字。

无限字σ\sigma在NBA AA上的一个可接受运行是一个无限执行序列q0q1q2...q_0q_1q_2...,其中q0Q0q_0 \in Q_0是初始状态,qiAi+1qi+1q_i \xrightarrow[]{A_{i+1}}q_{i+1}取自识别字母后的状态转移,qiFq_i \in F是可接受状态仅当qiq_i无限经常次出现。

特别注意区分概念,无限字是由动作组成的,而可接受运行是由状态组成的。

称无限字σ\sigma能被NBA AA接受,仅当存在σ\sigmaAA上的可接受运行。

则可定义NBA AA可接受语言为其所有可接受运行组成的集合。

两NBA等价,当且仅当它们所表达的语言是等价的,即:
A1A2   iff   Lω(A1)Lω(A2)A_1 \equiv A_2 \ \ \ iff \ \ \ \mathcal{L}_{\omega}(A_1) \equiv \mathcal{L}_{\omega}(A_2)

3.3 NBA和NFA对比

下图中两个自动机,视为NFA时,A1A_1A+A^+A2A_2A+A^+;视为NBA时,A1A_1AωA^{\omega}A2A_2\varnothing。即在有限运行上等价,但在无限运行上不等价。
在这里插入图片描述
下图中两个自动机,视为NFA时,A1A_1(AA)(AA)^*A2A_2A(AA)A(AA)^*;视为NBA时,A1A_1AωA^{\omega}A2A_2AωA^{\omega}。即在有限运行上不等价,但在无限运行上等价。

在这里插入图片描述

3.4 ω\omega正则语言与NBA

任一被NBA接受的语言,是一个ω\omega正则语言;对任一ω\omega正则语言,可构造一个能识别它的NBA,所以两者是等价的。

以下三个操作得到的是NBA:

  • 对一ω\omega正则语言L\mathcal{L}(或说一个NFA AA)只要ϵL\epsilon \notin \mathcal{L},那么存在能识别Lω\mathcal{L}^{\omega}的NBA——AωA^{\omega}
  • 对两NBA A1A_1A2A_2存在能识别Lω(A1)Lω(A2)\mathcal{L}_{\omega}(A_1) \cup \mathcal{L}_{\omega}(A_2)的NBA——A1+A2A_1 + A_2
  • 对一ω\omega正则语言L\mathcal{L}(或说一个NFA AA)以及一个NBA AA'存在能识别L.Lω(A)\mathcal{L}.\mathcal{L}_{\omega}(A')的NBA——A.(A)ωA.(A')^{\omega}

接下来3.53.63.7将对它们逐一叙述。

3.5 NFA上的ω\omega操作

NFA上的ω\omega操作用于将NFA变成“能接受无数次其自己所能接受的有限字而形成的无限字”的NBA。记A=(Q,Σ,δ,Q0,F)A=(Q,\Sigma,\delta,Q_0,F)是一个ϵL(A)\epsilon \notin \mathcal{L}(A)的NFA,也就是说初态和终态不交即Q0F=Q_0 \cap F = \varnothing

第一步,初态改造:对所有的初态q0Q0q_0 \in Q_0,如果有进入q0q_0的边,那么就要引入一个新状态qnewq_{new},使得qnewq_newq0q_0具备相同的识别能力,即经过q0q_0所能识别的字母,能到达相同的状态。

改造后得到的Q0Q_0'将作为最终的NBA的初始状态。

第二步,终态改造:对所有能到达NFA的终态FF中的状态的那些转移qAqFq \xrightarrow[]{A} q' \in F,添加新的转移qAq0Q0q \xrightarrow[]{A} q_0 \in Q_0使其能转移到NFA的初态Q0Q_0的每个状态上去。

改造后,让Q0Q_0就作为最终的NBA的可接受状态。在这样的尾首相接后,只有q0Q0q_0 \in Q_0是无限经常次出现的。

得到的NBA即是A=(Q,Σ,δ,Q0,F)A'=(Q,\Sigma,\delta',Q_0',F'),如下图是将ABA^*Bω\omega操作变成(AB)ω(A^*B)^{\omega}的两步过程:
在这里插入图片描述

3.6 两NBA的++操作

设定两NBA A1A_1A2A_2的字母表都是Σ\Sigma(如果不是,就取并得到Σ\Sigma),则:
A1+A2=(Q1Q2,Σ,δ,Q0,1Q0,2,F1F2)A_1 + A_2 = (Q_1 \cup Q_2, \Sigma, \delta, Q_{0,1} \cup Q_{0,2}, F_1 \cup F_2)

要求Q1Q2=Q_1 \cup Q_2 = \varnothing以防止状态命名出现冲突(如果不是,就把冲突状态改名),则转移关系即取自“是谁的状态,就按谁的转移”,即δ(q,A)=δi(q,A)\delta(q,A)=\delta_i(q,A)

从而Lω(A1+A2)=Lω(A1)  Lω(A2)\mathcal{L}_{\omega}(A_1 + A_2) = \mathcal{L}_{\omega}(A_1) \ \cup \ \mathcal{L}_{\omega}(A_2)

3.7 NFA和NBA的连接操作

对NFA A=(Q,Σ,δ,Q0,F)A=(Q,\Sigma,\delta,Q_0,F)和NBA A=(Q,Σ,δ,Q0,F)A'=(Q',\Sigma,\delta',Q_0',F')其连接为:
A=(QQ,Σ,δ,Q0,F)A''=(Q \cup Q',\Sigma,\delta'',Q_0'',F'')

若NFA的终态都不是初态,那么连接后NBA的初态就是NFA的初态。
否则,NFA可接受的语言可以包含空,当取空时,要从NBA的初态Q0Q_0'出发作为新的NBA的初态。
即:
Q0={Q0            if Q0F=Q0            otherwise Q_0''= \left\{ \begin{aligned} & Q_0 \ \ \ \ \ \ \ \ \ \ \ \ if \ Q_0 \cap F = \varnothing \\ & Q_0 \ \ \ \ \ \ \ \ \ \ \ \ otherwise \end{aligned} \right.

可接受状态还是NBA的可接受状态。
即:
F=FF'' = F

如果是NFA中原有的转移关系,且转移后不会到达NFA的终止状态,则转移后的状态还是那些。
如果是NFA中原有的转移关系,但转移后会到达NFA的终止状态,则转移后的状态还要包括NBA的初始状态,因为NBA连接在NFA后面。
如果是NBA中原有的转移关系,因为接下来永远都在这个NBA中了,故转移后的状态还是那些。
即:
δ(q,A)={δ(q,A)            if qQ and δ(q,A)F=δ(q,A)Q0   if qQ and δ(q,A)Fδ(q,A)            if qQ \delta''(q,A)= \left\{ \begin{aligned} & \delta(q,A) \ \ \ \ \ \ \ \ \ \ \ \ if \ q \in Q \ and \ \delta(q,A) \cap F = \varnothing \\ & \delta(q,A) \cup Q_0' \ \ \ if \ q \in Q \ and \ \delta(q,A) \cap F \neq \varnothing \\ & \delta(q,A) \ \ \ \ \ \ \ \ \ \ \ \ if \ q \in Q' \end{aligned} \right.

例如,下图是一个NFA和NBA的连接,图中红线表示了要把NFA的终态和NBA初态无条件连起来,但是由于转移上必须有字母,所以要将NFA终态的所有前驱添加转移到NBA的所有初态的转移,其字母和转移到NFA终态时所用的字母相同。
在这里插入图片描述

3.8 检查NBA所描述的语言是否为空

在这之前,先定义扩展的转移关系。之前使用的转移关系δ(q,A)\delta(q,A)都是状态qq经一个字母AA所到达的状态集合,现在扩展到经过一个有限字所到达的状态集合。这很好理解,只给出递归定义:
δ(q,ϵ)={q}δ(q,A)=δ(q,A)δ(q,A1A2...An)=pδ(q,A1)δ(p,A2...An) \begin{aligned} \delta^*(q,\epsilon) & = \{q\} \\ \delta^*(q,A) & = \delta(q,A) \\ \delta^*(q,A_1A_2...A_n) & = \bigcup_{p\in \delta(q,A_1)} \delta^*(p,A_2...A_n) \end{aligned}

一个NBA可识别的语言L(A)\mathcal{L}(A)不为空,当且仅当至少存在一个可接受状态,其位置处在从初始状态出发所能到达的环上,即:
q0Q0.qF.wΣ.vΣ+. qδ(q0,w)qδ(q,v) \exists q_0 \in Q_0. \exists q \in F. \exists w \in \Sigma^*. \exists v \in \Sigma^+. \ q \in \delta^*(q_0,w) \wedge q \in \delta^*(q,v)

画成图直观表示就是:
在这里插入图片描述

4 泛化非确定性Büchi自动机(GNBA)

4.1 简述

各种各样的NBA表达能力是一样的,使用GNBA是因为它和temporal logic的关联性更好,GNBA和前面学的NBA很像,仅在可接受状态上有区别。NBA的可接受状态是一个状态集合FF,对无限的状态序列,若要它是一个可接受的运行,只要求序列中存在qFq\in F无限经常次出现即可。

GNBA的可接受状态是一系列状态集合的集合,即F={F1,...,Fk}2QF=\{ F_1,...,F_k \} \subseteq 2^Q限定k0k \geq 0,要求每个可接受的运行中,都总是存在qFiq \in F_i(对所有的ii)无限经常次出现。

显然,当k=0时所有运行都是可接受的;当k=1时GNBA就退化为NBA了。

这些可接受运行q0,q1,q2,...q_0,q_1,q_2,...上识别的字σ=A0,A1,...\sigma=A_0,A_1,...,就构成了GNBA的语言。

4.2 GNBA的例子

如下图所示的自动机中,视其为GNBA,且可接受状态集F={{q1},{q2}}F=\{ \{q_1\}, \{q_2\} \},则可以表达每个进程都能无限经常次访问其临界区。
在这里插入图片描述

4.3 从GNBA到NBA的转换

对任意GNBA GG总能找到等效的NBA AA,使得:
Lω(G)=Lω(A)   and   A=O(GF)\mathcal{L}_{\omega}(G)=\mathcal{L}_{\omega}(A) \ \ \ and \ \ \ |A|=O(|G| \cdot |F|)

其中FF表示GG中的可接受状态集的集合,即F={F1,...,Fk}F=\{ F_1,...,F_k \},所以F=k|F|=k

注意这里不能理解成F=1ikFi|F|=|\bigcup_{1\leq i \leq k}F_i|

可以直观看到,得到的NBA的状态数目是GNBA的k倍,这正是后面为每个状态都用1ik1 \leq i \leq k标注的结果。

转换到NBA的过程是一个搜索推进的过程,设G=(Q,Σ,δ,Q0,F)G=(Q,\Sigma,\delta,Q_0,F)是GNBA,A=(Q,Σ,δ,Q0,F)A=(Q',\Sigma',\delta',Q_0',F')是转换出的NBA,则:

  • Q=Q×{1,...,k}Q'=Q \times \{ 1,...,k \},即在记录ii标记下要找FiF_i1ik1 \leq i \leq k)里的终止状态以跳转到下个终止状态集Fi+1F_{i+1}
  • Q0=Q0×{1}={q0,1q0Q0}Q_0' = Q_0 \times \{1\}=\{\langle q_0,1 \rangle | q_0 \in Q_0 \},即生成的NBA的初始状态是GNBA的初始状态被标记上1的那些,表示从搜索FF中的第一项F1F_1开始。
  • F=F1×{1}={qF,1qFF1}F'=F_1 \times \{1\}=\{\langle q_F,1 \rangle | q_F \in F_1\},即搜索回到i=1i=1且在F1F_1中时可接受。下一步又会跳转到i=2i=2去搜索F2F_2继续下一轮推进。

直观表达这个搜索推进的过程,如下:
在这里插入图片描述

4.4 转换的例子

例如4.2中的GNBA,转换为NBA如下:
在这里插入图片描述
核心就是只要遇到状态qFjq \in F_j且当前第二标记i=ji=j时,接下来的转移就要让第二标记变到i=(i+1)%ki=(i+1)\%k上去。

5 验证ω\omega正则性质

5.1 方法论

关于ω\omega正则性质的介绍见2,不再重复。

类似于笔记7中验证正则性质的方法,只是这里是在无限字上使用GNBA作为中介工具。要验证TSPTS \models P,即是验证Traces(TS)PTraces(TS) \subseteq P,所以应和“性质PP在全体无限字上的补集”不交,即:
Traces(TS)(2AP)ωP=Traces(TS) \cap (2^{AP})^{\omega} \setminus P = \varnothing

其中(2AP)ωP(2^{AP})^{\omega} \setminus P简记为P\overline{P},记Lω(A)\mathcal{L}_{\omega}(A)P\overline{P}对应的ω\omega正则语言,其中AA是能识别P\overline{P}的一个NBA,从而:
Traces(TS)Lω(A)=Traces(TS) \cap \mathcal{L}_{\omega}(A) = \varnothing

这就是在考察同步积:
TSA"eventually forever"¬FTS \otimes A \models "eventually \ forever" \neg F

其中【"eventually forever"¬F"eventually \ forever" \neg F】表示【最终(从某状态开始,其后的所有状态)会持续满足¬F\neg F】,这是和【F中有元素无限经常次出现】对立的,也就是在判定【同步积得到的NBA上没有可接受的运行】。

5.2 持续性质(Persistence property)

5.1中提到的"eventually forever"这种陈述,表达的就是一种持续性质,即无限字中存在某个让性质启动的位置ii,从那之后的所有字母都满足某一命题Φ\Phi

持续性质在这门课里最早出现在学习公平性时,见笔记62.10节给出的弱公平性的形式化描述。

Ppers={A0A1A2...(2AP)ω  i0. ji. AjΦ}P_{pers}=\{A_0A_1A_2... \in (2^{AP})^{\omega} \ | \ \exists i \geq 0. \ \forall j \geq i. \ A_j \models \Phi \}

其中Φ\Phi称为该持续性质PpersP_{pers}的持续性条件。

5.3 构造同步积

构造同步积的过程和之前学的一样,见笔记72.4节,只要将其中的NFA改成这里的NBA就可以了。

5.4 验证ω\omega正则性质

TSTS是原子命题集APAP上的TS,PPAPAP上的ω\omega正则性质,AA是一个non-blocking的NBA满足Lω(A)=P\mathcal{L}_{\omega}(A)=\overline{P}

这里non-blocking指的是对NBA的每个状态q,对每个输入符号A都有向后的转移,即δ(q,A)\delta(q,A)对所有的qQq\in QAΣ=2APA \in \Sigma=2^{AP}都不为\varnothing

则以下几个命题是等价的:

  • TSPTS \models P
  • Traces(TS)Lω(A)=Traces(TS) \cap \mathcal{L}_{\omega}(A)=\varnothing
  • TSAPpers(A)TS \otimes A \models P_{pers}(A)

其中Ppers(A)P_{pers}(A)即是5.1中的"eventually forever"¬F"eventually \ forever" \neg F,如此验证ω\omega正则性质就变成了对持续性(persistence)的验证

5.5 对persistence的验证

验证TSPpersTS \models P_{pers},即验证在某个位置后Φ\Phi条件一直满足,其对立面TSPpersTS \nvDash P_{pers}只要验证是否存在一个可达状态sΦs \nvDash \Phi无限经常次出现,即去看看这些不满足Φ\Phi的状态是否在环路中就可以了。因为若TS能无限经常次访问不满足Φ\Phi的状态,那么就有TSPpersTS \nvDash P_{pers}

因此,TSPpersTS \nvDash P_{pers}当且仅当sReach(TS). sΦ\exists s \in Reach(TS) . \ s\nvDash \PhissG(TS)G(TS)中的环上。


特别注意,上面只是对TS满足persistence的分析。具体到本章所学,实际是在同步积上,ω\omega正则性质的补被写成一个NBA AA,同步积TSATS \otimes A要满足的persistence其实是:
eventually forever ¬Feventually \ forever \ \neg F

所以只要判断的是同步积中状态Label里带有可接受状态FF中元素的状态是不是都不在从初态开始的可达环路中即可。


例如,要验证的性质P是【greengreen无限经常次出现】,则取补后形成的NBA中只有q1q_1是可达状态(下图右上)。

下面这个例子中性质满足,因为同步积得到的TS中两个带q1q_1标记的状态不在初态可达环里:
在这里插入图片描述
但在下面这个例子中性质不满足,因为s2,q1s0,q1\langle s_2, q_1 \rangle \rightleftharpoons \langle s_0, q_1 \rangle这个包含了可接受状态q1q_1的环是从初态可达的:

在这里插入图片描述

5.6 环路检测

可以求图的强连通子图(SCC),或者用书上给出的Nested DFS的方式,后者在验证不通过时更容易求反例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章