我正在使用 Key ( https://www.key-project.org ) 进行教学项目。
一方面,我很高兴 Key 很容易证明以下带 jml 注释的 java 代码的正确性
/*@ ensures ((\result == a) || (\result == b));
@ ensures ((\result >= a) && (\result >= b));
*/
public int max(int a, int b) {
if(a <= b)
return b;
else
return a;
}
但另一方面,令人惊讶的是,我无法证明以下等效程序的正确性
/*@ ensures ((\result == a) || (\result == b));
@ ensures ((\result >= a) && (\result >= b));
*/
public int max(int a, int b) {
return (a <= b) ? b : a;
}
有人知道我是否遗漏了什么吗?