非确定Bu¨chi自动机⇌ω正则语言⇌ω正则表达式
1 无限字上的自动机
1.1 Büchi自动机
Büchi自动机(Büchi Automata)可以用于描述无限字上的LT性质。老师PPT上还是用了Peterson’s banking system的例子,如下面这个【请求服务的最终都能获得服务】的活性(liveness)性质:
always(reqL⇒eventually @accountL) ∧ always(reqR⇒eventually @accountR)
活性性质是【当某用户想访问账户时,最终一定能访问到】,则其对立面就是【存在当某用户想访问账户时,永远也访问不到的情况】。这里称后者是一种unlive behavior,它能表示成若干无限长的trace的集合,对应了Büchi自动机:
则要检查模型TS是否满足活性性质Plive,也就是在验证模型的所有trace和活性性质的补表达的ω正则语言是否不交:
Traces(TS) ∩ Lω(Live)=∅
1.2 ω正则表达式
正则表达式表达的是有限字的语言,ω正则表达式表达的则是无限字语言,字母表Σ上的ω正则表达式总能写为如下的一般形式:
G=E1.F1ω+ ... +En.Fnω for n>0
其中Ei和Fi是正则表达式。
例如,(A+B)∗.Bω、(B∗.A)ω和A∗.Bω+Aω都是ω正则表达式。
1.3 ω正则表达式的语义
首先,有限字上的语言L⊆Σ∗可以理解为从有限状态机上初始状态到终止状态的各种执行序列所识别的转移边上的字母来构成的语言,则有限字上的语言的无限次自连接:
Lω={w1w2w3... ∣ ∀i≥0.wi∈L}
表达的就是无限次“从初始状态到可接受状态的任意执行”。具体地,1.2
中给出的ω正则表达式的一般形式对应的ω正则语言是这样的集合:
Lω(G)=L(E1).L(F1)ω ∪ ... ∪ L(En).L(Fn)ω
两ω正则表达式等价,当且仅当它们所表达的语言是等价的,即:
G1≡G2 iff Lω(G1)≡Lω(G2)
1.4 ω正则语言
一语言L是正则的,当且仅当存在一ω正则表达式G能表示该语言,即L=Lω(G)。例如字母表Σ={A,B}上的ω正则语言,可导出为正则表达式:
- A无限经常次出现:(B∗.A)ω
- A有限次出现:(A+B)∗.Bω
- 空语言:∅ω
ω正则语言对并、交、补都是封闭的,并且是无空的(不存在ϵ)。
2 ω正则性质
2.1 简述
称原子命题AP上的一个LT性质P是ω正则的,仅当P是在字母表2AP上的ω正则语言。换句话说,原子命题AP上的一个LT性质P是ω正则的,仅当存在一个能接受此性质P的NBA(非确定Büchi自动机)。
注意,ω正则语言和NBA(非确定Büchi自动机)的表达能力相同,但是NBA和DBA的表达能力不同。
2.2 例子
-
任何不变性Pinv都是ω正则性质,因为总可以表示成形如Φω的ω正则语言。
-
任何正则的安全性Psafe都是ω正则性质,因为其补P=BadPref(P).(2AP)ω是ω正则的,而且ω正则语言对补封闭,所以求补之前的Psafe也是ω正则的。
-
任何活性Plive都是ω正则性质,可以从这章最开始的例子直观理解。
3 非确定性Büchi自动机(NBA)
3.1 简述
从前面的分析可以知道,有限自动机(FA)只能识别有限字,不能识别无限字,而NBA可以识别无限字。但是NBA中的状态也和FA中的状态一样,是有限个的,因此NBA识别出的无限字中一定有一些状态会无限经常次出现。
NBA类似于NFA,但是其可接受状态的衡量标准是不同的,对NBA而言,那些总是无限经常次出现的状态称为可接受状态。
3.2 NBA可接受的语言
用A=(Q,Σ,δ,Q0,F)表示NBA。其中σ:Q×Σ→2Q是从Q中状态经识别Σ中字母,到达2Q中状态集的转移。也就是说,qAp当且仅当p∈σ(q,A)。
用σ=A1A2...∈Σω表示无限字。
无限字σ在NBA A上的一个可接受运行是一个无限执行序列q0q1q2...,其中q0∈Q0是初始状态,qiAi+1qi+1取自识别字母后的状态转移,qi∈F是可接受状态仅当qi无限经常次出现。
特别注意区分概念,无限字是由动作组成的,而可接受运行是由状态组成的。
称无限字σ能被NBA A接受,仅当存在σ在A上的可接受运行。
则可定义NBA A的可接受语言为其所有可接受运行组成的集合。
两NBA等价,当且仅当它们所表达的语言是等价的,即:
A1≡A2 iff Lω(A1)≡Lω(A2)
3.3 NBA和NFA对比
下图中两个自动机,视为NFA时,A1为A+,A2为A+;视为NBA时,A1为Aω,A2为∅。即在有限运行上等价,但在无限运行上不等价。
下图中两个自动机,视为NFA时,A1为(AA)∗,A2为A(AA)∗;视为NBA时,A1为Aω,A2为Aω。即在有限运行上不等价,但在无限运行上等价。
3.4 ω正则语言与NBA
任一被NBA接受的语言,是一个ω正则语言;对任一ω正则语言,可构造一个能识别它的NBA,所以两者是等价的。
以下三个操作得到的是NBA:
- 对一ω正则语言L(或说一个NFA A)只要ϵ∈/L,那么存在能识别Lω的NBA——Aω。
- 对两NBA A1和A2存在能识别Lω(A1)∪Lω(A2)的NBA——A1+A2。
- 对一ω正则语言L(或说一个NFA A)以及一个NBA A′存在能识别L.Lω(A′)的NBA——A.(A′)ω。
接下来3.5
,3.6
,3.7
将对它们逐一叙述。
3.5 NFA上的ω操作
NFA上的ω操作用于将NFA变成“能接受无数次其自己所能接受的有限字而形成的无限字”的NBA。记A=(Q,Σ,δ,Q0,F)是一个ϵ∈/L(A)的NFA,也就是说初态和终态不交即Q0∩F=∅。
第一步,初态改造:对所有的初态q0∈Q0,如果有进入q0的边,那么就要引入一个新状态qnew,使得qnew和q0具备相同的识别能力,即经过q0所能识别的字母,能到达相同的状态。
改造后得到的Q0′将作为最终的NBA的初始状态。
第二步,终态改造:对所有能到达NFA的终态F中的状态的那些转移qAq′∈F,添加新的转移qAq0∈Q0使其能转移到NFA的初态Q0的每个状态上去。
改造后,让Q0就作为最终的NBA的可接受状态。在这样的尾首相接后,只有q0∈Q0是无限经常次出现的。
得到的NBA即是A′=(Q,Σ,δ′,Q0′,F′),如下图是将A∗B经ω操作变成(A∗B)ω的两步过程:
3.6 两NBA的+操作
设定两NBA A1和A2的字母表都是Σ(如果不是,就取并得到Σ),则:
A1+A2=(Q1∪Q2,Σ,δ,Q0,1∪Q0,2,F1∪F2)
要求Q1∪Q2=∅以防止状态命名出现冲突(如果不是,就把冲突状态改名),则转移关系即取自“是谁的状态,就按谁的转移”,即δ(q,A)=δi(q,A)。
从而Lω(A1+A2)=Lω(A1) ∪ Lω(A2)。
3.7 NFA和NBA的连接操作
对NFA A=(Q,Σ,δ,Q0,F)和NBA A′=(Q′,Σ,δ′,Q0′,F′)其连接为:
A′′=(Q∪Q′,Σ,δ′′,Q0′′,F′′)
若NFA的终态都不是初态,那么连接后NBA的初态就是NFA的初态。
否则,NFA可接受的语言可以包含空,当取空时,要从NBA的初态Q0′出发作为新的NBA的初态。
即:
Q0′′={Q0 if Q0∩F=∅Q0 otherwise
可接受状态还是NBA的可接受状态。
即:
F′′=F
如果是NFA中原有的转移关系,且转移后不会到达NFA的终止状态,则转移后的状态还是那些。
如果是NFA中原有的转移关系,但转移后会到达NFA的终止状态,则转移后的状态还要包括NBA的初始状态,因为NBA连接在NFA后面。
如果是NBA中原有的转移关系,因为接下来永远都在这个NBA中了,故转移后的状态还是那些。
即:
δ′′(q,A)=⎩⎪⎨⎪⎧δ(q,A) if q∈Q and δ(q,A)∩F=∅δ(q,A)∪Q0′ if q∈Q and δ(q,A)∩F=∅δ(q,A) if q∈Q′
例如,下图是一个NFA和NBA的连接,图中红线表示了要把NFA的终态和NBA初态无条件连起来,但是由于转移上必须有字母,所以要将NFA终态的所有前驱添加转移到NBA的所有初态的转移,其字母和转移到NFA终态时所用的字母相同。
3.8 检查NBA所描述的语言是否为空
在这之前,先定义扩展的转移关系。之前使用的转移关系δ(q,A)都是状态q经一个字母A所到达的状态集合,现在扩展到经过一个有限字所到达的状态集合。这很好理解,只给出递归定义:
δ∗(q,ϵ)δ∗(q,A)δ∗(q,A1A2...An)={q}=δ(q,A)=p∈δ(q,A1)⋃δ∗(p,A2...An)
一个NBA可识别的语言L(A)不为空,当且仅当至少存在一个可接受状态,其位置处在从初始状态出发所能到达的环上,即:
∃q0∈Q0.∃q∈F.∃w∈Σ∗.∃v∈Σ+. q∈δ∗(q0,w)∧q∈δ∗(q,v)
画成图直观表示就是:
4 泛化非确定性Büchi自动机(GNBA)
4.1 简述
各种各样的NBA表达能力是一样的,使用GNBA是因为它和temporal logic的关联性更好,GNBA和前面学的NBA很像,仅在可接受状态上有区别。NBA的可接受状态是一个状态集合F,对无限的状态序列,若要它是一个可接受的运行,只要求序列中存在q∈F无限经常次出现即可。
GNBA的可接受状态是一系列状态集合的集合,即F={F1,...,Fk}⊆2Q限定k≥0,要求每个可接受的运行中,都总是存在q∈Fi(对所有的i)无限经常次出现。
显然,当k=0时所有运行都是可接受的;当k=1时GNBA就退化为NBA了。
这些可接受运行q0,q1,q2,...上识别的字σ=A0,A1,...,就构成了GNBA的语言。
4.2 GNBA的例子
如下图所示的自动机中,视其为GNBA,且可接受状态集F={{q1},{q2}},则可以表达每个进程都能无限经常次访问其临界区。
4.3 从GNBA到NBA的转换
对任意GNBA G总能找到等效的NBA A,使得:
Lω(G)=Lω(A) and ∣A∣=O(∣G∣⋅∣F∣)
其中F表示G中的可接受状态集的集合,即F={F1,...,Fk},所以∣F∣=k。
注意这里不能理解成∣F∣=∣⋃1≤i≤kFi∣。
可以直观看到,得到的NBA的状态数目是GNBA的k倍,这正是后面为每个状态都用1≤i≤k标注的结果。
转换到NBA的过程是一个搜索推进的过程,设G=(Q,Σ,δ,Q0,F)是GNBA,A=(Q′,Σ′,δ′,Q0′,F′)是转换出的NBA,则:
- Q′=Q×{1,...,k},即在记录i标记下要找Fi(1≤i≤k)里的终止状态以跳转到下个终止状态集Fi+1。
- Q0′=Q0×{1}={⟨q0,1⟩∣q0∈Q0},即生成的NBA的初始状态是GNBA的初始状态被标记上1的那些,表示从搜索F中的第一项F1开始。
- F′=F1×{1}={⟨qF,1⟩∣qF∈F1},即搜索回到i=1且在F1中时可接受。下一步又会跳转到i=2去搜索F2继续下一轮推进。
直观表达这个搜索推进的过程,如下:
4.4 转换的例子
例如4.2
中的GNBA,转换为NBA如下:
核心就是只要遇到状态q∈Fj且当前第二标记i=j时,接下来的转移就要让第二标记变到i=(i+1)%k上去。
5 验证ω正则性质
5.1 方法论
关于ω正则性质的介绍见2
,不再重复。
类似于笔记7中验证正则性质的方法,只是这里是在无限字上使用GNBA作为中介工具。要验证TS⊨P,即是验证Traces(TS)⊆P,所以应和“性质P在全体无限字上的补集”不交,即:
Traces(TS)∩(2AP)ω∖P=∅
其中(2AP)ω∖P简记为P,记Lω(A)是P对应的ω正则语言,其中A是能识别P的一个NBA,从而:
Traces(TS)∩Lω(A)=∅
这就是在考察同步积:
TS⊗A⊨"eventually forever"¬F
其中【"eventually forever"¬F】表示【最终(从某状态开始,其后的所有状态)会持续满足¬F】,这是和【F中有元素无限经常次出现】对立的,也就是在判定【同步积得到的NBA上没有可接受的运行】。
5.2 持续性质(Persistence property)
在5.1
中提到的"eventually forever"这种陈述,表达的就是一种持续性质,即无限字中存在某个让性质启动的位置i,从那之后的所有字母都满足某一命题Φ。
持续性质在这门课里最早出现在学习公平性时,见笔记6中2.10
节给出的弱公平性的形式化描述。
Ppers={A0A1A2...∈(2AP)ω ∣ ∃i≥0. ∀j≥i. Aj⊨Φ}
其中Φ称为该持续性质Ppers的持续性条件。
5.3 构造同步积
构造同步积的过程和之前学的一样,见笔记7中2.4
节,只要将其中的NFA改成这里的NBA就可以了。
5.4 验证ω正则性质
设TS是原子命题集AP上的TS,P是AP上的ω正则性质,A是一个non-blocking的NBA满足Lω(A)=P。
这里non-blocking指的是对NBA的每个状态q,对每个输入符号A都有向后的转移,即δ(q,A)对所有的q∈Q和A∈Σ=2AP都不为∅。
则以下几个命题是等价的:
- TS⊨P
- Traces(TS)∩Lω(A)=∅
- TS⊗A⊨Ppers(A)
其中Ppers(A)即是5.1
中的"eventually forever"¬F,如此验证ω正则性质就变成了对持续性(persistence)的验证。
5.5 对persistence的验证
验证TS⊨Ppers,即验证在某个位置后Φ条件一直满足,其对立面TS⊭Ppers只要验证是否存在一个可达状态s⊭Φ无限经常次出现,即去看看这些不满足Φ的状态是否在环路中就可以了。因为若TS能无限经常次访问不满足Φ的状态,那么就有TS⊭Ppers。
因此,TS⊭Ppers当且仅当∃s∈Reach(TS). s⊭Φ且s在G(TS)中的环上。
特别注意,上面只是对TS满足persistence的分析。具体到本章所学,实际是在同步积上,ω正则性质的补被写成一个NBA A,同步积TS⊗A要满足的persistence其实是:
eventually forever ¬F
所以只要判断的是同步积中状态Label里带有可接受状态F中元素的状态是不是都不在从初态开始的可达环路中即可。
例如,要验证的性质P是【green无限经常次出现】,则取补后形成的NBA中只有q1是可达状态(下图右上)。
下面这个例子中性质满足,因为同步积得到的TS中两个带q1标记的状态不在初态可达环里:
但在下面这个例子中性质不满足,因为⟨s2,q1⟩⇌⟨s0,q1⟩这个包含了可接受状态q1的环是从初态可达的:
5.6 环路检测
可以求图的强连通子图(SCC),或者用书上给出的Nested DFS的方式,后者在验证不通过时更容易求反例。