- •Функции и графы
- •Вычислимость и разрешимость
- •Программы и схемы программ
- •Базис класса стандартных схем программ
- •Графовая форма стандартной схемы
- •Линейная форма стандартной схемы
- •Интерпретация стандартных схем программ
- •Эквивалентность, тотальность, пустота, свобода
- •Свободные интерпретации
- •Согласованные свободные интерпретации
- •Логико-термальная эквивалентность
- •Одноленточные автоматы
- •Многоленточные автоматы
- •Двухголовочные автоматы
- •1.4.3.1. Проблемы пустоты и эквивалентности.
- •1.4.3.2. Двоичный двухголовочный автомат
- •1.4.3.3. Построение схемы, моделирующей автомат
- •Рекурсивное программирование
- •Определение рекурсивной схемы
- •Трансляция обогащенных схем
- •О сравнении классов схем
- •Схемы с процедурами
- •Классы обогащенных схем
- •Трансляция обогащенных схем
- •Структурированные схемы
- •Описание смысла программ
- •Операционная семантика
- •Аксиоматическая семантика
- •2.1.2.1. Краткое введение в исчисление высказываний
- •2.1.2.2. Преобразователь предикатов
- •2.1.2.3. Аксиоматическое определение операторов языка программирования в терминах wp.
- •Денотационная семантика
- •Декларативная семантика
- •Методы доказательства правильности программ
- •Использование высказываний в программах
- •Правила верификации к. Хоара
- •Определения
- •Реализация процессов
- •Протоколы
- •Операции над протоколами
- •Протоколы процесса
- •Спецификации
- •Взаимодействие
- •Параллелизм
- •Задача об обедающих философах
- •I.Встаёт праваЯi).
- •Помеченные процессы
- •Множественная пометка
- •Ввод и вывод
- •Взаимодействия
- •Подчинение
- •Поочередное использование
- •Общая память
- •Кратные ресурсы
- •Планирование ресурсов
- •Основные понятия
- •Многопоточная обработка
- •Условные критические участки
- •Мониторы
- •Instanсе ракетa: счет; р.
- •Обмен сообщениями
- •Параллелизм данных
- •Модель общей памяти
- •Теоретико-множественное определение сетей Петри
- •Графы сетей Петри
- •Маркировка сетей Петри
- •Правила выполнения сетей Петри
- •События и условия
- •Одновременность и конфликт
- •Моделирование параллельных систем взаимодействующих процессов
- •Свойства сетей Петри
- •Методы анализа
Трансляция обогащенных схем
Диаграмма на рис. 1.12. дает полную информацию о возможности трансляции одного класса схем в другой, классы имеют следующие обозначения:
Y— стандартные схемы;Y(М) — магазинные схемы;
Y(R) — рекурсивные схемы;Y(А) — схемы с массивами;
Y(с) — счетчиковые схемы;Y(P) — схемы с процедурами.
Диаграмма показывает, что классы Y(М) иY(А) являются универсальными в том смысле, что схемы всех других классов транслируемы в них. В то же время, в классYне транслируются схемы ни одного другого класса. Следует отметить, что классY(с) достигает полной мощности при количестве счетчиков не менее 2, т.е. классY(с) с одним счетчиком равномощен классуY.
Структурированные схемы
Возрастающая сложность программ привлекает все большее внимание к проблемам технологии программирования. Технологические соображения заставили, в первую очередь, пересмотреть принципы организации программ, их структуру. Дейкстра первым высказался против неупорядоченного использования переходов на метки, которое может привести и фактически приводит к переусложнению структуры программы, затрудняющему ее понимание и декомпозицию на более простые фрагменты. Реализуя концепцию так называемого структурированного программирования, он предложил, отказаться от использования переходов и ограничиться более дисциплинирующими средствами управления вычислениями, такими, как условные операторы и операторы цикла.
Класс cтруктурированных схемY(S) определяется в том же (полном) базисеВ, который был введен для ССПY.
Различие между YиY(S) проявляется на уровне структур схем. Вместо специальных символовYвводятся специальные символы:if , then, else, while, do, end. Вместо инструкций с метками вводятся три типасхемных операторав базисеВ: простой оператор, условный оператор и оператор цикла.
Простой оператор— это начальный (заключительный) оператор и оператор присваивания.
Условный оператор— это оператор вида
if then1else0end,
где — логическое выражение,1,0— последовательности (может быть, пустые) операторов, среди которых нет ни начального, ни заключительного.
Операторы циклаимеют вид
whiledo end или until do end,
где ,имеют тот же смысл, что и выше.
Ниже приведен пример эквивалентных схем YиY(S).
Стандартная схема программ Y |
Структурированная схема программ Y(S) |
start(х), 1: y := f(x), 2: ifp(y) then7 else 3, 3: y := f(y), 4: ifp(y) then 5 else 7, 5: ifp(x) then 6 else 7, 6: x := h(x) goto 5, 7: stop(х, y). |
start(х), y := f(x), ifp(y) thenelse y := f(y), ifp(x) then while p(x) do x := h(x) end else end end, stop(х, y). |
Структурированные программы универсальны в том смысле, что набора предоставленных им средств достаточно для описания любой вычислимой функции. Задача автоматического преобразования стандартных схем в структурированные имеет отрицательное решение. Доказано, что класс Yмощнее классаY(S), т.е. схемыY(S) транслируемы вY, но не наоборот.
Усилить класс Y(S) можно за счет усложнения логических выражений в условных операторах и операторах циклаY(SL), введением символов логических операцийNOT,OR,ANDи атомарных формул, которыми являются логические выражения в старом смысле, например:
NOT p(x) AND q(y,x);
p(g(x, t)) OR q(h(x), x).
В этом случае справедлива
Теорема (Ашкрофт - Манн)Класс стандартных схемYтранслируем в класс схем с логическими операциямиY(SL).
Основные выводы и результаты
Вместо понятия правильности программы следует использовать понятие надежности программы.
Тезис Тьюринга:каждая функция, для которой существует алгоритм нахождения ее значений, представима некоторой машиной Тьюринга, т. е. является вычислимой.Теорема Тьюринга: Проблема остановки машины Тьюринга неразрешима. Из приведенных утверждений следует, что существуют вычислимые и невычислимые функции.
ССП позволяет исследовать только структурные свойства программ, интерпретация ССП определяет семантику вычислений.
Протокол выполнения программы – ценное средство отладки программ. Программа останавливается тогда и только тогда, когда протокол ее выполнения конечен. В противном случае программа зацикливается и результат ее выполнения не определен.
Теорема Лакхэма – Парка – Паттерсона:Стандартные схемыS1иS2в базисеВфункционально эквивалентны тогда и только тогда, когда они функционально эквивалентны на множестве всех свободных интерпретаций базисаВ.
Из логико-терминальной эквивалентности следует функциональная эквивалентность. Обратное утверждение не верно.
Для одноленточного конечного автомата доказано, что проблемы пустоты и эквивалентности разрешимы. Для двухголовочнного конечного автомата проблемы пустоты и эквивалентности не являются частично разрешимыми.
По заданному двоичному двухголовочному конечному автомату возможно построить ССП и наоборот, что позволяет решить задачу разрешимости (не разрешимости) свойств ССП.
Теоремы Лакхэма - Парка – Паттерсона:Проблема пустоты, свободы, функциональной эквивалентности стандартных схем не является частично разрешимой. Проблема тотальности стандартных схем частично разрешима.
Вычисление рекурсивной программы может завершиться за конечное число шагов с результатом, равным значению запрограммированной функции для заданных аргументов, но может и продолжаться бесконечно.
Классы ССП транслируемы друг в друга. Теорема Ашкрофта – Манна:Класс стандартных схем транслируем в класс схем с логическими операциями.
СЕМАНТИЧЕСКАЯ ТЕОРИЯ ПРОГРАММ