【发布时间】:2017-04-11 03:17:26
【问题描述】:
下面的合金谓词 p 有一个参数 t 声明为 S 类型的单例。调用 run p 给出正确的结果,因为谓词主体声明 t 可能包含两个不同的元素 s 和 s'。然而,在第二个run 命令中,一组S 类型的两个不相交元素被传递到谓词p 中,并且该命令给出了一个实例。为什么会这样?
sig S {}
pred p(t: one S) {
some s, s': t | s != s'
}
r1: run p -- no instance found
r2: run { -- instance found
some disj s0, s1: S {
S = s0 + s1
p[S]
}
}
【问题讨论】:
标签: alloy