私には2つのクラスがA
あり、それらB
のクラスの追加データとの関係がありR
ます。
したがって、A
とB
はを介して相互に関連付けられていR
ます。
sig A {}
sig B {}
sig R {
a : A,
b : B,
data : Bool
}
ここで、Boolは次のように定義されます。
sig Bool {}
sig True, False extends Bool {}
今、私はA
このように拡張します:
sig A{
allb : some B
}
これには、これとそれB
の間に関係があり、データがタイプであるすべてのインスタンスが含まれます。A
B
True
次の論理ステートメントをAlloyファクトとして表現したいと思います。
(ソース:dropproxy.com)
ここでTrue == 1
、とは、とのすべてのインスタンスをそれぞれセットし、含むとFalse != 1
仮定A
します。R
A
R
私がこれまでに試したことは、fun trueR(a : A)
すべてR
の'を返す必要があるR.a = a and r.data = True
aとfact allbIsRTrue
、それぞれに対して。によって返される'のA
allb
合計である必要があることを示すaを定義することです。R.b
trueR
ただし、ここで行き詰まり、参照内のセットを合計するための適切な構成が見つからず、試行するとsum
構文エラーが発生します。
正式な制約をAlloyファクトとして指定するにはどうすればよいですか?