
- •1. Язык логики высказываний. Простые высказывания, сложные высказывания, логические связки. Роль связок в естественном языке.
- •2. Синтаксис языка логики высказываний: алфавит и правила построения формул. Семантика языка логики высказываний, интерпретация формул.
- •3. Свойства формул: общезначимость, выполнимость, противоречивость, опровержимость.
- •4. Основные схемы логически правильных рассуждений.
- •5. Основные тавтологии, выражающие свойства логических операций.
- •6. Основные правила получения тавтологий.
- •7. Логическая равносильность формул. Алгоритм проверки логической равносильности формул. Свойства отношения равносильности на множестве формул. Равносильные преобразования.
- •8. Логическое следование формул. Логические следствия и посылки. Алгоритм проверки формул на логическое следование. Признаки логического следствия. Два свойства логического следования.
- •9. Следование и равносильность формул.
- •10. Нахождение следствия для данных посылок.
- •11. Нахождение посылок для данного следствия.
- •12. Алгебра логики. Функции алгебры логики. K-значные логики.
- •13. Способы задания функций алгебры логики. Единичные и нулевые наборы функций алгебры логики. Фиктивные (несущественные) переменные.
- •14. Бинарные функции алгебры логики.
- •15. Суперпозиции и формулы. Глубина формулы. Способы записи формул.
- •16. Эквивалентные формулы. Способы установления эквивалентности формул.
- •17. Полнота и замкнутость системы функций. Функционально полные базисы. Классы Поста. Теорема Поста о полноте системы булевых функций.
- •18. Булева алгебра логических операций. Основные эквивалентные соотношения (законы) в булевой алгебре.
- •19. Разложение функций по переменным. Совершенная дизъюнктивная нормальная форма.
- •20. Днф, сднф, кнф, скнф. Процедуры приведения к днф и кнф.
- •2 1. Двойственность.
- •22. Алгебра Вебба, алгебра Шеффера, импликативная алгебра, коимпликативная алгебра, алгебра Жегалкина.
- •23. Полиномы Жегалкина. Процедуры приведения к пнф.
- •24. Конечно-значные логики: алгебра Вебба, алгебра Поста, алгебра Россера–Тьюкетта.
- •25. Исчисление высказываний как формальная система, множественность аксиоматизаций. Проблема выводимости. Прямой вывод.
- •26. Теорема дедукции. Связь выводимости и истинности формул в логике высказываний. Выполнимые и общезначимые формулы.
- •27. Понятие логического следования, принцип дедукции. Правило резолюций, метод резолюций. Стратегии метода резолюций.
- •29. Алгоритм построения резолюций для множества фраз Хорна.
- •30. Свойства формализованного счисления высказываний.
- •31. Предикат. Предикаты и отношения. Предикаты и функции. Предикаты и высказывания.
- •32. Синтаксис языка логики предикатов: алфавит, термы, атомы, правила построения формул.
- •33. Кванторные операции. Свободные и связанные вхождения переменных. Логический квадрат.
- •34. Численные кванторы. Ограниченные кванторы.
- •35. Множество истинности предикатов. Равносильность и следование предикатов.
- •37. Приведенная нормальная форма. Процедура получения приведенной нормальной формы.
- •38. Предваренная нормальная форма. Процедура получения предваренной нормальной формы.
- •39. Проблема разрешимости для общезначимости и выполнимости формул логики предикатов. Теорема Черча. Частные случаи.
- •40. Методы доказательства в логике предикатов.
- •41. Исчисление предикатов как формальная система. Формальный вывод в исчислении предикатов. Правило переименования свободных переменных. Правило переименования связанных переменных.
- •42. Выводимость и истинность в логике предикатов. Эквивалентные преобразования.
- •43. Предваренная, сколемовская и клаузальная формы. Алгоритм получения клаузальной формы.
- •45. Принцип логического программирования.
- •46. Применение логики предикатов в логико-математической практике.
- •47. Классификация высказываний по Аристотелю.
- •48. Методы рассуждений. Аристотелева силлогистика. Теоретико-множественная интерпретация аристотелевой силлогистики
- •49. Принцип полной дизъюнкции в предикатной форме
- •50. Метод (полной) математической индукции.
- •51. Необходимые и достаточные условия
- •52. Понятия формальной системы и формального вывода. Аксиоматическая (формальная) теория и принципы ее построения.
- •53. Вывод и выводимость в формальной теории. Разрешимые и неразрешимые формулы. Доказательство и доказуемость. Теорема формальной теории.
- •54. Основные свойства формальных систем: непротиворечивость, полнота, разрешимость. Полнота и непротиворечивость исчисления высказываний. Полнота и непротиворечивость исчисления предикатов.
- •55. Прикладные исчисления предикатов. Формальная арифметика. Теорема Генцена о непротиворечивости формальной арифметики.
- •56. Теоремы о неполноте формальных систем, смысл и значение теорем Геделя для практической информатики.
- •57. Неклассические логики.
- •58. Интуиционистская логика.
- •59. Нечеткая логика.
- •60. Модальные логики. Типы модальностей.
- •61. Временные логики. Приложение временных логик к программированию.
- •62. Алгоритмические логики. Принципы построения алгоритмической логики. Алгоритмическая логика Хоара.
- •63. Многозначные логики. Трёхзначная логика я.Лукасевича. M-значная логика э.Поста.
- •64. Предпосылки возникновения теории алгоритмов. Основные требования к алгоритмам. Подходы к уточнению понятия «алгоритм». Три основных типа универсальных алгоритмических моделей.
- •65. Машина Тьюринга. Конфигурация машины Тьюринга. Функция, правильно вычислимая по Тьюрингу. Эквивалентные машины Тьюринга. Композиция машин Тьюринга.
- •66. Вычисление предикатов на машине Тьюринга.
- •67. Универсальная машина Тьюринга. План построения универсальной машины Тьюринга.
- •68. Тезис Тьюринга.
- •69. Проблема остановки как пример алгоритмически неразрешимых проблем.
- •70. Машина Поста.
- •71. Рекурсивные функции. Примитивно-рекурсивные функции. Примитивно-рекурсивные операторы. Частично-рекурсивные функции. Тезис Черча.
- •72. Нормальные алгорифмы Маркова. Нормально вычислимые функции и принцип нормализации Маркова.
- •73. Вычислимость и разрешимость. Нумерация алгоритмов. Алгоритмически разрешимые и неразрешимые задачи. Проблема остановки, проблема самоприменимости, проблема пустой ленты.
- •74. Требование результативности и теория алгоритмов.
- •75. Разрешимые и перечислимые множества. Связь между разрешимостью и перечислимостью множеств. Теорема Райса.
- •76. Сложность алгоритмов. Меры сложности алгоритмов. Сложность задачи. Массовые и индивидуальные задачи.
- •77. Асимптотическая сложность, порядок сложности. Сложность в среднем и в худшем случае.
- •78. Трудоемкость алгоритмов. Классификация алгоритмов по виду функции трудоёмкости
- •79. Методики перехода к временным оценкам трудоёмкости алгоритмов. Пооперационный анализ. Метод Гиббсона. Метод прямого определения среднего времени.
- •1) Пооперационный анализ
- •2) Метод Гиббсона
- •3) Метод прямого определения среднего времени
- •80. Сложность и кодирование. Сложность и архитектура машины.
- •81. Полиномиальный алгоритм. Легко- и трудноразрешимые задачи, классы задач p и np.
- •82. Полиномиальная сводимость и np-полнота. Np-полные задачи. Примеры np-полных задач. Теорема Кука. Примеры практически значимых np-полных задач.
61. Временные логики. Приложение временных логик к программированию.
Временные логики — модальные логики. Они строятся добавлением к логике высказываний новых законов, отражающих свойства времени.
Пусть
— программа,
— высказывание, относящееся к
входным данным, которое должно быть
истинно перед выполнением программы
,
и
— высказывание,
которое должно быть истинно после
выполнения программы
.
— предусловие, — постусловие программы .
Программа
называется частично правильной по
отношению к
и
,
если всякий раз, когда предусловие
истинно перед выполнением
и
заканчивает работу, постусловие
будет также истинно. В этом случае
используется запись
.
Программа
называется тотально правильной по
отношению к
и
,
если она частично правильна по отношению
к
и
,
и обязательно завершает работу, если
истинно. В этом случае используется
запись
.
Предусловие и постусловие связаны с конкретной задачей, которую требуется решить и для решения которой написана программа . Нужно доказать, что она правильна.
Проверка того, что программа действительно выполняет задачи, для решения которых она создавалась, - это задачи тестирования и верификации программы.
Для решения задачи верификации программы используются временные логики.
Основные идеи приложения временных логик к программированию сводятся к следующим двум положениям:
описание программ. С помощью языка временной логики, специализированного особым образом, выразить свойства программ, характеризующих их правильное вычислительное поведение.
верификация программ. Использовать аппарат формальной теории временной логики для доказательства того, что данная программа обладает интересующим нас свойством.
62
62. Алгоритмические логики. Принципы построения алгоритмической логики. Алгоритмическая логика Хоара.
Алгоритмические
логики создавались с целью описания
семантики языков программирования.
Алгоритмические логики включают
высказывания вида
,
читающиеся как «если до выполнения
оператора S было выполнено
,
то после него будет
».
Опишем
принципы построения алгоритмической
логики
.
Память в разделена на ячейки. Каждая ячейка имеет идентификатор, представляющий собой слово из латинских букв и цифр и начинающийся с буквы. Ячейки содержат натуральные числа.
Программа в состоит из операторов. Исходный оператор – присваивание х := е, где х – идентификатор, а е – выражение, составленное из идентификаторов и натуральных чисел.
Пусть
состояние памяти после присваивания
удовлетворяет условию А(х), где А –
формула формальной арифметики. Тогда
состояние, которое было до присвоения,
опишем формулой А(х|е). иначе говоря,
имеем высказывание
.
Пусть
два оператора
,
выполняются один за другим. Тогда этому
соответствует логическая запись вида
.
Условный оператор – это конструкция
IF
FI,
где
…
-
логические выражения, построенные из
отношений
при
помощи логических связок;
— последовательность операторов.
Проверяются формулы
при настоящем состоянии памяти. Если
ни одна из
не истина, то фиксируется ошибка. Если
же некоторые
истинны, то выбирается одна из них
(неважно как) и выполняется последовательность
операторов
.
Если
каждая из команд
описана в логике
как
,
то условный оператор описывается
логической формулой
IF
FI{B}.
Циклам отвечает конструкция
DO
OUT
OD.
Выполняется
оператор цикла следующим образом.
Проверяются формулы
при
настоящем состоянии памяти. Если ни
одна из них не истинна, то фиксируется
ошибка. Если же некоторые истинны, то
выбирается одна из них (неважно как).
Если выбрана
,
то выполняется соответствующая
последовательность операторов
и выполнение цикла возобновляется.
Если выбрана
,
то выполняется соответствующая
последовательность операторов
и выполнение цикла завершается.
Е
сли
каждая из команд
описана в логике
как
,
а
как
,
то однократное выполнение цикла
описывается логической формулой
├
и
т.д. до бесконечности. Условие правильности
k шагов цикла обозначим
через
.
Цикл корректен, если
Но это бесконечно длинная формула. Она не является формулой языка . Появление таких формул — серьезная проблема для алгоритмических логик.
Основой для логики вывода правильных программ служат аксиомы Хоара (правила верификации). Они допускают интерпретации в терминах программных конструкций.
Сформулируем аксиомы Хоара, которые определяют предусловия как достаточные условия, гарантирующие, что исполнение соответствующего оператора при успешном завершении приведет к желаемым постусловиям.
1. аксиома присваивания: {k(х|е)}х := е{k}
2.
3.
4.
5.
правило для условного оператора (краткая
форма)
6.
правило для условного оператора (краткая
форма)
7.
предусловия и постусловия цикла until
(до) удовлетворяют правилу:
63, 64