在TLA + PLusCal中定义运算符不起作用

时间:2019-01-22 11:08:06

标签: verification tla+

我在PlusCal中的基本代码如下。

---- MODULE flags ----
EXTENDS TLC, Integers
(* --algorithm flags
define
    IsFive(z) == z = 5
end define
begin
IsFive(5)
end algorithm; *)

====

在工具箱中突出显示了行IsFive(5),当我尝试运行模型时,我收到一个错误,指出未定义宏IsFive。

类似地,https://learntla.com/tla/operators/说运算符是函数,然后在下一章中定义函数。

说我需要检查验证参数是否为5的功能。我应该使用什么,运算符或函数?

1 个答案:

答案 0 :(得分:0)

PlusCal转换程序希望beginend algorithm之间的文本包含变量值的赋值(例如x := 3)或PlusCal宏的调用(赋值macro键盘来定义。

在您的示例代码中,PlusCal转换器没有看到赋值语句,因此它假定IsFive是宏,然后进行抱怨。

如果您定义变量并使用运算符来计算算法中变量的值,则工具箱将能够解析您的代码。

---- MODULE flags ----
EXTENDS TLC, Integers
(* --algorithm flags
variable x;
define
    IsFive(z) == z = 5
end define
begin
x := IsFive(5)
end algorithm; *)
====