LINUX.ORG.RU

Coq 8.5

 ,


3

7

Тихо и незаметно вышла новая версия системы интерактивного доказательства теорем Coq (Петух).

Система Coq предоставляет язык Gallina (Курица) — функциональный язык с зависимыми типами, основанный на исчислении индуктивных конструкций. Особенностью данной системы является наличие особого подъязыка тактик доказательства (в отличии от, например, Агды, в которой пользователь конструирует элемент типа, являющийся доказательством, в явном виде с использованием интерактивного интерфейса, основанного на Emacs).

Coq используется как собственно в математике, так и для так называемого сертифицированного программирования — написания программ вместе с доказательством их корректности.

Основные новшества в версии 8.5:

  • асинхронное редактирование документов в CoqIDE, позволяющее работать с текущим доказательством, в то время как Coq проверяет другие доказательства в фоне;
  • полиморфизм относительно универсумов, позволяющий использовать одни и те же определения для универсумов разного уровня;
  • примитивные проекции, улучшающие временную и пространственную эффективность для записей и добавляющие для них эта-конверсию;
  • новый движок тактик;
  • новая процедура редукции native_compute, позволяющая вычислять термы, используя нативный компилятор OCaml'а;
  • новый быстрый режим компиляции, пропускающий проверку доказательств;
  • новая опция -type-in-type, позволяющая объединять иерархию типов в один универсум (делает логику несогласованной, но упрощает эксперименты);
  • заметное улучшение эффективности в целом.

>>> Новость

anonymous

Проверено: maxcom ()
Последнее исправление: Wizard_ (всего исправлений: 2)

Ответ на: комментарий от anonymous

Это мне больше не надо теоремы вручную доказывать?

В Википеди написано, что:
«Позволяет записывать математические теоремы и их доказательства, удобно модифицировать их, проверяет их на правильность». Coq — помошник. Если бы он сам доказывал (страшно представить), сколько бы ленивых школьников его использовали бы? Школота пусть вручную делает всё.

anonymous
()

Внезапно. Лор - торт. Отличная новость!

AVL2 ★★★★★
()

Я правильно понял, что эта система жабоподобна? Не хотелось бы лишних сущностей, ветвь в джаве уже есть все.

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

Школота пусть вручную делает всё.

а что, разве в школе доказывают теоремы сами вручную ?
я помню, что только запоминать надо было )

x905 ★★★★★
()
Ответ на: комментарий от jtootf

показательный пример - унивалентные основания Воеводского

Ну есть же и реализация на Агде. )

anonymous
()
Ответ на: комментарий от anonymous

это аксиома, зачем её доказывать?

Для верификации системы интерактивного доказательства теорем Coq: теорему о курице и яйце невозможно доказать без петуха :)

quickquest ★★★★★
()
Ответ на: комментарий от Manhunt

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

devsdc ★★
()
Ответ на: комментарий от quickquest

вот вот, аксиоматика вопроса о яйце и курице не полна без петуха, мы только что с вами решили многовековой спор!

anonymous
()
Ответ на: комментарий от anonymous

вот вот, аксиоматика вопроса о яйце и курице не полна без петуха, мы только что с вами решили многовековой спор!

Шнобелевская премия — гарантирована! :)

quickquest ★★★★★
()

Интересная вещь, я вот даже как-то и не знал о таком. Надо будет почитать на досуге поподробнее. Воистину ЛОР образовательный.

Hasek ★★
()
Ответ на: комментарий от devsdc

Результат, например, может применяться там, где цена ошибки просто зашкаливает, какой-нибудь серьёзный эмбеддед типа авиации.

В каком конкретно модуле какого конкретно самолета работает этот «результат»?

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от Manhunt

На тему этого у меня никакой инфы и пруфов нет. Находил только когда-то какую-то релейтед презенташку (про compcert, кажется) с общими словами, но без конкретики. Сейчас что-то не гуглится.

devsdc ★★
()
Ответ на: комментарий от AVL2

Почему ты ругаешься?

Он не ругается, а просто хочет для себя уточнить. Мне, например, этот вопрос тоже интересен.

Не осилил джаву?

Проблема джавы в том, что спустя 20 лет существования языка, никто так и не смог создать надежную среду для исполнения джава-программ. Имеющиеся реализации настолько убоги, что даже в броузерах джава по умолчанию выключена.

Manhunt ★★★★★
()
Ответ на: комментарий от devsdc

На тему этого у меня никакой инфы и пруфов нет. Находил только когда-то какую-то релейтед презенташку (про compcert, кажется) с общими словами, но без конкретики.

Без конкретики это похоже не на реальность, а на чьи-то влажные фантазии (типа, «вот было бы хорошо, чтобы в молочных реках с кисельными берегами тёк борщ»).

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Да я не спорю.

Поискал ещё, нашёл вот это вот. Сама организация предлагает различные коммерческие лицензии всяких анализаторов для эмбеддеда, в success story рассказывает про, например, Airbus A380 и прочие вещи. При этом они ещё (среди достаточно малого списка продуктов, надо заметить) предлагают коммерческую лицензию того же CompCert, но в success stories его нигде нет. Возможно, из-за того, что его туда добавили только недавно (википедия говорит, что только в 2015), и через какое-то время и про него появятся success stories. Пруф, конечно, так себе, но по крайней мере CompCert стоит в одном списке с реально использующимися утилитами (да и на title page тоже) не последней организации в критичном эмбеддед.

И что-то я сомневаюсь, что более конкретные пруфы прям так можно найти, не пообщавшись с участниками проекта лично, раз их на официальном сайте нет.

Может, кто ещё что-нибудь знает, я только CompCert-ом интересовался.

devsdc ★★
()
Ответ на: комментарий от ymn

Единственное, что написано про Coq: «Other theorem provers such as ACL2, Coq and PVS have also been used for verification in this area.» Не густо.

Но в целом преза интересная, спасибо!

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Dassault Aviation has put formal methods into industrial practice, especially formal specification and verification of safety critical embedded software. Our group investigated theorem proving techniques based on typed lambda calculi, using the Coq proof tool.

http://www.cse.chalmers.se/research/group/logic/Types/allsites-in-html/node8....

http://www.dassault-aviation.com

ymn ★★★★★
()
Ответ на: комментарий от Manhunt

Не густо.

Это да. Слишком уж специфическая область применения, ну и затраты на разработку овер9000, так что про успешное использования proof assistant на реддите не пишут.

ymn ★★★★★
()
Ответ на: комментарий от devsdc

Даже если сам CompCert внтури себя почти верифицирован (на самом деле верифицированы фантазии авторов clight, поскольку формального описания семантики для Си тупо не существует, и на этом «верификацию» компиляторов Си можно заканчивать), на конечных устройствах работать будет не CompCert, а на наговняканная на Си прошивка (скомпилированная CompCert-ом).

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от x905

Школота пусть вручную делает всё.

а что, разве в школе доказывают теоремы сами вручную ?

я помню, что только запоминать надо было )

Выпускник быдло-школы? Знаешь, что такое решить «столбиком»?

anonymous
()
Ответ на: комментарий от ymn

Нет, не видел. Спасибо за ссылку, очень любопытно. Прогресс впечатляет, но...

http://robbertkrebbers.nl/research/thesis.pdf

Since the C11 standard is written in English instead of a mathematically precise formalism, it is impossible to obtain an exact correspondence between CH2O and the standard text. Even worse, as we will show in Chapter 2, we have found conflicts in the standard text that would make a mathematical formalization inconsistent.


Эта формальная спецификация — всего лишь фантазия её авторов, путь и основанная на неформальном понимании авторами неформального англоязычного текста Стандарта. Вот ржачный фрагмент: «We have carefully studied the standard text, defect reports, and the behaviors of widely used C compilers. The formal definitions in this thesis are motivated by references to the standard text, and by contemplating example program. .... We have tested ... on a small test suit» Она почти наверняка содержит огромную массу несоответствий Стандарту (внесенную благодаря человеческому фактору на этапе чтения и трактования Стандарта). Поэтому быть спецификацией семантики языка Си она не может.

Собственно, из нынешней патовой ситуации есть только один выход: чтобы долбаный Си получил формальную семантику, Коммитет должен одну из формальных семантик попросту взять и утвердить, возвести её в ранг закона и стандарта ISO.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от ymn

Кстати, раз уж тебя волнуют компиляторы из Си. Ты про Rust слышал? Соль rust в том, что он вынуждает программиста писать код, доступный для автоматической верификации на предмет memory safety и data races safety.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

раз уж тебя волнуют компиляторы из Си

Не, меня волнуют формальные методы и их использование для анализа программ.

Ты про Rust слышал?

Да, но мне его пока негде применять. Для своих задач выбрал OCaml.

ymn ★★★★★
()
Ответ на: комментарий от anonymous

Выпускник быдло-школы?

обычной средней школы

Знаешь, что такое решить «столбиком»?

чтото было, но уже забыл, никогда не использовал

x905 ★★★★★
()
Ответ на: комментарий от Manhunt

Я просто трезво смотрю на вещи.

Джава совершенна. Запас прочности её архитектуры ещё далеко не исчерпан, а ведь прошел уже не один десять лет! Это больше похоже на божий дар с сопутствующими чудесами, явлениями, нежели на ЯП и сухие стандарты с рекомендациями кодинга.

А вот виртуальные машины, программисты, одмины и пользователи нет. Это простые люди и продукты, созданные ими же.

Поэтому вопрос простой. Осилил ты джаву или нет? Ругаешься, значит не осилил...

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Джава совершенна.

Вот в этом ты прав. Совершенство её настолько ослепительно и непостижимо, что этот полный изъянов мир оказался её недостоин. Только в ынтырпрайзной индусопомойке и прижилась... =)

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от Manhunt

Вот ты ругаешь джаву, а ведь когда её придумали, никакой окамл никому и в нос не вперся. Или вот это проект по доказательству теорем или кода. Это ж не фортран! И ты в новости об этих удивительных вещах, которые спустя много лет влились как родные и прекрасно уживаются в теле джавы ругаешь её? Ты адекватен?

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Если тебе кажется, что я ругаю джаву, то ты заблуждаешься. Во-первых, она достаточно уверенно занимает свою нишу. А во-вторых, de mortuis nil nisi bene :D

Manhunt ★★★★★
()
Ответ на: комментарий от AVL2

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

Ясно, ты неадекват. Какое отношение Coq имеет к Яве? Иди-ка отсюда, петушок, а?

anonymous
()

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

В принципе насколько я думал, dependent types в теории должны позволять писать в духе динамически типизированного кода с манкипатчингом и evalами, но с гарантией корректности. Но в реальности выходит, что они в любом случае мешают программисту выражать свои мысли. В смысле компилятор всегда оказывается тупее, чем ожидаешь, ну или введены слишком жесткие ограничения для гарантий всяких, например гарантии того, что тайпчекинг завершится за конечное время. Взять те же юниверсумы, в агде постоянно приходиться таскать с собой параметром его номер, чтоб код работал кросюниверсно. Ну вроде как в сабже как раз ввели полиморфизм на это, надо проверить. В общем на практике следует выбирать один из 2 подходов: 1 - идти путем языка Cayenne, тоесть подгонять DT под нужды практики или 2 - писать на динамически типизируемом языке, а потом отдельно от программы строить теоремы и доказывать/проверять доказательства с помощью отдельных программ, напоминающих по поведению ИИ (с евристиками, тонной тактик и возможностью выяснять у юзера непонятные моменты). В то время как чистые теоретические DT языки имеют смысл только для исследований и как прототипы (источники идей) для реальных систем верификации.

q0tw4 ★★★★
()
Ответ на: комментарий от Manhunt

Ты так говоришь, будто сказанное тобой должно резко сделать CompCert ненужным. На баги оптимизирующих компиляторов никогда не натыкался?

Олсо, всё подряд верифицировать слишком затратно. Ясен пень, что напрямую прошивки никто не будет писать на всяких Coq. Потому на данный момент это имеет смысл в тех проектах, в которых находить ошибки весьма нетривиально (те же компиляторы, например).

И да, трансляция трансляцией (с формальными описаниями языков, между которыми трансляция происходит, и правда может быть грустно), а вот то, что оптимизации внутреннего представления кода в CompCert формально доказано сохраняют семантику — это хорошо.

devsdc ★★
()

Программеры на жабе кыш отсюда!

anonymous
()
Ответ на: комментарий от Manhunt

Ты сам себе противоречить. То она у тебя уверенно занимает свою нишу, то мертва .

AVL2 ★★★★★
()

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

ados ★★★★★
()
Последнее исправление: ados (всего исправлений: 2)
Ответ на: комментарий от ymn

Кстати, мне вот интересно, а для чего применяет Coq лично господин Александр Карпич из Челябинска? Я вот математикой балуюсь, тут все ясно. А Вы? Зачем Coq ведущему программисту на Эрланге? ) Или это для аспирантуры?

anonymous
()
Ответ на: комментарий от devsdc

Ты так говоришь, будто сказанное тобой должно резко сделать CompCert ненужным. На баги оптимизирующих компиляторов никогда не натыкался?

По моим подсчетам, на каждый на практике помешавший моей команде баг в gcc, приходится никак не меньше 1000 серьезных багов в коде, который в этот gcc скармливали. Так что абсолютно непогрешимый компилятор Си сам по себе качественной разницы не сделает.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 3)

В слово «Питух» закралась опечатка. Исправьте, пожалуйста.

anonymous
()
Ответ на: комментарий от makoven

Простой от него толк. Как обычно, окодемики гранты пилят. Если ты не окодемег и грантов тебе не светит, то язык тебе не нужен.

anonymous
()
Ответ на: комментарий от AVL2

А вот виртуальные машины, программисты, одмины и пользователи нет. Это простые люди и продукты, созданные ими же.

Не плачь, все уже исправили. Не нужно виртуальных машин, написаных на убогих плюсах. Есть JVM на Java: https://en.wikipedia.org/wiki/Jikes_RVM

Ну и по теме: http://krakatoa.lri.fr/

anonymous
()
Ответ на: комментарий от anonymous

видимо будет Egg (Яйцо)

Фи как пошло. Надо по-испански - Huevo

Хуево, хуево — как прекрасен испанский язык.

anonymous
()
Ответ на: комментарий от Manhunt

формального описания семантики для Си тупо не существует

Вот еще, правда хз, насколько это помогает в верификации.

http://fsl.cs.illinois.edu/index.php/An_Executable_Formal_Semantics_of_C_with...

А вообще, недавно натыкался на ругань, что даже препроцессор в стандарте описан неоднозначно, и Комитет на это кладет. В результате препроцессоры gcc и clang в сложных случаях дают семантически разный результат.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.