【发布时间】:2017-03-23 12:50:48
【问题描述】:
对任何新手错误表示歉意 - 这是我第一次在这里发帖。
我不确定这是否是一个错误,或者是 Alloy 类型检查中某些微妙之处的结果。在下面的示例中,我希望谓词“奇怪”是不一致的,因为 B 和 C 是不相交的集合。但是,Alloy(4.2 版)声称可以找到谓词的模型。它显示的模型看起来不对。例如,有一个模型只包含一个原子 B$0,标记为见证 $strange_a。在这个模型中,Evaluator 告诉我 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
【问题讨论】:
标签: alloy