Написать программу, которая на вход принимает корректное доказательство утверждения В
в контексте Г, А
,
и перестраивает его в корректное доказательство высказывания A->B
в контексте Г
.
Получение такого доказательства возможно по теореме о дедукции. Для перестроения будем применять алгоритм из её доказательства.
-
Разделить в первой строке контекст и результат по оператору
|-
-
Разделить контекст на гипотезы по
,
-
Сохранить список гипотез и отдельно гипотезу
A
-
Распарсить список схем аксиом, сохранить дерево для каждой
-
Считать строку
D_i
-
Проверить, не содержится ли в строке гипотеза из списка и не соответствует ли строка какой-либо схеме аксиом. Если да, вывести:
D_i
D_i->A->D_i
A->D_i
-
Проверить, является ли строка гипотезой
A
. Если является, вывести:A->(A->A)
A->((A->A)->A)
(A->(A->A))->(A->(A->A)->A)->(A->A)
(A->(A->A)->A)->(A->A)
A->A
-
Проверить, является ли строка результатом MP. Для этого:
- Понять, что ни один другой случай не подходит
Если является, вывести:
(A->D_i)->(A->D_i->D_i)->(A->D_i)
(A->D_i->D_i)->(A->D_i)
A->D_i