如何处理Nusmv无法用输入变量(IVAR)检查ctl属性的错误?

时间:2018-04-10 06:42:11

标签: nusmv ctl

MODULE

IVAR v1:布尔值;

VAR v2:布尔值;

SPEC NAME p1:= AG(v1& v2);

文件ltlerror.smv:第8行:属性包含输入变量:

1 个答案:

答案 0 :(得分:1)

NuSMV 2.6 user manual的第24-25页,写了:

  

[...]输入变量不能出现在:

     

[...]

     
      
  • 一些规格种类:CTLSPEC,SPEC,INVARSPEC,COMPUTE,PSLSPEC。   例如:

    IVAR i : boolean;
    VAR s : boolean;
    SPEC AF (i -> s) – this is NOT allowed 
    LTLSPEC F (X i -> s) – this is allowed
    
  •   

解决方法:

  1. 使用LTL

    MODULE main
    IVAR
      v1 : boolean;
    VAR
      v2 : boolean;
    
    LTLSPEC NAME p1 := G (v1 & v2);
    
  2. v1声明为普通变量,但将其用作输入变量。为此,请勿对v1的初始值和未来值施加任何约束,即不要写init(v1) :=next(v1) :=或等效约束。