JML:如何使用新月元素指定数组的要求?

时间:2010-10-15 22:17:34

标签: java specifications jml

我想在JML中这样做:

//@ requires (\forall int i : array[i] < array[i+1])
void calculatesDistances(int[] array){
 ..
}

我无法使其工作,在JML规范中看到了很多例子,但找不到如何做的方法。

那么,我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

一种方法是使用暗示来“防范”无意义的数组值:

  (\forall int i; (i >= 0 && i < array.length-1) ==> (array[i] < array[i+1]))

使用\forall的更新语法,我相信你也可以写:

  (\forall int i; (i >= 0 && i < array.length-1) ; (array[i] < array[i+1]))

其中(i >= 0 && i < array.length-1)是范围表达式。