如何在TLA +配置文件的CONSTANTS部分中为常量分配序列?

时间:2010-05-21 06:59:12

标签: configuration constants model-checking tla+ tlc

我试过

CONSTANTS seq = <<5,6,7>>

但是TLC给我一个语法错误:

  

错误:TLC发现错误   第1行的配置文件。它是   期待=或&lt; - 并没有找到它。

我也尝试在配置文件中包含Sequences模块,但无济于事。

那么......我需要做什么来分配序列?

3 个答案:

答案 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