どのようにして関係が周期的であってはならないことを表現することができますか?
-
25-09-2019 - |
質問
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
}
他のヒント
一例では、ダイヤモンドの剣は石の剣をアップグレードして、石剣は木製の剣をアップグレードしますが、ペアWoodSwordは - > DiamondSwordではありません。
あなたの例から、私はupgrades
関係が推移的であることを意図していないことを推測しますupgrades
の関係でます。
だから、何が言いたいことは、
のようなものですfact upgrades_acyclic {
no x : univ | x in x.^upgrades
}
いくつかのモデラーは関係の面でより簡潔製剤を好むます:
fact upgrades_acyclic { no ^upgrades & iden }
所属していません StackOverflow