CTL公式直到含有蕴涵

时间:2015-04-23 08:26:42

标签: model-checking ctl nusmv

当我使用NuSMV工具验证我的CTL是否正确时,我遇到一个让我如此困惑的问题。

我的模特是

enter image description here

这是 NuSMV 代码:

MODULE main
VAR
  state : {ROOT, A1, B1, C1, D1, F1, M1};

ASSIGN
  init(state) := ROOT;

  next(state) := case
    state = ROOT : A1;
    state = A1   : {B1, C1};
    state = B1   : D1;
    state = D1   : F1;
    TRUE : state;
  esac;

CTLSPEC
  AG( state=A1 -> AX ( A [ state=B1 U ( state=D1 -> EX state=F1 ) ] ) );
CTLSPEC
  AG( state=A1 -> AX ( A [ state=B1 U ( state=F1 -> EX state=C1 ) ] ) );
CTLSPEC
  AG( state=A1 -> AX ( A [ state=M1 U ( state=F1 -> EX state=C1 ) ] ) );

我的CTL公式如下:

  1. "AG( A1 -> AX ( A [ B1 U ( D1 -> EX ( F1) ) ] ) )"
  2. "AG( A1 -> AX ( A [ B1 U ( F1 -> EX ( C1) ) ] ) )"
  3. "AG( A1 -> AX ( A [ M1 U ( F1 -> EX ( C1) ) ] ) )"
  4. NuSMV验证了上述三个公式,所有这些都证明是真的。

    所以我的问题是为什么公式2和公式3结果是真的?

1 个答案:

答案 0 :(得分:1)

这个问题已经过时了,但我认为仍然值得回答,因为这个问题可能会误导其他人。

  

M,s⊨对于所有路径(s,s2,s3,s4,...)s.t,a [φUψ] iff si Rt si + 1有一个州sj s.t.对于所有i

因此,对于要验证的属性,φ必须为真,直到ψ触发为止。

请注意,如果ψ立即触发,则φ的值不相关。

很容易看到所有三个公式都经过简单验证,因为ψ在从trueB1开始的每个路径的第一个状态中都是C1 {1}}。 情况就是这样,因为ψ是一种含义,在州B1C1中有一个false前提。

由于我们知道A [ ANYTHING U TRUE ]已针对任何州进行验证,因此我们得出结论,所有三个属性都是可以满足的。