我试过
CONSTANTS seq = <<5,6,7>>
但是TLC给我一个语法错误:
错误:TLC发现错误 第1行的配置文件。它是 期待=或&lt; - 并没有找到它。
我也尝试在配置文件中包含Sequences
模块,但无济于事。
那么......我需要做什么来分配序列?
答案 0 :(得分:1)
我不记得曾经遇到过这个问题,而且我的TLC太生锈了,无法尝试给你第一手答案(我刚刚使用TLA +工具箱重启)。
然而,从链接后的链接来看,我认为你不能通过TLC配置文件用序列实例化常量。
http://bbpress.tlaplus.net/topic/creating-a-sequence-from-a-set
尽管问题已经过时,但是留下答案可能有助于未来的TLA人员。
答案 1 :(得分:1)
您无法直接指定TLA +文件中的常量。如果您正在使用工具箱,请编写CONSTANTS seq
,然后在模型中添加您想要的元组作为普通作业。
答案 2 :(得分:1)
因此,事实证明您需要一个单独的.tla
文件。假设您有“ Main.tla”作为源文件。您希望MyConst
的值为<<1,2,3>>
。 TLA +工具箱生成MC.tla
并将常量放在其中:
---- MODULE MC ----
EXTENDS Main, TLC
const_uniq12345 = <<1,2,3>>
====
在MC.cfg
中,将有一行
CONSTANT MyConst <- const_uniq12345
请注意,MyConst = const_uniq12345
无法正常工作-如果您使用=
而不是<-
,则MyConst
将包含模型值const_uniq12345
而不是{{ 1}}
我使用https://github.com/hwayne/tlacli可以从命令行运行TLC(TLA工具箱具有糟糕的UX),并且我可以借助这样的额外<<1, 2, 3>>
文件来提供元组常量。当然,我也使用有意义的名称代替了.tla
。不过,必须手动调用const_uniq12345
(使用java -cp /path/to/tla2tools.jar ...
的{{1}}选项获得了完整的命令),因为当前--show-script
在配置中不处理tlacli