pred 中的约束顺序是否重要?

Does the order of constraints in a pred matter?

这个pred中约束的顺序重要吗:

pred Example {
   A
   B
   C
}

ABC表示约束。

那个pred和这个pred一样吗:

pred Example {
   B
   A
   C
}

if-then-else 中的约束是否有序?例如,在这个 if-then-else:

中是否排序了 ReadMemoryWriteMemory
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 ...

那句话中的"order"这个词引起了我的注意。因此我的问题。

不,约束的顺序无关紧要。在你提到的例子中

 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") 定义了转换的前和 post 状态。