Size: a a a

Compiler Development

2020 March 16

p

polunin.ai in Compiler Development
Михаил Бахтерев
Вон Compcert компилируется, а ошибки в нём до сих пор находят.
Ну гарантию что ты не совершишь ошибку тебе никто не даёт. Просто ее шанс минимизируется.
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
>тесты делают то же самое
Нет, тесты подтверждают правильное поведение программы только на определенных входных данных. А здесь мы можем быть уверены что если теорема написана правильно, то программа будет работать на всех входных данных.
>А какой смысл писать ...
Перестраховка. Написал два раза, и можешь быть уверен что если программа скомпилировалось, то ты не поставил там по пьяни другой знак. Ну или ты совершил одинаковую ошибку в коде и пруве, но я не знаю кем нужно быть чтобы такое совершить.
>Чтобы я видел что здесь можно вызвать undefined
В нормальных языках с сильной системой типов нет undefined
>Недавно фигачил в марафонском режиме...
Можешь не использовать прувы. Но в таком случае практически всегда в программе будут баги, так как тесты не могут покрыть весь код и все возможные варианты данных.
Тем не менее, они покрывают. Я могу доказать в конкретно своём случае, что из корректности на предоставленных тестах следует корректность на любом тесте (конечно, с учётом синтаксиса алгоритма). Я думаю, в общем случае, это какое-то следствие PCP-теоремы, если алгоритм достаточно "гладкий", допустим, в терминах информационных систем Скотта, то его можно гарантированно тестить малыми объёмами тестов.
источник

EM

Evgenii Moiseenko in Compiler Development
polunin.ai
Ну гарантию что ты не совершишь ошибку тебе никто не даёт. Просто ее шанс минимизируется.
А вы сами пробовали что-нибудь нетривиальное в coq, agda, f* или idris формализовать?
источник

p

polunin.ai in Compiler Development
Evgenii Moiseenko
А вы сами пробовали что-нибудь нетривиальное в coq, agda, f* или idris формализовать?
Нетривиальное пока нет
источник

EM

Evgenii Moiseenko in Compiler Development
polunin.ai
Нетривиальное пока нет
Ну так попробуйте, кажется после этого ваш энтузиазм слегка поубавится)
источник

EM

Evgenii Moiseenko in Compiler Development
Фраза про "на одну строчку кода приходится 50 строк доказательств" не просто так появилась)
источник

AT

Anton Trunov in Compiler Development
Evgenii Moiseenko
Фраза про "на одну строчку кода приходится 50 строк доказательств" не просто так появилась)
Ну, это преувеличение. От 5 до 10 строчек ;)
источник

EM

Evgenii Moiseenko in Compiler Development
Anton Trunov
Ну, это преувеличение. От 5 до 10 строчек ;)
Хз, вроде в докладах часто мелькает именно число 50, хотя это конечно число навскидку))
источник

МБ

Михаил Бахтерев in Compiler Development
А я верно понимаю, что из всей этой DARPA-тройки: Fortress, X10, Chapel выжил только Chapel, X10 забросили, а Fortress разобрали по кусочкам в Scala и Julia? Такое ощущение.
источник

AT

Anton Trunov in Compiler Development
Evgenii Moiseenko
Хз, вроде в докладах часто мелькает именно число 50, хотя это конечно число навскидку))
Это если одну тактику на строке писать ;)
Надо сказать, что 5 строк доказательств на одну строку кода — это такой уровень, над которым приходится трудиться изо всех сил.
источник

λ

λoλdog in Compiler Development
Anton Trunov
Это если одну тактику на строке писать ;)
Надо сказать, что 5 строк доказательств на одну строку кода — это такой уровень, над которым приходится трудиться изо всех сил.
Обычно на одну строку кода ноль строк доказательств?
источник

AT

Anton Trunov in Compiler Development
λoλdog
Обычно на одну строку кода ноль строк доказательств?
Да
источник

МБ

Михаил Бахтерев in Compiler Development
Anton Trunov
Это если одну тактику на строке писать ;)
Надо сказать, что 5 строк доказательств на одну строку кода — это такой уровень, над которым приходится трудиться изо всех сил.
Вот и вопрос: а должен ли я заставлять своего пользователя трудиться над этим? Оно понятное дело, что дело очень интересное. Но вот есть у меня друг - биолог, ему важнее пересчитать варианты (забыл научное название) кусочков форм вирусов уже сейчас, потому как через год уже будет другой штамм гриппа...

А я вот не понимаю, есть ли вообще надежда, что когда-нибудь с типами будет легко и просто доказываться всё. А ещё лучше, будут ли завтипы выводится? Или это вообще невозможный вариант?
источник

AT

Anton Trunov in Compiler Development
Михаил Бахтерев
Тем не менее, они покрывают. Я могу доказать в конкретно своём случае, что из корректности на предоставленных тестах следует корректность на любом тесте (конечно, с учётом синтаксиса алгоритма). Я думаю, в общем случае, это какое-то следствие PCP-теоремы, если алгоритм достаточно "гладкий", допустим, в терминах информационных систем Скотта, то его можно гарантированно тестить малыми объёмами тестов.
А есть какие-то работы по этому поводу? Я часто об этом задумываюсь
источник

AT

Anton Trunov in Compiler Development
Михаил Бахтерев
Вот и вопрос: а должен ли я заставлять своего пользователя трудиться над этим? Оно понятное дело, что дело очень интересное. Но вот есть у меня друг - биолог, ему важнее пересчитать варианты (забыл научное название) кусочков форм вирусов уже сейчас, потому как через год уже будет другой штамм гриппа...

А я вот не понимаю, есть ли вообще надежда, что когда-нибудь с типами будет легко и просто доказываться всё. А ещё лучше, будут ли завтипы выводится? Или это вообще невозможный вариант?
завтипы точно не будут выводиться)
но лучше уже становится, хотя мы все еще в каменном веке теорем пруверов
источник

AT

Anton Trunov in Compiler Development
К предыдущему вопросу -- ограниченные тесты + параметричность кажутся неплохой связкой
источник

МБ

Михаил Бахтерев in Compiler Development
А в каком направлении становится лучше? Может, есть обзор какой-нибудь того, куда всё движется?
источник

EM

Evgenii Moiseenko in Compiler Development
Михаил Бахтерев
А в каком направлении становится лучше? Может, есть обзор какой-нибудь того, куда всё движется?
Одно из направлений, прикручивать автоматические теорем пруверы (smt, datalog, etc), для того чтобы генерировать простые доказательства
источник

EM

Evgenii Moiseenko in Compiler Development
Можно посмотреть на статьи по f*
источник

AT

Anton Trunov in Compiler Development
Михаил Бахтерев
А в каком направлении становится лучше? Может, есть обзор какой-нибудь того, куда всё движется?
есть свежий обзор, но особо про перспективу там не было, кажется -- QED at Large: A Survey of Engineering of Formally Verified Software - T. Ringer, K. Palmskog, I. Sergey, M. Gligoric, Z. Tatlock(2019)
источник