考虑一个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 }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top