Вызов моей собственной функции в предикате в 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 Ключевое слово, кажется, делает свое дело. Это имеет смысл, поскольку побочные эффекты не должны быть допустимыми в предикатах.

Другие вопросы по тегам