3. 状态遍历
  模型检验的基本思想就是对有限状态机模型进行状态空间的遍历,其最基本的操作是前向遍历(Forward Traversal)和逆向遍历(Backward Traversal),分别称为转换关系的image操作和inverse_image操作。给定用BDD表示的状态集合S以及转换关系N,则可用下述方法求得S的image和inverse_image:
      imageV'(S) = V.[N(V, V')∧S(V)]
      inverse_imageV(S) = V'.[N(V, V')∧S(V')]
其中imageV'(S)表示用V' 中的变量表示的image(S)的BDD结果,而inverse_imageV(S)则表示用V中的变量表示的inverse_image(S) 的BDD结果。
  Image的意思是映像,即根据S(V) 中的每个现态和转换关系N (V, V'),求次态。而inverse_image则表示逆向映像,是从次态求现态,或者说,从现在求前面的状态。

  4. 有限状态机模型的BDD表示
  通用的有限状态机模型M是一个六元组:<I, O, S, δ, λ, s0>,其中:
  · I,O,S分别是M的输入域,输出域以及状态域;
  · s0∈S是M的初始状态;
  · δ:I×S -> S 是M 的状态转换函数;
  · λ:I×S -> O 是M 的输出函数。
  对于这样一个有限状态机模型,我们可以分别用BDD来表示其I,O,S,以及状态转换函数以及输出函数。
  给定有限状态机模型M = (I, O, S, δ, λ, s0),令用BDD表示的有限状态机为M*=(I*, O*, S***, s0*),则具体过程如下:
  首先,对输入集合I、输出集合O以及状态集合S进行二进制编码。令B = {0,1},则编码后:
  I* = Bni,其中ni = [log |I|]。令i1, i2, …, ini为相应的输入变量;
  O* = Bno,其中no = [log |O|]。令o1, o2, …, ono为相应的输出变量;
  S* = Bns,其中ns = [log |S|]。令s1, s2, …, sns为相应的状态变量;
  然后, 将状态转换函数δ和输出函数λ重新定义如下:
  δ*:I*′S*′S*→B。对于任一输入i = ( i1, i2, …, ini)和两个状态sc = ( sc1, sc2, …, scns) 和sn = ( sn1, sn2, …, snns),如果 δ(i, sc) = sn, 则δ*(i, sc, sn)= 1,否则δ*(i,sc, sn) = 0。
  λ*:I*′S*′O*→B。对于任一输入i = ( i1, i2, …, ini)、状态sc = ( sc1, sc2, …, scns)和输出o = ( o1, o2, …, ono),如果λ( i, sc) = o, 则λ*( i, sc, o) = 1,否则λ*( i, sc, o) = 0。
  这样,有限状态机模型M的状态转换函数和输出函数均变成布尔函数表示方式,也就可以采用BDD来表示。
  
这里符号很多,其实所表达的事实和前面说的一样,就是原来关于状态的关系,变成关于状态变量的关系,即输出函数和状态转换函数都转换成状态变量之间的关系,这些关系是都是布尔表达式,而这些布尔表达式用BDD表示。