合金总排序

时间:2015-10-16 01:08:00

标签: alloy

我试图让Alloy实例化一组完全有序的节点,但似乎无法做我想做的事情。这是一个简单的案例:

open util/ordering[S]

sig S {
   rel : set S
} 

pred show {}

run show for 4

我期待看到链中最多4个节点,但我看到4个节点彼此无关。杰克逊的书第6.1.1节建议使用util / ordering来定义这些东西,但我必须在这里遗漏一些东西。

1 个答案:

答案 0 :(得分:1)

库模块在S上提供了一个排序关系,可以通过next和prev等函数访问(只需打开utils文件夹中的代码即可查看)。如果您愿意,也可以明确地访问该排序关系(但最好使用这些函数)。

您定义的关系rel不受影响,并且不受打开库模块的限制。如果你考虑一下,对于rel来说是没有意义的,因为在open语句中没有提到实例化排序(因此分析器必须猜测哪个关系是排序)。