Jane Street: будущее программирования — формальные методы, а команда, запретившая JSON, доказала это на Lean 4

Аргумент Jane Street: пока ИИ заливает кодовые базы кодом, который не вычитает ни один человек, математическое доказательство становится новой единицей доверия. В треде инженер рассказал, как запретил Python и JSON, переписал Nix в компилятор и выпускает доказательства на Lean 4 рядом с фаззерами, а ветеран, занимавшийся доказательством корректности десятилетия назад, предупредил: ловушка — слишком полюбить сам формализм.

Вкратце

Jane Street доказывает: ценность программирования смещается от написания кода к его проверке. Когда GenAI выдаёт десятки тысяч строк, которые никто не вычитает, формальные спецификации и доказательства становятся доступным способом быть уверенным. Промышленная линия — OxCaml, seL4, Dafny и TLA+.

Реверс-инженер указал на оговорку: seL4 формально верифицирован, но всё равно выходил с мерзкими багами. Глубже трещину вскрыл комментатор, который пробует годами: формальная спецификация — это «та же реализация, записанная иначе», и она может нести тот же баг.

Почему трейдинговая фирма считает, что доказательства вот-вот станут важны всем

Прувер OxCaml
Прувер OxCaml

Эссе Jane Street (196 голосов, 73 комментария) делает конкретную ставку на то, куда движется программирование. Фирма ведёт огромные кодовые базы на OCaml, где код реализует детерминированные алгоритмы, так что отображение спецификации в поведение близко к 1:1 — ровно та местность, где формальные методы окупаются. Их довод обобщает это: пока генеративный ИИ выдаёт больше кода, чем кто-либо способен вычитать, дефицитный человеческий навык смещается от написания кода к его спецификации и проверке. Пост обозревает их собственные наработки — прувер OxCaml плюс более широкую промышленную родословную seL4, Dafny, TLA+ и Iris — как свидетельство того, что доказательство переходит из академии в боевой софт.

Последовавший тред был необычно квалифицированным: бывший исследователь доказательства корректности, пользователи Lean и Coq и инженеры, гоняющие эти инструменты по выводу LLM прямо сейчас.

«seL4 верифицирован — и всё равно имел мерзкие баги»

Первую оговорку дал реверс-инженер, проколов прочтение «серебряной пули»:

«seL4, несмотря на формальную верификацию, содержал мерзкие баги… Так что это не серебряная пуля, как думают некоторые. Да, качество растёт, но это лишь один из аспектов укрепления софта — наряду с ASAN, SAST, фаззингом…» — xvilka, реверс-инженер

Другой читатель уточнил, куда на деле смещается риск: спецификация seL4 написана на Isabelle и сама по себе сложна, поэтому «критически важно быть уверенным в спецификации». Верификация не убирает сомнение: она перемещает его с кода на спецификацию.

Возражение, которое практик носит в себе годами

Самую глубокую трещину вскрыл тот, кто кружит вокруг темы и всё время отскакивает:

«Когда я читаю про формальные спецификации, мне всегда кажется, будто это „напиши те же тесты, только иначе“ или, хуже того, „напиши ту же реализацию, только иначе“… Не отпускает чувство, что я что-то упускаю». — brap, который изучает это с перерывами уже годы

Читатель с 2,9k кармы укрепил границу: дедуктивное рассуждение помогает лишь там, где постулаты подходят под предметную область. «Jane Street ведёт большие массивы кода, где отображение 1:1… Но миллионы из нас — нет: большинство интерфейсов, большинство поисковой работы». Вот невысказанная оговорка ко всему тезису Jane Street.

Инженер, запретивший JSON, — и ветеран, предупредивший о ловушке

Затем пришёл уверовавший, описавший рабочее место, доведшее идею до предела:

«Мы запретили всё от JSON до Python, переписали nix, чтобы он имел компилятор, и почти всё, что мы пишем, не только проходит property-тесты и многократный фаззинг… но у нас есть доказательства на lean4, которые как минимум управляют property-тестами через линковку .olean…» — reinitctxoffset

Против этого максимализма больше всего веса было у John Nagle, который занимался доказательством корректности десятилетия назад. Его предупреждение — изнутри дисциплины, а не снаружи:

«С формальными методами обычно шло не так то, что занимавшиеся ими слишком увлекались самим формализмом».

Он отметил, что в его старых системах автоматизации доказательств было больше, чем во многих более поздних — упроститель Оппена-Нельсона и прувер Бойера-Мура, — а трудной человеческой работой было подсказывать правильные леммы. Именно это и начинают делать LLM.

Поворот сюжета с ИИ: ChatGPT закрывает доказательства, которые не смог эксперт

Живой разворот в том, что инструментарий, который описывает Jane Street, прямо по ходу эссе меняет та же волна ИИ, что его и мотивирует. Читатель с реальным опытом в предметной области рассказал, что передовые модели завершают ручные доказательства быстрее, чем он сам:

«ChatGPT часто доказывает за минуты и 10–100 итераций то, на что у меня — человека с ограниченным, но ненулевым опытом в proof assistant и со значительным предметным опытом в доказываемых леммах — ушло бы гораздо, гораздо больше времени». — addaon

Математик выбрал Lean 4 вместо OCaml для текущих исследований именно потому, что LLM теперь помогают писать Lean, назвав его языком, на фоне которого «OCaml читается как староанглийский», — и мягко намекнул, что Jane Street тоже стоило бы туда мигрировать. Другие рассказывали, что продавливают строгие типы в Scala 3, чтобы нести доказательства на этапе компиляции и не давать ИИ-агентам «скатываться в режимы пониже качеством».

Так что настоящая форма спора не «формальные методы — да или нет». А в том, что ИИ одновременно создаёт проблему (невычитываемый код) и растворяет исторический затор (доказательства были слишком дороги в написании). Если модель умеет поставлять леммы, что раньше были узким местом, то спецификация остаётся единственным, что человеку нужно сделать правильно. И, как предупреждали голоса про seL4, спецификация теперь и есть место, где спрячется каждый оставшийся баг.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 20 из 27 Читать дальше
🚀Tech

Ваш EPUB проходит все валидаторы. Kobo всё равно его не открывает. Виноват код из 2013-го

Книга Андре Кляйна прошла epubcheck без замечаний, а потом молча упала на Kobo. Виновата одна строка: `max-width: min(150px, 30vw)` — корректный CSS, который движок Adobe, замороженный примерно в 2013 году, просто не умеет читать.

★ 177 · 💬 68 · andreklein.net · 5 мин