У меня есть модель сплава, которая должна иметь некоторые правила, такие как
abstract sig country {}
one sig US extends country {}
one sig UK extends country {}
one sig DE extends country {}
one sig CA extends country {}
abstract sig currencyCode {}
one sig USD extends currencyCode {}
one sig GBP extends currencyCode {}
one sig CAD extends currencyCode {}
one sig EUR extends currencyCode {}
abstract sig location {}
one sig NewYork extends location {}
one sig Vancouver extends location {}
one sig London extends location {}
one sig Munich extends location {}
Поэтому я хочу установить правило, чтобы каждый раз, когда экземпляр выбирал США, он также выбирал доллары США и Нью-Йорк. Если он выберет доллар США, он выберет США и Нью-Йорк, что означает, что страна, местоположение и валюта будут сгруппированы вместе. Я попытался использовать следующий факт, чтобы сделать это, но он не работает. Что за недостатки в самом деле и можно ли как-то это сделать?
fact UKRL {
all a: itemType.site,
b: item.country,
c: item.currency,
d: startPrice.currencyId,
e: item.locationLink |
(a in UK) <=> (b in UK) <=> (c in GBP) <=> (d in GBP) <=> (e in London)
}
fact DERL {
all a: itemType.site,
b: item.country,
c: item.currency,
d: startPrice.currencyId,
e: item.locationLink |
(a in DE) <=> (b in DE) <=> (c in EUR) <=> (d in EUR) <=> (e in Munich)
}