JML: Как указать требование массива с элементами полумесяца?
-
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)
это выражение диапазона.
Не связан с StackOverflow