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

В хеш входит контракт, но не доказательство — у теоремы свой адрес

Ответ на вопрос, которого нет в литературе по адресации по содержимому.

Как у Unison: в хеш входит тело плюс объявленный тип. Документация и тесты — нет, у них свои адреса и ссылка на функцию.

Что из этого следует для flang. У нас у функции есть больше, чем тело и тип: постусловие, объявленная мера убывает, теоремы. Разделять надо так:

Красивое следствие, которое даёт эта схема. Если два разных адреса вычисляют одно и то же, это можно доказать и записать теоремой — отдельным объектом, связывающим два адреса. То есть «эти две функции равны» становится таким же гражданином базы, как сама функция.

Самое опасное место — не теоремы. У flang есть вещи, о которых легко не подумать при хешировании: четыре поверхности языка (одна и та же функция, записанная русскими и английскими словами, — одна функция или разные?), пределы шагов, объявленные коды отказов.

Связано: names-not-hashes, hash-inside-names-outside, content-addressing