2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Пруфчекинг
Сообщение21.07.2024, 19:21 
Заслуженный участник
Аватара пользователя


15/10/08
30/12/24
12599
Гм... А что по этому поводу говорит Кальтенбруннер ChatGPT?

 Профиль  
                  
 
 Re: Пруфчекинг
Сообщение27.07.2024, 18:34 
Заслуженный участник


31/12/15
945
Желая понять, как устроен Coq внутри (какая в нём теория типов, как делается проверка типизации и т.д.), читаю свежую статью авторитетов
https://inria.hal.science/hal-04077552/document
и оттуда узнал, что в Coq (программе Coq на языке Ocaml) каждый год находят критические уязвимости (наподобие "забыли где-то написать подстановку"), в результате опытный пользователь может написать доказательство лжи, которое Coq одобрит как правильное. Авторитеты пытаются сам алгоритм Coq формализовать и доказать, что он правильно работает.

 Профиль  
                  
 
 Re: Пруфчекинг
Сообщение27.07.2024, 19:07 


10/03/16
4444
Aeroport
george66, a "четыре краски" cock доказал, или последний всего лишь пруфчекер? Могут ли найтись уязвимости в индуцирующей машинное доказательство системе?

 Профиль  
                  
 
 Re: Пруфчекинг
Сообщение27.07.2024, 19:42 
Заслуженный участник


31/12/15
945
ozheredov в сообщении #1647569 писал(а):
george66, a "четыре краски" cock доказал, или последний всего лишь пруфчекер? Могут ли найтись уязвимости в индуцирующей машинное доказательство системе?

Coq позволяет строить доказательства полуавтоматически. Пользователь даёт руководящие указания ("тактики"). Например, я пишу
induction m.
Это значит "попробуй индукцию по m". Coq выдаёт два утверждения ("цели"), которые надо доказать: базис индукции и шаг индукции, я их доказываю по очереди (на самом деле можно и не по по очереди, а в любом порядке). Допустим, я вижу, что базис уже доказан раньше в виде Lemma 1, я пишу
apply Lemma1.
одна цель пропадает, кусочек доказательства добавляется. Тактики - это программки на языке Ocaml, тактика применяется к существующему на данный момент доказательству и набору целей и выдаёт новый набор целей и новое доказательство. Тактики могут содержать ошибки, но Coq всегда проверяет законченное доказательство ещё раз, поэтому ошибки в тактиках быстро становятся видны.

 Профиль  
                  
 
 Re: Пруфчекинг
Сообщение27.07.2024, 20:32 
Заслуженный участник
Аватара пользователя


15/10/08
30/12/24
12599
george66 в сообщении #1647566 писал(а):
в Coq (программе Coq на языке Ocaml) каждый год находят критические уязвимости (наподобие "забыли где-то написать подстановку")
Это символично, господа! Поскольку Coq, очевидно, не способен проверить сам себя, то напрашивается целая иерархия "проверяторов".

 Профиль  
                  
 
 Re: Пруфчекинг
Сообщение27.07.2024, 20:51 


10/03/16
4444
Aeroport
Утундрий в сообщении #1647574 писал(а):
Поскольку Coq, очевидно, не способен проверить сам себя, то напрашивается целая иерархия "проверяторов"


Притом, по-видимому, бесконечная.

 Профиль  
                  
 
 Re: Пруфчекинг
Сообщение27.07.2024, 23:25 
Заслуженный участник
Аватара пользователя


15/10/08
30/12/24
12599
ozheredov в сообщении #1647576 писал(а):
Притом, по-видимому, бесконечная.
Это если george66 не поведётся на мой "продуманный" развод и не сочинит селфпруфчекер.

 Профиль  
                  
 
 Re: Пруфчекинг
Сообщение12.10.2024, 10:53 
Заслуженный участник


31/12/15
945
Формализовал свою теорему в Coq, получилось 1600 строк (за вычетом пустых и комментариев)
https://www.mediafire.com/file/kxhk8yo5 ... /99.v/file
(файл можно смотреть любым текстовым редактором, но лучше поставить Coq).
Теорема доказывает, что обычная подстановка действительно соответствует подстановке де Брёйна. Краткое содержание первых 200 строк.
В самом начале строчки

Parameter Var : Set.
Parameter eq_dec : forall (x y : Var), {x=y}+{x<>y}.

Они говорят "возьмём произвольное множество Var (содержательно, это множество переменных) с разрешимым равенством (по любым переменным x,y можно эффективно проверить, совпадают они или нет)". Далее идёт
1) Определение типа данных Lam (лямбда-термы) и предиката isfresh x M, который проверяет, что переменная x не входит свободно в терм M ("свежая для M"). Также определяется предикат isfresh_forall x L, который проверяет, что переменная x не входит свободно ни в какой терм из списка L. Пишутся строчки

Parameter fresh : forall (L : list Lam), Var.
Axiom freshness : forall (L : list Lam), isfresh_forall (fresh L) L = true.

которые утверждают, что есть функция fresh, которая по любому списку термов L выдаёт переменную, свежую для них всех (это понадобится при определении подстановки).
2) Определение типа данных dB (лямбда-термы де Брёйна). Определение вспомогательной функции index, которая находит номер первого вхождения переменной в список переменных (и выдаёт 0, если её там нет). Определение функции transfer, которая по списку переменных Gamma и лямбда-терму M выдаёт соответствующий терм де Брёйна. Все эти определения стандартные.
3) Определение одновременной подстановки M [N0/x0, N1/x1 ... Nk/xk]
4) Определение аналогичной подстановки де Брёйна M' [N'0, N'1, ... N'k]
Чтобы понять, о каких "\uparrow" и "\Uparrow" идёт речь, надо скачать несколько статей по явной подстановке (начиная с вот этой
https://inria.hal.science/file/index/do ... R-2477.pdf
достаточно понять страницы 6-9, но это тоже не совсем легко)
5) Формулировка основной теоремы:
для любого списка переменных Gamma, лямбда-терма M и подстановки [N0/x0,...,Nk/xk]
если список переменных подстановки x0,...,xk не содержит повторений (иначе определение подстановки неправильно работает), то
transfer (Gamma, M [N0/x0,...,Nk/xk]) = M'[N'0,...,N'k]
где
M' = transfer ([x0,...,xk]++Gamma, M)
N'0 = transfer (Gamma, N0)
...
N'k = transfer (Gamma, Nk)

Доказательства, записанные в Coq, не предназначены для чтения человеком, так что можно просто посмотреть "как это выглядит всерьёз".

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group