下面给出了计算E[ f ∪g ]的算法。
  Check_EU(f, g) {
/* compute E[f ∪g] */
    Y = g;
   /* 最小不动点的初始值 */
    DeltaY = g; 
/* 每次迭代后Y的变化 */
    do {
      pY = f∧pre_image(DeltaY);
      DeltaY = pY∧(┐Y);
      Y = Y∨DeltaY;
    } while (DeltaY≠false);
    return Y;
  }
  请注意,其中所有的布尔操作都可以使用BDD实现,而且pre-image操作也可以使用BDD实现。在该算法中,最小不动点的计算结果保存在变量Y中,Y的初始值设为g,作为逆向可达性计算的起始状态集合。变量DeltaY存储新增加的状态,初始也设为g。然后该算法开始进行迭代计算,首先计算满足f并且能在一步逆向可达性计算中从DeltaY可以到达的状态集合。然后更新新到达的状态集合和已经到达的状态集合。如此迭代直至没有新的状态加入。此时即达到了最小不动点,整个计算完成。因为问题的对象是一个有限的状态空间,因此能访问到所有状态,从而保证该算法能正常终止。
  EG f所求得的状态集合,应符合下述条件:其中任何一个状态s,都存在一条从s开始的计算路径p,在该路径上所有的状态始终满足f。根据这一定义,可以通过下述方法来递归地计算EG f :
  EG f在状态s成立当且仅当f在s成立并且EG f在s的某些后继状态也成立。用数学语言即表示为:
      EG f = f∧EX( EG f)
该等式说明EG f 为函数h(Z) = f ù EX Z的一个不动点。
  下面给出了计算该不动点的算法:
  Check_EG(f) {
/* 求 EG f */
    Y = f;
/* 最大不动点的初始值*/
    do {
      Y' = Y;
/* 保存Y上一次的值*/
      Y = Y∧pre_image(Y);
    } while (Y≠Y');
/*若Y=Y',表明没有新的状态去除,表明是一个最大不动点*/
    return Y;
  }   在计算得到这些满足CTL公式的状态集合T之后,只需要检查S是否为T的一个子集(即 ┐S(V) ∨ T(V) = true)。如果为真,则说明该系统满足该CTL公式。
  S为T的一个子集,说明状态表示的功能都满足CTL的描述。