我注意到Alloy的比较运算符的优先级遵循以下顺序:
我工作的一个项目定义了两个谓词 mySyn 和语义,以通过以下这些签名( myNotEquals , myEquals 和 myGreaterThan )分别基于Alloy的比较运算符(!= , = 和> )。这些扩展了 BExp 抽象签名。
我想问两个问题(为简化起见,我使用 ... 符号省略了一些代码):
mySyn谓词:
pred mySyn[...] {
...
, Semantics[evalC, evalB, evalA]
...
}
语义谓词:
pred Semantics[ ...] {
...
, evalB: BExp -> (State -> Bit)
...
}
计算布尔表达式
all b: myEquals, s: State | aritmethicExpr1[s] = aritmethicExpr2[s] implies evalB[b][s] = BitTrue else evalB[b][s] = BitFalse
all b: myNotEquals, s: State | aritmethicExpr1[s] != aritmethicExpr2[s] implies evalB[b][s] = BitTrue else evalB[b][s] = BitFalse
all b: myGreaterThan, s: State | aritmethicExpr1[s] > aritmethicExpr2[s] implies evalB[b][s] = BitTrue else evalB[b][s] = BitFalse
谢谢您的帮助:)