使用 util/ordering 与以通常方式公理化全序完全相同吗?

Is using util/ordering exactly the same as axiomatizing a total order in the usual way?

util/ordering 模块在文件顶部包含一条注释,说明模块参数的界限被限制为完全 允许的界限所述签名的范围。

我已经读过几遍了(here for instance) that it is an optimization that allows to generate a nice symmetry-breaking predicate, which I can grasp. (BTW, with respect to the said post,我推断模块参数规范中的 exactly 关键字在这里是为了明确强制执行这个确切的界限(虽然它隐含在4.x Alloy 之前的版本)?)

但是,评论中还有一部分似乎没有提到优化,而是真正提到了一个具有语义味道的问题:

 * Technical comment:
 * An important constraint: elem must contain all atoms permitted by the scope.
 * This is to let the analyzer optimize the analysis by setting all fields of each
 * instantiation of Ord to predefined values: e.g. by setting 'last' to the highest
 * atom of elem and by setting 'next' to {<T0,T1>,<T1,T2>,...<Tn-1,Tn>}, where n is
 * the scope of elem. Without this constraint, it might not be true that Ord.last is
 * a subset of elem, and that the domain and range of Ord.next lie inside elem.  

所以,我不明白这一点,特别是关于 Ord.lastOrd.next 的最后一句话......假设我以经典方式对完全有序的签名 S 建模(S -> S 中指定了总的、自反的、反对称的、可传递的关系,所有这些都可以使用简单的一阶逻辑实现)并且我注意指定一个精确的界限对于 S:是否等同于声明 open util/ordering[S](忽略效率和混淆原子命名问题)?

很抱歉对此回复缓慢。这不是很清楚,是吗?这意味着由于对称性破缺,last、prev 和 next 的值是固定的。如果这样做了,并且 elem 独立地绑定到一个小于 elem 的所有可能原子的集合的集合,那么你就会奇怪地违反声明,例如 Ord.last 不在集合中元素。因此,除了:(1) exactly 关键字强制 elem 包含给定范围内的所有原子,以及 (2) 顺序关系是硬连线的,因此原子以 "natural" 顺序出现。