此pred
中约束的顺序是否重要:
pred Example {
A
B
C
}
A
,B
,C
代表约束。
pred
是否与此pred
相同:
pred Example {
B
A
C
}
if-then-else中的约束是否有序?例如,在此if-then-else中排序ReadMemory
和WriteMemory
:
pred Example {
{
ReadMemory
WriteMemory
} implies C else D
}
以下是我的问题的动机:Software Abstractions的第222页,This assertion says that if a read, write, load, and read are performed in that order, then ...
该句中的“命令”一词引起了我的注意。因此我的问题。
答案 0 :(得分:3)
不,约束顺序无关紧要。在你提到的例子中
assert LoadNotObservable {
all c, c’, c“: CacheSystem, a1, a2: Addr, d1, d2, d3: Data |
{read [c, a2, d2]
write [c, c’, a1, d1]
load [c’, c”]
read [c“, a2, d3]
} implies d3 = (a1 = a2 => d1 else d2) }
是定义转换的前置和后置状态的参数(c,c',c“)。