nuXmv在初始状态下如何知道(AF p)& (AF w)是假的

时间:2018-05-07 12:57:03

标签: nuxmv

我有一个关于nuXmv解决方案的问题。我有一个简单的图形,其中初始状态是s1,s1有两个弧,一个通向s2,另一个通向s3。从s2和s3开始,有一个弧线通向s1。这是nuXmv中描述情境的程序。

debugElement

我不明白nuXmv在初始状态s1中是如何知道公式是假的。它没有给出基于循环的反例,只是在s1中它根据s1表示公式是错误的。 我的解释是,如果没有正义假设,nuXmv会立即假设其中一条路径永远不会被执行。但它不应该以循环为例吗?如果我只离开" CTLSPEC AF p;" nuXmv返回一个循环作为反例。那么为什么选择" AF p& AF w"它只显示状态s1作为反例?

MODULE main
VAR
    s : {s1, s2, s3};  
    p : boolean;
    q : boolean;
    w : boolean;
ASSIGN 
    init(s) := {s1};
    next(s) := case 
        s = s1 : {s2, s3}; 
        s = s2 : s1;
        s = s3 : s1;
    esac;
    p := case 
        s = s2 : TRUE;
        TRUE : FALSE; 
    esac;
    q := case
        s = s1 : TRUE;  
        TRUE : FALSE; 
    esac;
    w := case
       s = s3 : TRUE;
        TRUE : FALSE;
    esac;
CTLSPEC (AF p) & (AF w);
CTLSPEC AG (AF p) & AG (AF w);

0 个答案:

没有答案