Model Promela,Ispin:模型检查器Promela使用自旋建模

Model Promela,Ispin:模型检查器Promela使用自旋建模,model,promela,spin,Model,Promela,Spin,我正在使用spin model checker进行模型检查验证,每次我尝试运行代码时都会出现错误: 自旋:交通\控制器:12,错误:未声明变量:to\绿色锯 ''”)=41' 子进程异常退出 我也已经申报了。我使用的是spin版本6.4.9 proctype traffic_controller(int id; int red; int green; int yellow) { bool event_flag = false; int neighbor_id , send_nod

我正在使用spin model checker进行模型检查验证,每次我尝试运行代码时都会出现错误:

自旋:交通\控制器:12,错误:未声明变量:to\绿色锯 ''”)=41'

子进程异常退出 我也已经申报了。我使用的是spin版本6.4.9

proctype traffic_controller(int id; int red; int green; int yellow)
{
    bool event_flag = false;
    int neighbor_id , send_node_id , interval ;
    byte circular_ch[4];
    mtype  msg_signal  ;
    end_1 :
    do
    ::circular_ch[ id ]?msg_signal (send_node_id);
        if
        :: ( msg_signal == to_green ) ;
            green_state:
            if
                :: interval = GREEN_INTERVAL0 ;
                :: interval = GREEN_INTERVAL1 ;
                :: interval = GREEN_INTERVAL2 ;
            fi;
            set (clock [id] , interval) ;
            red_activated_region_end :
            red_signal [id] = false ;
            green_activated_region_start ;
            green_signal [id] = true ;
            if
                :: ( expire ( clock [id] ) ) -> clock [id] = ZERO;
                green_activated_region_end :
                green_signal [id] = false ;
                goto yellow_state ;
            fi;
            yellow_state :
            set ( clock [id] , YELLOW_INTERVAL ) ;
            yellow_activated_region_start ;
            yellow_signal [id] = false ;
            if
                :: ( expire ( clock [id] ) ) -> clock [id] = ZERO ;
                yellow_activated_region_end :
                yellow_signal [id] = false ;
                if
                    :: (id != NUM_NODES-1) -> neighbor_id = id+1 ;
                    ::else -> neighbor_id =ZERO;
                fi;
                red_signal [id] = true;
                red_activated_region_start :
                circular_ch [ neighbor_id ] ! to_green (id) ;
            fi;
        fi;
    od;
}

init
{
    run traffic_controller();
    mtype : msg_signal = { to_green, pear, banana }
}

这有两个问题:

  • 全局声明
    msg\u信号
    ,而不是在
    main
    中声明
  • 您留下了很多未定义的内容(例如,
    绿色间隔0
    黄色间隔
    设置
    时钟

  • 绿色的确切位置在哪里?另外,请使用您的代码对其进行格式化并删除行号。