JML: Как указать требование массива с элементами полумесяца?

StackOverflow https://stackoverflow.com/questions/3946545

  •  08-10-2019
  •  | 
  •  

Вопрос

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

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

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

Итак, как я могу это сделать?

Это было полезно?

Решение

Один из способов - «охрана» против ноннесных значений массива, используя подразумевание:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top