
- •Функции и графы
- •Вычислимость и разрешимость
- •Программы и схемы программ
- •Базис класса стандартных схем программ
- •Графовая форма стандартной схемы
- •Линейная форма стандартной схемы
- •Интерпретация стандартных схем программ
- •Эквивалентность, тотальность, пустота, свобода
- •Свободные интерпретации
- •Согласованные свободные интерпретации
- •Логико-термальная эквивалентность
- •Одноленточные автоматы
- •Многоленточные автоматы
- •Двухголовочные автоматы
- •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: счет; р.
- •Обмен сообщениями
- •Параллелизм данных
- •Модель общей памяти
- •Теоретико-множественное определение сетей Петри
- •Графы сетей Петри
- •Маркировка сетей Петри
- •Правила выполнения сетей Петри
- •События и условия
- •Одновременность и конфликт
- •Моделирование параллельных систем взаимодействующих процессов
- •Свойства сетей Петри
- •Методы анализа
Логико-термальная эквивалентность
Отношение эквивалентности Е, заданное на парах стандартных схем, называют корректным, если для любой пары схем S1 и S2 из S1 Е S2 следует, что S1 S2, т. е. S1 и S2 функционально эквивалентны.
Поиск разрешимых корректных отношений эквивалентности представляет значительный интерес с точки зрения практической оптимизации преобразования программ, поскольку в общем виде функциональная эквивалентность стандартных схем алгоритмически неразрешима.
Идея построения таких (корректных и разрешимых) отношений связанна с введением понятия истории цепочки схем. В истории с той или иной степенью детальности фиксируются промежуточные результаты выполнения операторов рассматриваемой цепочки. Эквивалентными объявляются схемы, у которых совпадают множества историй всех конечных цепочек.
Одним из отношений эквивалентности является логико-термальная эквивалентность (ЛТЭ).
Определим термальное значение переменной х для конечного пути w схемы S как терм t(w, x), который строится следующим образом.
1.Если путь w содержит только один оператор А, то: t(w, x) = , если А – оператор присваивания, t(w, x) = х, в остальных случаях.
2.Если w = w’Ае, где А – оператор, е – выходящая из него дуга, w’ – непустой путь, ведущий к А, а x1, …, xn – все переменные терма t(Ае, x), то t(w, x) = t(Ае, x)[t(w’, x1)/x1, …, t(w’, xn)/xn].
Понятие термального значения распространим на произвольные термы :
t(w, x) = [t(w, x1)/x1, …, t(w, xn)/xn].
Например, пути start(х); y:=x; p1(x); x:=f(x); p0(y); y:=x; p1(x); x:=f(x) в схеме на рисунке 1.5, а соответствует термальное значение f(f(x)) переменной х.
Для пути w в стандартной схеме S определим ее логико-термальную историю (ЛТИ) lt(S, w) как слово, которое строится следующим образом.
1.Если путь w не содержит распознавателей и заключительной вершины, то lt(S, w) – пустое слово.
2.Если w = w’vе, где v – распознаватель с тестом p(1, ..., k), а е – выходящая из него Δ-дуга, Δ 0,1, то
lt(S, w) = lt(S, w’) pΔ(t(w’, 1), …, t(w’, k)).
3.Если w = w’v, где v – заключительная вершина с оператором stop(1, ..., k), то lt(S, w) = lt(S, w’) t(w’, 1) … t(w’, k).
Например, логико-термальной историей пути, упомянутого в приведенном выше примере, будет p1(x) p0(x) p1(f(x)).
Детерминантом (обозначение: det(S)) стандартной схемы S называют множество ЛТИ всех ее цепочек, завершающихся заключительным оператором.
Схемы S1 и S2 называют ЛТЭ (лт - эквивалентными) S1 ЛТ S2, если их детерминанты совпадают.
Приведем
без доказательства следующие утверждение:
Логико-терминальная эквивалентность корректна, т. е. из ЛТЭ следует функциональная эквивалентность (S1 ЛТ S2 S1 S2). Обратное утверждение как видно из рисунка 1.5 не верно.
ЛТ – эквивалентность допускает меньше сохраняющих ее преобразований, чем функциональная эквивалентность.
Моделирование стандартных схем программ
Одноленточные автоматы
Конечный одноленточный (детерминированный, односторонний) автомат обнаруживают ряд полезных качеств, используемых в теории схем программ для установления разрешимости свойств ССП.
Одноленточный конечный автомат (ОКА) над алфавитом V задается набором: A = {V, Q, R, q0, #, I} и правилом функционирования, общим для всех таких автоматов. В наборе А:
V - алфавит;
Q - конечное непустое множество состояний (Q V=);
R - множество выделенных заключительных состояний (R Q);
q0 - выделенное начальное состояние;
I - программа автомата;
# - «пустой» символ.
П
рограмма
автомата I представляет собой
множество команд вида qа
q',
в которой q,q'
Q,
a
V
и для любой пары (q, a) существует
единственная команда, начинающаяся
этими символами.
Неформально ОКА можно представить как абстрактную машину, похожую на машину Тьюринга, но имеющую следующие особенности:
1) выделены заключительные состояния;
2) машина считывает символы с ленты, ничего не записывая на нее;
3) на каждом шаге головка автомата, считав символ с ленты и перейдя согласно программе в новое состояние, обязательно передвигается вправо на одну клетку;
4) автомат останавливается в том и только в том случае, когда головка достигнет конца слова, т.е. символа .
Говорят, что автомат допускает слово в алфавите V, если, начав работать с лентой, содержащей это слово, он останавливается в заключительном состоянии. Автомат A задает характеристическую функцию множества MA допускаемых им слов в алфавите V, т. е. он распознает, принадлежит ли заданное слово множеству MA если связать с остановкой в заключительном состоянии символ 1, а с остановкой в незаключительном состоянии – 0.
Наглядным способом задания ОКА служат графы автоматов. Автомат А представляется графом, множество вершин которого – множество состояний Q, и из вершины q в вершину q’ ведет дуга, помеченная символом а, тогда и только тогда, когда программа автомата содержит командуqа q'. Работе автомата над заданным словом соответствует путь из начальной вершины q. Последовательность проходимых вершин этого пути – это последовательность принимаемых автоматом состояний, образ пути по дугам – читаемое слово. Любой путь в графе автомата, начинающийся в вершине q0 и заканчивающийся в вершине q R, порождает слово, допустимое автоматом.
Пример 1.2. ОКА A = ({a, b}, {q0, q1, q2, q3}, {q2}, q0, , I), допускающего слова {an bm | n = 1,2, ...; m = 1,2, ...}, задается графом (рисунок 1.6.). Программа I содержит команды:
q0a q1; q0b q3; q1a q1; q1b q2; q2a q3; q2b q2; q3a q3; q3b q3.
Автомат называется пустым, если МА = , Автоматы А1 и А2 эквивалентны, если МА1 = МА2. Для машины Тьюринга проблемы пустоты и эквивалентности неразрешимы, более того, они не являются частично разрешимыми. Ситуация меняется для конечных автоматов.
Для ОКА доказано:
1) Проблема пустоты ОКА разрешима.
Доказательство основано на проверке допустимости конечного множества всех слов, длина которых не превышает числа состояний ОКА - n. Если ни одно слово из этого множества не допускается, то ОКА «пуст».
2) Предположение о том, что минимальная длина допускаемого слова больше n отвергается на том основании, что оно может быть сведено к слову меньшей длины, путем выбрасывания участков между двумя повторяющимися в пути узлами.
3) Проблема эквивалентности ОКА разрешима.
Доказательство основано на использовании отношения эквивалентности двух состояний q и q': если состояния q и q' эквивалентны, то для всех a A состояния (q, a) и '(q', a) также эквивалентны. Формируемые пары не должны входить одновременно заключительное и незаключительное состояния.