JML: Как определить требование массива с полумесяцами? - PullRequest
1 голос
/ 16 октября 2010

Я хочу сделать это в JML:

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

Я не мог заставить это работать, видел много примеров в спецификациях JML, но не мог найти способ, как это сделать.

Итак, как мне это сделать?

1 Ответ

1 голос
/ 23 марта 2011

Одним из способов является «защита» от бессмысленных значений массива с использованием импликации:

  (\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) - выражение диапазона.

...