【发布时间】:2013-10-03 10:56:15
【问题描述】:
我想知道是否可以在具有公平约束的程序中验证 LTL 属性,该公平约束规定必须无限频繁地执行多个语句。
例如:
bool no_flip;
bool flag;
active[1] proctype node()
{
do
:: skip -> progress00: no_flip = 1
:: skip -> progress01: flag = 1
:: !no_flip -> flag = 0
od;
}
// eventually we have flag==1 forever
ltl p0 { <> ([] (flag == 1)) }
如果no_flip 标志最终变为真并且 flag 变为真,则此程序是正确的。
但是,同时运行 'pan -a' 和 'pan -a -f'(弱公平性)会产生一个循环通过 no_flip=1 语句和接受状态(来自 LTL 公式)。
我认为进度标签会强制执行无限频繁地通过它们,但情况似乎并非如此。 那么,是否可以添加这种公平约束?
谢谢, 努诺
【问题讨论】: