algorithm - 通过NuSMV验证Dekker的互斥算法

标签 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)

但是反馈如图,显示“:”左操作数类型非法。它应该是 bool 值。我不知道为什么。请帮助我......代码有什么问题 NuSMV feedback

最佳答案

改变

1 : whatever

TRUE : whatever

这将修复语法错误。

希望对你有所帮助。

关于algorithm - 通过NuSMV验证Dekker的互斥算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122505/

相关文章:

algorithm - 矩阵使用matlab

php - 如何通过php将uuid压缩为62位二进制文​​件

performance - 在二维平面中找到距离 P 点最近的 K 个点

mysql - 如何检查哪些 MySQL 数据库仍在使用中? #打扫干净

java - Crypt::RSA (Perl) 和 java.security.Signature (Java) 之间的交互

algorithm - 如何验证无锁算法?

algorithm - Fischer 互斥算法

c - 用 C 语言调试 Lamport 烘焙算法的简化版本

java - 线程不使用 Condition 等待新数据

我可以使用这个自定义函数替换内置的 pow 函数吗?