我正在编写一个简单的合金代码,但我不明白我怎么能说最多一个 A 与 pD 相关联(所以最多是一或零)。所以我写了下面的代码,但断言没有给出没有 D 的 P1 实例的反例。你能帮我吗?我如何定义我的事实,即在最多有一个 pD 实例的情况下,我可以看到一个反例p 与它的 D 没有任何联系。
abstract sig A {}
sig A1,A2,A3 extends A{}
abstract sig P {}
sig P1 extends P {D: A}
fact
{
all p: P1 | lone (p.D & A)
}
assert asr
{no p: P1 | no (p.D & A)}
check asr for 5