我有一个合金模型,它需要有一些规则,比如
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 {}
所以我想设置一个规则,这样每当实例选择美国时,它也会选择美元和纽约。如果它选择 USD,那么它将选择 US 和 NewYork,这意味着国家、地点和货币将被组合在一起。我试图使用以下事实来做到这一点,但它不起作用。事实有什么缺陷,有什么办法吗?
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)
}