验证NuSMV的Dekker互斥算法

时间:2016-05-09 18:04:19

标签: algorithm verification mutual-exclusion model-checking nusmv

我使用NuSMV来验证Dekker算法,我的代码如下:

MODULE main
VAR
b1 : {true, false};
b2 : {true, false};
k : {1, 2};
pr1 : process proc(k, b1, b2, 1);
pr2 : process proc(k, b2, b1, 2);
ASSIGN
init(b1) := false;
init(b2) := false;
init(k) := {1, 2};

MODULE proc(k, bi, bj, i)
VAR
state : {noncritical, test_bj, ftest_k,
stest_k, critical};
DEFINE
j :=
case
i = 1 : 2;
i = 2 : 1;
esac;
ASSIGN
init(state) := noncritical;
next(state) :=
case
state = noncritical : {noncritical, test_bj};
state = test_bj & (bj = false) : critical;
state = test_bj & (bj = true) : ftest_k;
state = ftest_k & (k = j) : stest_k;
state = ftest_k & (k != j) : test_bj;
state = stest_k & (k = j) : stest_k;
state = stest_k & (k !=j) : test_bj;
state = critical : {critical, noncritical};
esac;
next(bi) :=
case
state = noncritical &
next(state) = test_bj : true;
state = ftest_k & (k = j) : false;
state = stest_k & (k != j) : true;
state = critical &
next(state) = noncritical : false;
1 : bi;
esac;
next(k) :=
case
state = critical &
next(state) = noncritical : j;
1 : k;
esac;

FAIRNESS
running
FAIRNESS
!(state = critical)
FAIRNESS
!(state = noncritical)

但是反馈就像图片一样,它显示了非法的左操作数类型“:”。它应该是布尔值。我不知道为什么。请帮帮我...代码有什么问题 NuSMV feedback

1 个答案:

答案 0 :(得分:1)

更改

1 : whatever

TRUE : whatever

这将修复语法错误。

我希望它对你有所帮助。