Model Promela,Ispin:模型检查器Promela使用自旋建模
我正在使用spin model checker进行模型检查验证,每次我尝试运行代码时都会出现错误: 自旋:交通\控制器:12,错误:未声明变量:to\绿色锯 ''”)=41' 子进程异常退出 我也已经申报了。我使用的是spin版本6.4.9Model 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
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
,黄色间隔
,设置
,时钟
)绿色的确切位置在哪里?另外,请使用您的代码对其进行格式化并删除行号。