【发布时间】:2017-09-05 21:55:08
【问题描述】:
此签名包含两个字段,每个字段都包含一个整数:
sig Test {
a: Int,
b: Int
}
这个谓词包含一系列约束:
pred Show (t: Test) {
t.a = 0
t.b = 1
}
这些约束被隐式地“与”在一起。所以,那个谓词等价于这个谓词:
pred Show (t: Test) {
t.a = 0 and
t.b = 1
}
此断言包含一系列约束,后跟一个蕴涵运算符:
assert ImplicationTest {
all t: Test {
t.a = 0
t.b = 1 => plus[t.a, t.b] = t.b
}
}
但在这种情况下,约束并没有隐式地与在一起。如果我想将它们与在一起,我必须明确地与它们:
assert ImplicationTest {
all t: Test {
t.a = 0 and
t.b = 1 => plus[t.a, t.b] = t.b
}
}
这是为什么?为什么有时一系列约束被隐式地与在一起,而其他时候我必须显式地与约束?
【问题讨论】:
标签: alloy