рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Свойства и виды стандартных схем программ

Свойства и виды стандартных схем программ - раздел Программирование, Математические основы программирования. Теория схем программ. Семантическая теория программ 1.3.1. Эквивалентность, Тотальность, Пустота, Свобода Ссп S В Базисе...

1.3.1. Эквивалентность, тотальность, пустота, свобода

ССП S в базисе В тотальна (пуста), если для любой интерпретации I базиса В программа (S, I) останавливается (зацикливается).

Стандартные схемы S1 и S2 в базисе В функционально эквивалентны (S1 ~ S2), если либо обе зацикливаются, либо обе останавливаются с одинаковым результатом, т. е. val (S1, I) » val (S2, I).

Примеры тотальных, пустых и эквивалентных схем S2, S3, S4, S5 приведены на рисунке 1.3.

           
   
 
 
   

 

 


Рисунок 1.3

Цепочкой стандартной схемы(ЦСС) называют:

1. конечный путь по вершинам схемы, ведущий от начальной вершины к заключительной;

2. бесконечный путь по вершинам, начинающийся начальной вершиной схемы.

В случае, когда вершина-распознаватель (v), то дополнительно указывается верхний индекс (1 или 0), определяющий 1-дугу или 0-дугу, исходящую из вершины.

 

Примеры цепочек схемы S1 (рисунок 1.2,а):

(0, 1, 21, 5); (0, 1, 20, 3, 4, 20,3,4,21,5) и т. д.

Цепочкой операторов(ЦО) называется последовательность операторов, метящих вершины некоторой цепочки схемы.

Например для S1: (start(х), у:=a, р1(x), stop(у)) или (start(х), у:=a, р0(x), y:=g(x, y), x:=h(x), р0(x), y:=g(x, y), x:=h(x), р0(x), y:=g(x, y), x:=h(x), …)) и т. д.

Предикатные символы ЦО обозначаются так же, как вершины распознавателей в ЦСС.

Пусть S - ССП в базисе В, I - некоторая его интерпретация, (0, 1, к2, к3,…) - последовательность меток инструкций S, выписанных в том порядке, в котором эти метки входят в конфигурации протокола выполнения программы (S, I). Ясно, что эта последовательность – цепочка схемы S. Считают, что интерпретация I подтверждает (порождает) эту цепочку.

ЦСС в базисе В называют допустимой, если она подтверждается хотя бы одной интерпретацией этого базиса.

Не всякая ЦСС является допустимой. В схеме S2 (рисунок 1.3,а) цепочки (0, 1, 20, 5, 61, 7), (0, 1, 21, 3, 40, 7) и все другие конечные цепочки не подтверждаются ни одной интерпретацией.

Свойство допустимости цепочек играет чрезвычайно важную роль в анализе ССП. В частности оно определяет те случаи, когда стандартная схема свободна.

ССП свободна, если все ее цепочки допустимы.

Допустимая цепочка операторов - это цепочка операторов, соответствующая допустимой цепочке схемы. В тотальной схеме все допустимые цепочки (и допустимые цепочки операторов) конечны. В пустой схеме - бесконечны.

Рассмотренные свойства распространяются на все другие классы стандартных схем и образуют опорные пункты схематологии программирования.

1.3.2. Свободные интерпретации

Множество всех интерпретаций очень велико и поэтому вводится класс свободных интерпретаций (СИ), который образует ядро класса всех интерпретаций в том смысле, что справедливость высказываний о семантических свойствах ССП достаточно продемонстрировать для программ, получаемых только с помощью СИ.

Все СИ базиса В имеют одну и ту же область интерпретации, которая совпадает со множеством Т всех термов базиса В. Все СИ одинаково интерпретируют переменные и функциональные символы, а именно:

а) для любой переменной х из базиса В и для любой СИ Ih этого базиса Ih(x)=x;

б) для любой константы a из базиса В Ih(a)=a;

в) для любого функционального символа f(n) из базиса В, где n³1, Ih(f(n))=F(n): Tn®T, где F(n) - словарная функция такая, что

F(n)(t1, t2, ..., tn)= f(n) (t1, t2, ... tn),

т. е. функция F(n) по термам t1, t2, ...tn из Т строит новый терм, используя функциональный смысл символа f(n).

Что касается интерпретации предикатных символов, то она полностью свободна,т.е. разные СИ различаются лишь интерпретаций предикатных символов.

Таким образом, после введения СИ термы используются в двух разных качествах, как функциональные выражения в схемах и как значения переменных и выражений. В дальнейшем термы-значения будем заключать в апострофы. Например, если где t1=`f(x,a)` - терм-значение переменной x, а где t2 = `g(y)` - терм-значение переменной y, то значение свободно интерпретированного терма t3=f(x, h(y)) равно терму-значению `f(f(x,a), h(g(y)))`.

Пример 1.1. Пусть Ih -СИ базиса, в котором определена схема S1 (рисунок 1.2, а), и в этой интерпретации предикат Р=Ih(р) задан так: P(t) = 1, если число функциональных символов в t больше двух; P(t) = 0, в противном случае.

Тогда ПВП (S1,Ih) можно представить таблицей 1.3.

Таблица 1.3

Конфигурация Метка Значения
    X у
U0 `x` `y`
U1 `x` `a`
U2 `x` `a`
U3 `x` `g(x,a)`
U4 `h(x)` `g(x,a)`
U5 `h(x)` `g(x,a)`
U6 `h(x)` `g(h(x),g(x,a))`
U7 `h(h(x))` `g(h(x),g(x,a))`
U8 `h(h(x))` `g(h(x),g(x,a))`
U9 `h(h(x))` `g(h(h(x)),g(h(x),g(x,a)))`
U10 `h(h(h(x)))` `g(h(h(x)),g(h(x),g(x,a)))`
U11 `h(h(h(x)))` `g(h(h(x)),g(h(x),g(x,a)))`
U12 `h(h(h(x)))` `g(h(h(x)),g(h(x),g(x,a)))`

Обратим внимание на следующую особенность термов. Если из терма удалить все скобки и запятые, то получим слово (назовем его бесскобочным термом), по которому можно однозначно восстановить первоначальный вид терма (при условии, что отмечена или известна местность функциональных символов). Например, терму g(2)(h(1)(x), g(2)(x,y)) соответствует бесскобочный терм ghxgxy. Правила восстановления терма по бесскобочной записи аналогичны правилам восстановления арифметических по их прямой польской записи, которая просто и точно указывает порядок выполнения операций.

В этой записи, впервые примененной польским логиком Я. Лукашевичем, операторы следуют непосредственно за операндами. Поэтому ее иногда называют постфиксной записью. Классическая форма записи, как мы обычно пишем, называется инфиксной. Например:

A*B => AB* A*B+C =>AB*C+ A*(B+C/D) =>ABCD/+* A*B+C*D =>AB*CD*+

Правила представления в польской записи:

1) Идентификаторы следуют в том же порядке, что и в инфиксной записи

2) Операторы следуют в том же порядке, в каком они должны вычисляться (слева направо)

3) 3) Операторы располагаются непосредственно за своими операндами.

Бесскобочная запись термов короче и она будет использоваться далее наряду с обычной записью.

1.3.3. Согласованные свободные интерпретации

Полагают, что интерпретация I и СИ Ih (того же базиса В) согласованы, если для любого логического выражения p справедливо Ih(p)=I(p).

Пусть, например, t=`g(h(h(x)), g(h(x), g(x,a)))`, а интерпретация I3 совпадает с интерпретацией I1 из п. 1.2.4 за исключением лишь того, что I(x)=3. Так как I3(a) = 1; I3(g) - функция умножения; I3(h) - функция вычитания 1; получаем I3(t) = ((3-1)-1)*((3-1)*(3*1)) = 6.

В этом случае Ih примера из п. 1.3.2. согласована с только что рассмотренной интерпретацией I3, а так же с I2 (рисунок 1.2, в), но не согласована с I1 (рисунок 1.2, б).

Справедливы прямое и обратное утверждения, что для каждой интерпретации I базиса В существует согласованная с ней СИ этого базиса.

Так, например, выше было сказано, что Ih рассмотренного примера не согласована с I1. Что бы сделать Ih согласованной, необходимо условие Р(t) видоизменить: P(t) = 1, если число функциональных символов в t больше трех; P(t) = 0, в противном случае.

Можно поступить и по другому. Оставить Ih без изменения и согласовать с ней I1. Для этого необходимо будет заменить I1(x) = 4, на I1(x) = 3.

Введем важное вспомогательное понятие подстановки термов, используемое в дальнейшем. Если x1, …, xn (n ≥ 0) – попарно различные переменные, t1, ..., tn – термы из Т, а p - функциональное или логическое выражение, то через p[t1/x1, ..., tn/xn] будем обозначать выражение, получающееся из выражения p одновременной заменой каждого из вхождений переменной xi на терм tI (i = 1, …, n). Например: a[y/x]=a, f(x, y)[y/x, x/y]=f(y, x), g(x)[g(x)/x]=g(g(x)), p(x)[a/x]=p(a).

Приведем без доказательства несколько важных утверждений:

Если интерпретация I и свободная интерпретация Ih согласованы, то программы (S, I) и (S, Ih) либо зацикливаются, либо обе останавливаются и I(val(S,Ih))= val(S,I), т.е. каждой конкретной программе можно поставить во взаимно-однозначное соответствие свободно интерпретированную (стандартную) согласованную программу.

Если интерпретация и свободная интерпретация согласованы, они порождают одну и ту же цепочку операторов схемы.

Теорема Лакхэма – Парка – Паттерсона. Стандартные схемы S1 и S2 в базисе В функционально эквивалентны тогда и только тогда, когда они функционально эквивалентны на множестве всех свободных интерпретаций базиса В, т.е. когда для любой свободной интерпретации Ih программы (S1,Ih) и (S2,Ih) либо обе зацикливаются, либо обе останавливаются и val(S1,I) = {I(val(S1 Ih)) = I(val(S2 Ih))} = val(S2,I).

Стандартная схема S в базисе В пуста (тотальна, свободна) тогда и только тогда, когда она пуста (тотальна, свободна) на множестве всех свободных интерпретаций этого базиса, т.е. если для любой свободной интерпретации Ih программа (S, Ih) зацикливается (останавливается).

Стандартная схема S в базисе В свободна тогда и только тогда, когда она свободна на множестве всех свободных интерпретаций этого базиса, т. е. когда каждая цепочка схемы подтверждается хотя бы одной свободной интерпретацией.

1.3.4. Логико-термальная эквивалентность

Отношение эквивалентности Е, заданное на парах стандартных схем, называют корректным, если для любой пары схем S1 и S2 из S1 ~Е~ S2 следует, что S1~ S2, т. е. S1 и S2 функционально эквивалентны.

Поиск разрешимых корректных отношений эквивалентности представляет значительный интерес с точки зрения практической оптимизации преобразования программ, поскольку в общем виде функциональная эквивалентность стандартных схем алгоритмически неразрешима.

Идея построения таких (корректных и разрешимых) отношений связанна с введением понятия истории цепочки схем. В истории с той или иной степенью детальности фиксируются промежуточные результаты выполнения операторов рассматриваемой цепочки. Эквивалентными объявляются схемы, у которых совпадают множества историй всех конечных цепочек.

Одним из отношений эквивалентности является логико-термальная эквивалентность (ЛТЭ).

Определим термальное значение переменной х для конечного пути ω схемы S как терм t(ω, x), который строится следующим образом.

1. Если путь ω содержит только один оператор А, то: t(ω, x) = t, если А – оператор присваивания, t(ω, x) = х, в остальных случаях.

2. Если ω = ω’Ае, где А – оператор, е – выходящая из него дуга, ω’ – непустой путь, ведущий к А, а x1, …, xn – все переменные терма t(Ае, x), то t(ω, x) = t(Ае, x)[ t(ω’, x1)/x1, …, t(ω’, xn)/xn].

Понятие термального значения распространим на произвольные термы t: t(ω, x) = t [ t(ω, x1)/x1, …, t(ω, xn)/xn].

Например, пути

start(х); y:=x; p1(x); x:=f(x); p0(y); y:=x; p1(x); x:=f(x) в схеме на рисунке 1.4, а соответствует термальное значение f(f(x)) переменной х.

Рисунок 1.4.

Для пути ω в стандартной схеме S определим ее логико-термальную историю (ЛТИ) lt(S, ω) как слово, которое строится следующим образом.

1. Если путь ω не содержит распознавателей и заключительной вершины, то lt(S, ω) – пустое слово.

2. Если ω = ω’vе, где v – распознаватель с тестом p(t1, ..., tk), а е – выходящая из него Δ-дуга, Δ Î{0,1}, то lt(S, ω) = lt(S, ω’) pΔ(t(ω’, t1), …, t(ω’, tk)).

3. Если ω = ω’v, где v – заключительная вершина с оператором stop(t1, ..., tk), то

lt(S, ω) = lt(S, ω’) t(ω’, t1) … t(ω’, tk).

Например, логико-термальной историей пути, упомянутого в приведенном выше примере, будет p1(x) p0(x) p1(f(x)).

Детерминантом (обозначение: det(S)) стандартной схемы S называют множество ЛТИ всех ее цепочек, завершающихся заключительным оператором.

Схемы S1 и S2 называют ЛТЭ (лт - эквивалентными) S1 ~ЛТ~ S2, если их детерминанты совпадают.

Приведем без доказательства следующие утверждение:

Логико-терминальная эквивалентность корректна, т. е. из ЛТЭ следует функциональная эквивалентность (S1 ~ЛТ~ S2 Þ S1 ~ S2). Обратное утверждение как видно из рисунка 1.4 не верно.

ЛТ–эквивалентность допускает меньше сохраняющих ее преобразований, чем функциональная эквивалентность.

– Конец работы –

Эта тема принадлежит разделу:

Математические основы программирования. Теория схем программ. Семантическая теория программ

Следуя А П Ершову мы употребляем термин теоретическое программирование в качестве названия математической дисциплины изучающей синтаксические... В настоящее время сложились следующие основные направления исследований... Математические основы программирования Основная цель исследований развитие математического аппарата...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Свойства и виды стандартных схем программ

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Программа как формализованное описание процесса обработки данных
Целью программирования является описание процессов обработки данных (в дальнейшем - просто процессов). Данные - это представление фактов и идей в формализованном виде, пригодном для п

Правильная программа и надежная программа
Под «программой» часто понимают правильную программу, т.е. программу, не содержащую ошибок, соответствующую спецификации и дающую возможность формального вывода программы из формального набора пред

Стандартные схемы программ
1.2.1. Базис класса стандартных схем программ Стандартные схемы программ (ССП) характеризуются базисом и структурой схемы. Базис класса фиксирует символы, из которых строятся схем

Моделирование стандартных схем программ
1.4.1. Одноленточные автоматы Конечный одноленточный (детерминированный, односторонний) автомат обнаруживают ряд полезных качеств, используемых в теории схем программ для установлен

Рекурсивные схемы
1.5.1. Рекурсивное программирование Среди упомянутых выше методов формализации понятия вычислимой функции метод Тьюринга — Поста основан на уточнении понятия процесса вычислений, для чего

Трансляция схем программ
1.6.1. О сравнении класс сов схем. Программы для ЭВМ, будь-то программы, записанные на операторном языке, или программы на рекурсивном языке, универсальны в том смысле, что любую вычислиму

Обогащенные и структурированные схемы
1.7.1 Классы обогащенных схем Выделяют следующие классы обогащенных схем: класс счетчиковых схем, класс магазинных схем, класс схем с массивами. Классы счетчиковых и магази

Описание смысла программ
Существует несколько причин, по которым следует заниматься описанием семантикипрограмм, или смысла выражений, операторов и программных единиц. Руководство по использованию языка про

Преобразователь предикатов.
Э. Дейкстра рассматривает слабейшие предусловия, т.е. предусловия, необходимые и достаточные для гарантии желаемого результата. «Условие, характеризующее множество всех начальных состояний

Языки формальной спецификации.
Языки и методы формальной спецификации, как средство проектирования и анализа программного обеспечения появились более сорока лет назад. За это время было немало попыток разработать как универсальн

Методы доказательства правильности программ.
Как известно, универсальные вычислительные машины могут быть запрограммированы для решения самых разнородных задач - в этом заключается одна из основных их особенностей, имеющая огромную практическ

Правила верификации К. Хоара.
Сформулируем правила (аксиомы) К.Хоара, которые определяют предусловия как достаточные предусловия, гарантирующие, что исполнение соответствующего оператора при успешном завершении приведет к желае

Взаимодействующие последовательные процессы
Как уже отмечалось во введении, наиболее очевидной сферой применения результатов и рекомендаций теоретического программирования и вычислительной математики, служит спецификация, разработка и реализ

Параллельные процессы
Процесс определяется полным описанием его потенциального поведения. При этом часто имеется выбор между несколькими различными действиями. В каждом таком случае выбор того, какое из событий произойд

Программирование параллельных вычислений
3.5.1. Основные понятия Исполнение процессов типичной параллельной программы прерывается значительно чаще, чем процессов, работающих в последовательной среде, так как процессы параллельной

Модели параллельных вычислений
Параллельное программирование представляет дополнительные источники сложности - необходимо явно управлять работой тысяч процессоров, координировать миллионы межпроцессорных взаимодействий. Для того

Основные определения
4.2.1. Теоретико-множественное определение сетей Петри Пусть мультимножество это множество, допускающее вхождение нескольких экземпляров одного и того же элемента. Сеть

Моделирование систем на основе сетей Петри
В этом разделе рассмотрим метод моделирования на основе сетей Петри, а также его применение для моделирования параллельных систем взаимодействующих процессов и решения ряда классических задач из об

Then begin
X1:=X1*Y; end; X2:=X2*Y; Y:=Y-1; end; write(X1); write(X2); endРисунок 4.5.

Анализ сетей Петри
Моделирование систем сетями Петри, прежде всего, обусловлено необходимостью проведения глубокого исследования их поведения. Для проведения такого исследования необходимы методы анализа свойств сами

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги