Вызов моей собственной функции в предикате в Why3
В последней версии Why3 (1.0.0), когда я пытаюсь сделать что-то вроде следующего:
let add_one (n: int) : int = n+1
predicate is_successor_of (n: int) (m: int) = m = add_one n
Я получаю сообщение об ошибке в форме: файл "../something.why", строка x, символы yz: несвязанный символ add_one. Я делаю что-то неправильно? Большинство примеров кода WhyML, которые я видел, на самом деле используют только встроенные / стандартные библиотечные функции, но вызывают другие предикаты, определенные в том же файле. Нет ли аналогичного способа вызова функций, которые я определил в том же файле при определении предиката?
1 ответ
Маркировка оригинала add_one
определение функции как чистое, с function
Ключевое слово, кажется, делает свое дело. Это имеет смысл, поскольку побочные эффекты не должны быть допустимыми в предикатах.