题
考虑一个upgrades
关系:
我需要确保upgrades
不能是圆形的。我如何能做到这一点的合金?
解决方案
有足以执行传递性和antireflexivity。
fact {
no a: Item | a in a.upgrades
}
fact{
all a,b,c: Item |
a in b.upgrades and b in c.upgrades implies
a in c.upgrades
}
其他提示
这是你的榜样,我推断upgrades
关系并非是传递的:在这个例子中,一个菱形剑升级石头剑和剑石升级一个木剑,但对WoodSword - > DiamondSword不在upgrades
关系。
所以,你想说的是一样的东西。
fact upgrades_acyclic {
no x : univ | x in x.^upgrades
}
一些建模喜欢更简洁形式在关系方面:
fact upgrades_acyclic { no ^upgrades & iden }
不隶属于 StackOverflow