Alloy: allの意味がわからない
Alloyのallの意味がよくわからない。
enum X {A, B, C} check { all r: X{ one r } }
これは反例が見つからない。つまり「all r: X {foo}」は「すべての集合Xの 要素 についてfooが成立する」なわけだ。
しかし、このXをX -> Xに置き換えてみると挙動が違う。
enum X {A, B, C} check { all r: X -> X{ one r } }
これは反例がたくさん見つかる。つまり「all r: X -> X {foo}」は「すべての『XからXへの写像の集合』の部分集合についてfooが成立する」なわけだ。
最初はX -> Xが集合の集合になってるのかと思ったけども、そういうわけでもなく関係(2要素のタプル)の入った集合にすぎない。じゃあ集合の中に関係が入っているのか単なる値が入っているのかによってallの挙動が変わるということ??