abstract sig S {}
one sig S1, S2 in S {}
fact {S1 != S2}
run {-1 < S1.(S2 -> 1)}
Iインスタンスを開くと、Iは、評価者から合金の奇妙な行動?
integers={-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7}
univ={-1, -2, -3, -4, -5, -6, -7, -8, 0, 1, 2, 3, 4, 5, 6, 7, S$0, S$1}
Int={-1, -2, -3, -4, -5, -6, -7, -8, 0, 1, 2, 3, 4, 5, 6, 7}
seq/Int={0, 1, 2, 3}
String={}
none={}
this/S={S$0, S$1}
this/S1={S$1}
this/S2={S$0}
を得
(1)S1(S2 - > 1)。({}
に評価2)none = S1(S2→1)が真と評価される
(3)-1 < S1(S2→1)が真と評価される理由 は空のセットよりも大きいですか?
(4)-1 <何もタイプエラーが発生しません。//これはうまく見えますが、(3)を与える理由、 これはタイプエラーですか?
(5)0 < = S1(S2-> 1)に評価真
(6)0> = S1(S2-> 1)に評価真
(7)0 = S1(S2→1)が偽に評価される//(5)(6)が与えられた場合、 S1(S2→1)は0と評価されますが、そうではありません。 (9)0 < =いずれも型エラーを与えない
(8)0 =なしが偽
に評価//(8)(9) "=" 整数比較として解釈されないような興味深いものに見えます。
(1) - (9)の原因は誰でも説明できますか?バグはありますか?