0
道歉的任何新手錯誤 - 這是我第一次在這裏發佈。Alloy在謂詞謂詞檢查中可能不一致的行爲?
我不確定這是一個錯誤,還是Alloy合金類型檢測中某些微妙的結果。在下面的例子中,我認爲謂詞「奇怪」是不一致的,因爲B和C是不相交的集合。但是,Alloy(版本4.2)聲稱可以找到謂詞的模型。它顯示的模型看起來不對。例如,有一個模型只包含一個原子B $ 0,標記爲證人$ strange_a。在這個模型中,評估者告訴我isB [B $ 0]爲真,並且isC [B $ 0]給我一個類型錯誤,如預期的那樣。然而,奇怪的[B $ 0]評估爲真。我使用的合金代碼是:
abstract sig A {}
sig B, C extends A {}
pred isB [b:B] { }
pred isC [c:C] { }
pred strange [a:A] {isB[a] and isC[a]}
run strange
謝謝您的及時回覆和有益的解釋,丹尼爾。在我的課堂上,我必須留意這一點,因爲它引起了一些混亂。 –