Я пишу простой код Alloy, но я не могу понять, как я могу сказать, что МАКСИМАЛЬНО один A связан с pD (так что МАКСИМАЛЬНО будет единица или ноль). Итак, я написал приведенный ниже код, но утверждение не представляет нет контрпримера с экземпляром P1 без D. Не могли бы вы помочь мне, как я могу определить мой факт с точки зрения наличия МАКСИМАЛЬНО одного экземпляра для p.D, где Я вижу контрпример, что 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