预测中约束的顺序是否重要?

时间:2017-08-04 13:34:05

标签: alloy

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 ...

该句中的“命令”一词引起了我的注意。因此我的问题。

1 个答案:

答案 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“)。