flang компилятор доказывает, что программа не зациклится 0.6.2 GitHub

Отвергнутая теорема заслоняет прямой путь: пока она стоит, ядро считает её, а не сводит цель с телом

Если при утверждении написана теорема, ядро идёт по ней. Не сошлась — вердикта нет, и путь «сведение цели с телом функции», которым то же утверждение закрывается БЕЗ теоремы, не пробуется вовсе.

Отсюда механическое правило, дешевле любой правки ядра: прежде чем чинить ядро, снимите теорему и спросите ядро заново.

Чем подтверждено, числом. Замер двадцати функций (docs/benchmark2), ветка vypusk/dvadcat. Из пяти файлов, закрытых за работу, ЧЕТЫРЕ закрылись снятием теоремы — правки ядра для них не понадобилось совсем:

Чем ограничено. Речь про случай, когда теорема ОТВЕРГНУТА. Принятая теорема ничего не заслоняет, а даёт вердикт сама.

Связано: auto-induction-on-match-closes-nine, left-fold-gives-no-list-induction