Кажется, вы столкнулись с ошибкой в TLAPM - по крайней мере, в версии для разработки на моей машине. Причина в том, что перевод SMT не улавливает второе предположение. Без ограничения домена ни одно из утверждений не должно быть доказуемым. В качестве исправления я добавил ограничения домена в локальную лемму. Теперь я могу доказать:
LEMMA ASSUME x \in Nat, y \in Nat
PROVE x=y+1 => y < x BY SMT
Еще один способ обойти это на данный момент - назвать именованные предположения, которые вызываются при необходимости:
ASSUME DOM == x \in Nat /\ y \in Nat
LEMMA x=y+1 => y < x BY SMT, DOM
должно пройти. В обоих случаях вы должны добавить EXTENDS TLAPS
в начале вашей спецификации, чтобы включить ключевое слово SMT
.
Я также сообщу об ошибке сопровождающим.
Обновление: похоже, что глобальные предположения, как правило, игнорируются TLAPM (afaik по соображениям производительности). Версия с именованными допущениями является предпочтительным способом.