【系统分析与验证学习笔记】3:基于Transition System的系统模型

TS是一种常用的描述系统行为的模型,用结点表示状态,边表示转移关系,和KS的主要区别是状态转移是需要动作支持的,不同的动作往往对应着不同的状态转移。

1 基本概念

1.1 状态(State)

状态是在某时刻系统所具有的特性和行为。和KS一样用原子命题集合表示状态,例如{a=2,b>3}\{a=2,b>3\}

  • 对交通灯而言,灯的颜色就是状态。
  • 对顺序程序而言,变量的当前取值以及程序计数器的位置就是状态。
  • 对同步硬件电路而言,输入的若干比特以及寄存器的值就是状态。

1.2 转移(Transition)

转移是从一个状态到其它状态的演变。

  • 对交通灯而言,从一个颜色变成其它颜色即是它的转移。
  • 对顺序程序而言,语句的执行就是转移。
  • 对同步硬件电路而言,对于一组新的输入,寄存器内的值和输出位的改变即是转移。单一动作用希腊字母表示。

1.3 动作(Action)

动作这个概念一般用于通信方面的建模,不同进程之间需要进行消息传递,这时候会用到动作。

2 数学表示

2.1 定义

上节课学习的KS定义为四元组,而TS定义为六元组:
TS=(S,Act,,I,AP,L)TS=(S,Act,\to,I,AP,L)
这之中:

  • SS是状态集合
  • ActAct是动作集合
  • S×Act×S\to \subseteq S \times Act \times S状态-动作-状态的转移关系集合
  • ISI \subseteq S是初始状态集合
  • APAP是原子命题集合
  • L:S2APL:S \to 2^{AP}是标签函数

如果状态集SS、动作集ActAct、原子命题APAP都是有限的,那么称这个TSTS是有限的。

2.2 基于动作的转移关系

从状态ss经动作α\alpha转移到状态ss'记为sαss \stackrel{\alpha}{\longrightarrow} s',注意:

  • 状态ss的下一状态是非确定的(nondeterministically)
  • 动作α\alphass的下一状态是ss'这件事确定下来
  • 当初始状态集包含超过1个状态时,初始状态也是非确定的
  • 动作是为通信建模而引入的机制,其它时候可以忽略动作

2.3 标签函数

将状态送入标签,返回原子命题集合,即L(s)2APL(s) \in 2^{AP},注意:

  • 状态ss满足命题逻辑公式Φ\Phi,当且仅当L(s)L(s)使此公式为真。即sΦ   iff  L(s)=Φs \models \Phi \ \ \ iff \ \ L(s)=\Phi
  • 原子命题集合APAP应当选择感兴趣(即此模型需要考虑)的特征

注意,L(s)2APL(s) \in 2^{AP}即是L(s)APL(s) \subseteq AP,课件上用的是等式左边的表述,这里也保留了下来,实际就按右边理解即可。

3 可满足性关系\models

对原子命题集合APAP的定值(真值指派,此处可以理解成对变量的赋值影响相关原子命题的真值,例如设置a=2a=2那么命题a<0a<0的真值为假,将所有的命题计算得真假即是对整个合取式的真值指派)是将其映射到0或1上,即μ:AP{0,1}\mu : AP \to \{0,1\},记Eval(AP)Eval(AP)APAP内命题的全部的真值指派方式组成的集合。可满足关系\models是一个二元关系(μ,ϕ)(\mu,\phi),它指示的是在μ\mu这个定值方式下,命题逻辑公式ϕ\phi的计算结果为真。显然有:

  • μtrue\mu \models true
  • μa   iff  μ(a)=1\mu \models a \ \ \ iff \ \ \mu(a)=1
  • μ¬ϕ   iff  μ⊭ϕ\mu \models \neg \phi \ \ \ iff \ \ \mu \not\models \phi
  • μϕψ   iff  μϕμψ\mu \models \phi \wedge \psi \ \ \ iff \ \ \mu \models \phi \wedge \mu \models \psi

4 非确定性(nondeterministic)

4.1 应用

  • 通过interleaving(两进程交替执行) 对独立活动的并行执行进行建模。
  • 对两个进程访问同一共享资源而出现的复杂状况建模。
  • 用于抽象目的和underspecification。
  • 对未知或不可预测环境下的接口建模。

4.2 例子:饮料机

在这里插入图片描述

  • 状态集合S={pay,select,soda,beer}S = \{ pay , select, soda, beer \}
  • 初始状态集合I={pay}I = \{ pay \}
  • 动作集合Act={insert_coin,get_soda,get_beer,τ}Act = \{ insert\_coin, get\_soda, get\_beer, \tau \}

这是一个非确定的系统,因为在投入硬币后,既可以选择提供啤酒,也可以选择提供苏打水。

注意,当表示内部活动或者不相关活动时,使用一个特殊符号τ\tau

  • 原子命题是要考虑的性质:
    AP={paid,drink}AP=\{paid,drink\}
  • 标签函数作用在状态上,得到的是原子命题的子集
    L(pay)=L(select)={paid}L(soda)=L(beer)={paid,drink} L(pay)=\varnothing \\ L(select) = \{paid\} \\ L(soda)=L(beer)=\{paid,drink\}
    可以理解为,系统中只有两个要考虑的量paidpaiddrinkdrink并且只能取值真和假。一开始既没有付款也没有喝饮料,所以对paypay取标签函数得到的是空集;在投入硬币进入selectselect状态后,因为已经付款了,所以取标签得到的是{paid}\{paid\};在出了饮料之后,即认为同时也可以喝了,所以取标签得到的是{paid,drink}\{paid,drink\}

5 后继和前任

5.1 直接后继

TS=(S,Act,,I,AP,L)TS=(S,Act,\to,I,AP,L)中的sSs \in S以及αAct\alpha \in Act,状态ss对动作α\alpha的直接后继定义为:
Post(s,α)={sSsαs}Post(s,\alpha)=\{s' \in S | s \stackrel{\alpha}{\longrightarrow} s'\}
ss经过α\alpha所能到达的状态ss'的集合,记作αsuccessors\alpha-successors

状态ss的直接后继(不说关于某动作)定义为:
Post(s)=αActPost(s,α)Post(s) = \bigcup\limits_{\alpha \in Act} Post(s,\alpha)
即所有经过任一动作α\alpha能达到的状态的集合。

5.2 直接前任

TS=(S,Act,,I,AP,L)TS=(S,Act,\to,I,AP,L)中的sSs \in S以及αAct\alpha \in Act,状态ss对动作α\alpha的直接前任定义为:
Pre(s,α)={sSsαs}Pre(s,\alpha)=\{s' \in S | s' \stackrel{\alpha}{\longrightarrow} s\}
即经过α\alpha能到达状态ss的若干前置状态ss'的集合,记作αpredeccessors\alpha-predeccessors

状态ss的直接前任(不说关于某动作)定义为:
Pre(s)=αActPre(s,α)Pre(s) = \bigcup\limits_{\alpha \in Act} Pre(s,\alpha)
即所有由任一动作α\alpha而来此状态的前置状态的集合。

5.3 用状态集合扩展直接后继和直接前任

提供一个状态集合CSC \subseteq S,可以在其上定义直接后继或直接前任,实际上就是对所有其内的状态sCs \in C求直接后继或直接前任:
Post(C,α)=sCPost(s,α),Post(c)=sCPost(s)Pre(C,α)=sCPre(s,α),Pre(c)=sCPre(s) Post(C,\alpha)=\bigcup\limits_{s \in C} Post(s,\alpha) ,Post(c) =\bigcup\limits_{s \in C} Post(s) \\ Pre(C,\alpha)=\bigcup\limits_{s \in C} Pre(s,\alpha) ,Pre(c) =\bigcup\limits_{s \in C} Pre(s)

5.4 TS的终止状态

称状态ss是TS的终止状态,当且仅当它没有后继即Post(s)=Post(s)=\varnothing

对顺序程序而言,终止状态标志着程序运行结束。

对并行程序而言,往往不希望看到终止状态。

6 确定性的TS

谈及TS的确定性,一般可以分为以下两种类型。

6.1 关于actionaction的确定TS

对所有状态ss和动作α\alpha,如有I1|I| \leq 1并且Post(s,α)1|Post(s,\alpha)| \leq 1,即任意状态经任意动作最多跳转到1个状态去,此时称这个TS是actiondeterministicaction-deterministic的。

6.2 关于APAP的确定TS

对所有状态ssAPAP的子集A2APA \in 2^{AP}(其实就是AAPA \subseteq AP),如有I1|I| \leq 1并且Post(s){sSL(s)=A}1|Post(s) \cap \{s' \in S | L(s')=A\}| \leq 1,即从某一状态出发的直接后继,其Label函数的计算结果一定是不一样的,此时称这个TS是APdeterministicAP-deterministic的。

7 执行片段与执行

7.1 有限执行片段

TS的有限执行片段定义为:
ϱ=s0α1s1α2...αnsn\varrho = s_0 \alpha_1 s_1 \alpha_2 ... \alpha_n s_n
其中对所有的0i<n0 \leq i < n,有siαi+1si+1s_i \stackrel{\alpha_{i+1}}{\longrightarrow} s_{i+1}成立。其中n0n \geq 0是有限执行片段的长度。

7.2 无限执行片段

TS的无限执行片段定义为:
ρ=s0α1s1α2s2α3...\rho = s_0 \alpha_1 s_1 \alpha_2 s_2 \alpha_3 ...
其中对所有的0i0 \leq i,有siαi+1si+1s_i \stackrel{\alpha_{i+1}}{\longrightarrow} s_{i+1}成立。

7.3 最大/初始的执行片段

一个最大(maximal)执行片段是一个以终止状态结束的有限片段,或是一个无限执行片段。

当执行片段从初始状态开始时,称其为初始(initial)的片段。

7.4 执行

TS的执行是指一个初始的、最大的执行片段。

7.5 可达状态

状态sSs \in S是可达的,意为存在这样的初始、有限的执行片段:
s0α1s1α2...αn(sn=s)s_0 \stackrel{\alpha_1}{\longrightarrow} s_1 \stackrel{\alpha_2}{\longrightarrow} ... \stackrel{\alpha_n}{\longrightarrow} (s_n=s)
Reach(TS)Reach(TS)为TS的所有可达状态。

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