2

関係を考えてみましょうupgrades

不完全な注文関係

upgrades私はそれが循環できないことを確認する必要があります。どうすればAlloyでそれを行うことができますか?

4

2 に答える 2

2

推移性と反反射性を強制するだけで十分です。

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
}
于 2010-11-19T10:02:28.330 に答える
2

あなたの例から、関係は推移的であることを意図していないと推測しますupgrades。この例では、ダイヤモンドの剣は石の剣をアップグレードし、石の剣は木製の剣をアップグレードしますが、WoodSword->DiamondSwordのペアはupgrades関係にありません。

だからあなたが言いたいのは

fact upgrades_acyclic {
  no x : univ | x in x.^upgrades
}

一部のモデラーは、関係の観点からより簡潔な定式化を好みます。

fact upgrades_acyclic { no ^upgrades & iden }
于 2012-08-16T18:34:40.257 に答える