假设我的模块中有一个与 sig B 相关的 sig A。
现在想象一下,我们有几个实例:
A$1 -> B$1 , A$2 -> B$2
和
A$1 -> B$2 , A$2 -> B$1
我想表示 B$1 和 B$2 是等价的(在某些条件下),因此只会生成这个实例A$1 -> B , A$2 -> B.
一种解决方案可能是在声明 sig B 时使用关键字“one”,但在我的情况下它不起作用,因为 B 有多个字段,使得 B 原子不一定等效。简而言之,只有当它们的字段具有相同的值时,2 个原子才是等价的。
理想情况下,我想删除 B. 的编号,但仍然可以有几个原子 B 。