如何表达有效性?

How to express validity?

我正在创建 iCalendar 数据格式的 Alloy 模型。

一个 iCalendar 文件包含属性。属性之间有很多相互依赖关系。我想看看当 属性 被删除时是否有任何中断(即,当 属性 被限制为零出现时)。

我想编写断言并让 Alloy 分析器搜索反例,但我正在为如何编写断言而苦恼。我希望断言像这样说:

If property X is removed (i.e., property X is constrained to zero occurrences), there are no instances that are invalid as a result of removing X.

在伪代码中,我想要这个:

assert NoProblemFilteringX {
    (no prop: X | prop in iCalendar.properties) => all instances are still valid
}

你能提供一些关于制定所需断言的指导吗?

建议:

  1. 将你的依赖性检查写在一个以参数a为参数的谓词中 属性集。如果在参数中给出的属性中满足相互依赖关系,则谓词成立。

  2. 重写您的事实以确保这些相互依赖性,以便使用所有 iCalendar 属性集作为参数调用此谓词。

  3. 在断言中调用此谓词,同时将 iCalendar.properties - X 作为参数