我应该在 Alloy "submodules" 内留下痕迹吗

Should I have traces within Alloy "submodules"

这是一个"best practices"问题,而不是关于语言本身的问题。

我正在按照软件抽象一书中的建议将我的项目分解成模块。我的大模型的每一小块都有签名、事实和谓词,在它们自己的单独文件中。我已将它们正确地包含在我的 "main file" 中。

对于一些较小的模块,我发现通过在该级别添加走线对 "prove out" 设计很有用。痕迹只是事实,所以当我 运行 我在主文件中创建的痕迹时,我得到奇怪的结果("two time steps at once",等等)。

我看到两个选项(在其中一个之后我可以完成我的主文件跟踪):

  1. 注释掉"sub modules"
  2. 中的痕迹
  3. 减少 "sub module" 跟踪的限制,以允许 nothing 发生的选项

这些看起来正确吗?或者这通常有不同的做法吗?

我在使用 Alloy 时发现的最好的事情之一是不使用事实而是使用谓词。您可以控制哪些谓词在 运行 或断言中处于活动状态。您始终可以组合谓词,因此不会带来太多不便。