
- •В.А.Таланов
- •Учебное пособие
- •Часть 1. Язык предикатов
- •1.1. Предварительные сведения
- •1.2. Синтаксис языка предикатов
- •1.3. Интерпретация формул логического языка первого порядка
- •1.4. Способы задания и подсчет числа структур на конечных универсумах
- •1.5. Исключающие кванторы
- •Часть 2. Логический вывод и элементарные теории
- •2.1 Логический вывод
- •2.2 Канонические формы предложений
- •2.3 Моделирование математических теорий
- •2.4 Примеры формализации математических теорий Теория групп
- •Теория отношения эквивалентности
- •Теория упорядоченных множеств
- •Теория полей
- •Теория упорядоченных полей
- •Евклидова планарная геометрия
- •2.5. Свойства элементарных теорий
- •2.6. Арифметика Пресбургера
- •2.7 Некоторые замечания о возможностях формализации математических теорий
- •2.8 Расширение элементарных теорий
- •Часть 3. Приближенное выражение свойств структур в логических языках
- •3.1 Доля выполнимости логических формул
- •3.2 Разрешимость свойства асимптотической истины в логике первого порядка
- •3.3 О приближенной выразимости свойств структур в логических языках.
- •Упражнения
- •Часть 4. Реляционный язык
- •4.1 Синтаксис реляционного языка
- •Определение терма
- •Определение формулы
- •4.2 Семантика реляционного языка
- •4.3 Система доказательств в реляционном языке
- •Часть 5. Модели вычислений
- •5.1 Исторические сведения
- •5.2 Тьюрингова модель переработки информации
- •5.3 Алгебра программ
- •5.4 Начальное математическое обеспечение.
- •5.5 Методика доказательства правильности алгоритмов с помощью индуктивных утверждений.
- •5.6. Вычислимость и разрешимость
- •5.7 Частично – рекурсивные функции.
- •5.8. Универсальная тьюрингова программа
- •5.9. Пример невычислимой функции
- •5.10. Об измерении алгоритмической сложности задач
- •Литература
- •Математическая логика и модели вычислений
- •603600, Г. Нижний Новгород, пр. Гагарина, 23
5.3 Алгебра программ
Для записи программ в виде аналитических выражений введем обозначения для некоторых элементарных программ и операций, позволяющие строить из элементарных программ более сложные.
Элементарными вычисляющими программами будем называть программы вида
Error: Reference source not found
обозначать их будем соответственно символами r, l, s, a, где a Ã.
Программы, у которых множество выходов разбито на два непустых подмножества (подмножество да–выходов и подмножество нет–выходов) назовем бинарными распознающими программами.
Элементарными распознающими программами будем считать программы вида
Error: Reference source not found
обозначать такую программу будем через <a>.
Правила композиции. Введем несколько правил, которые позволят нам из уже построенных программ строить более сложные.
Если T1, T2, …., Tk – программы, то выражение [T1, T2, …., Tk] обозначает программу, которая получена следующим образом. Все выходы программы Ti соединены дугой с входом программы Ti+1 (i = 1,2,…,k-1), каждая такая дуга помечена буквами из Ã, которые не использованы на других дугах, выходящих из рассматриваемой выходной вершины (в дальнейшем при соединении выходов одной программы с входом другой будем пользоваться этим правилом). Входом в полученную программу является вход программы T1, а выходами – выходы программ Tk. Таким образом, программа [T1, T2, …., Tk] предписывает последовательное выполнение программ T1, T2, …., Tk.
Если Р – бинарная распознающая программа, а Т – произвольная, то выражение
(если P) T
означает программу, полученную следующим образом. Все да-выходы программа Р соединяются с входом программы Т. Входом в полученную программу является вход в программу Р, а выходом – выходы программы Т и нет-выходы программы Р. Программы такого вида называются охраняемыми и говорят в таких случаях, что программа Т охраняется программой Р.
Error: Reference source not found
Если дан набор охраняемых программ, вида: (если Pi)Ti, (i = 1, 2 …., k) то выражение вида
(если P1)T1
…
(если
Pk)Tk
обозначает программу, полученную следующим образом. да-выходы программы Pi соединяются с входом Ti (i = 1, 2, …., k). нет–выходы программы Pi соединяются с входом Pi+1. Входом в полученную программу является вход в программу Pi, а выходами – выходы программы T1, T2, …., Tk и нет-выходы программы Pk.
Error: Reference source not found
Если Р – бинарная распознающая программа, а Т – любая, то выражение
(пока P)T
обозначает программу, полученную следующим образом. Да-выходы программы Р соединяются с входом программы Т. Все выходы программы Т соединены с входом в Р. Входом в полученную программу является вход в Р, а выходами нет-выходы программы Р.
Error: Reference source not found
Если Р – бинарная распознающая программа, а Т – любая, то выражение
T(до P)
обозначает программу, полученную соединением нет-выходов программы Р с входом в Т, а выходов Т – с входом в Р. Входом в полученную программу является вход в Т, а выходами – да-выходы программы Р.
Error: Reference source not found
Сокращения: Программы вида T1
T2
…
Tk
будем сокращенно записывать в виде
Ti,
а программы вида [T1, T2, …., Tk]
в случае, если T1 = T2 =….= Tk
– в виде Tk.
В контексте со словами “если”,
”пока”, ”до” угловые скобки
в записи элементарного распознающего
оператора <a> будем
опускать.