Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_Book_Nizhyn.doc
Скачиваний:
94
Добавлен:
03.12.2018
Размер:
3.4 Mб
Скачать

5.7.2 Семантика мов програмування

В першому розділі посібника семантика програм мови SIPL задавалась функціями програмної алгебри

A_Prog =<FNA, FNB, FNAB, FA, FB, FS; Sn, ASx, , IF, WH, x, id >.

Програми мови SIPL не є рекурсивними, але легко зробити таке її розширення, яке буде мати рекурсивні функції та процедури (це буде зроблено пізніше). Тому здається вірогідним, що класи часткових функцій алгебри A_Prog (класи FA, FB, FS) є -областями, а композиції, задані на цих класах – неперервними. Це дійсно так.

Доведемо більш загальний результат. Нехай D, R – деякі множини даних, а – клас часткових функцій, заданих на цих множинах. Введемо на F відношення часткового порядку , вважаючи, що для функцій f,gF

fg .

Якщо використовувати графіки функцій, то можна записати, що

fg .

Очевидно, що так введене бінарне відношення є дійсно відношенням частково порядку. Найменшим елементом буде всюди невизначена функція, для якої залишемо позначення .

Супремумом ланцюга функцій буде функція f=, графік якої є об’єднання графіків функцій ланцюга, тобто . Неважко переконатись, це об’єднання є функціональним бінарним відношенням. Дійсно, нехай . Це означає, що

,

.

Якщо , аналогічно розглядається випадок .

Тобто f є дійсно функцією. Це говорить про повноту F.

Таким чином, доведено наступне твердження.

Лема 5.13. Множина часткових функцій із D в R є -область.

Зауважимо відмінність цієї леми від лем 5.7 та 5.9, які говорять про класи тотальних функцій, частковий порядок на яких індукується частковим порядком на їх областях визначення та значень. В лемі 5.3 говориться про клас часткових функцій, визначенних на довільних множинах, які не обов’язково є -областями. В зв’язку з цим класи n-арних тотальних функцій FNA, FNB, FNAB не підпадають під дію леми 5.13.

Застосовуючи лему 5.13 до наступних класів (основ) часткових функцій алгебри A_Prog: FA, FB, FS, отримуємо, що ці основи є -областями.

Доведемо тепер, що композиції Sn, ASx, , IF, WH, x, id алгебри A_Prog є неперервними.

Це очевидно для нуль-арних композицій (функцій) x і id, які не мають функцій-аргументів.

Лема 5.14. Композиція суперпозиції Sn номінативних функцій в n-арну функцію неперервна за номінативними функціями-аргументами.

Доведення. Нехай fn-арна функція, g1,…,gn – номінативні функції типу FA, – ланцюг функцій з FA, stState. Значення обчислюється за наступною формулою:

Sn(f, g1,…,gn ))(st)=f(g1(st),…,gn(st)).

Доведемо неперервність суперпозиції за першим аргументом типу FA, тобто доведемо, шо Sn(f, ,…,gn )=Sn(f,,…,gn ).

Нехай Sn(f, ,…,gn ))(st)=r. Отримуємо наступну послідовність еквівалентних перетворень:

Sn(f, ,…,gn ))(st)=rf((st),…,gn(st))=r

k(f(fk(st),…,gn(st))=rSn(f,,…,gn )(st)=r.

Наведені перетворення спираються на той факт, що

(st)=r  k(fk(st)(st)=r.

Аналогічним чином доводиться наступне твердження.

Лема 5.15. Композиція присвоєння ASx неперервна.

Доведемо неперервність послідовного виконання.

Лема 5.16. Композиція послідовного виконання – неперервна.

Доведення. Щоб довести неперервність композиції , нам потрібно довести неперервність за кожним аргументом. Доведемо лише неперервність за першим аргументом, тобто, що . Маємо, що

.

Лема 5.17. Композіція – неперервна.

Доведення. Щоб довести неперервність композиції , нам потрібно довести неперервність за кожним аргументом. Розглянемо лише доведення неперервності за одним аргументом, так як за іншими вона доводиться аналогічно. Нагадаємо, що

Розглянемо перший випадок: . Тоді

.

Для доведення неперервності композицій ітерації (циклу) спочатку покажемо, що ітерація функцій є найменшою нерухомою точкою певного рекурсивного визначення.

Теорема 5.5. Для композиції циклу виконується наступне співвідношення:

Доведення.

Раніше (лема 1.2) було доведено, що є нерухомою точкою рівняння X=IF(fbfs  Xid), звідки випливає, що . Тому залишилось довести, що .

Попередньо нагадаємо початкове визначення композиції циклу (розділ 1):

WH(fb,fs)(st)=stn, де st0=st, st1=fs(st0), st2=fs(st1), …, stn=fs(stn-1), причому fb(st0)=true, fb(st1)=true,…, fb(stn-1)=true, fb(stn)=false.

Тепер позначимо . Тоді . Також будемо позначати той факт, що обчислення на даному st завершилось з результатом при числі ітерацій, не більше ніж k, тобто NumItWH((p, f), st))k.

Доведемо індукцією за k), що з умови , випливає ()(st)=stk . (Усі твердження такого типу вважаються універсально квантифікованими, в даному випадку за st та stk. )

База індукції (k 0). З умови , випливає, що st0=st, та . Оскільки , то при вказаних умовах будемо мати, що ()(st)=st.

Індуктивний крок. З припущення, що індуктивна гіпотеза справедлива для k, доведемо її справедливість для k+1.

Дійсно, нехай . Тоді з леми 1.2 випливає, що та що . За індуктивною гіпотезою маємо, що ()(f(st))=stk+1. Звідси випливає, що ()(st)=stk+1, бо = і при обчисленні маємо, що

()(st) = ()(st) =

=(st) = ()(f(st))= stk+1.

Лема 5.18. Композиція - неперервна.

Доведення. Скориставшись доведеними результатами щодо циклу та неперервності композицій послідовного виконання та умовного оператора, отримуємо, що

.

Аналогічним чином доводиться неперервність і за першим аргументом.

Доведені леми про неперервність композицій алгебри A_Prog дозволяють стверджувати, що похідні композиції, які можна визначити в цій алгебрі, також будуть неперервними. (Питання про точне визначення похідних композицій буде розглянуто пізніше.)

Факт неперервності композицій алгебри A_Prog не є випадковим. Має місце наступне твердження.

Твердження 5.1. Програмні композиції (які обчислюються за скінченну кількість кроків) – неперервні.

Доведення ґрунтується на тому факті, що для обчислення значень функцій, побудованих за допомогою програмних композицій, використовується лише скінченна частина (скінченний графік) функцій-аргументів. Деталі доведення тут не наводимо.

Таким чином, найважливіший висновок з теорії ННТ полягає в тому, що семантика мов програмування задається класами функцій, які є -областями, а композиції таких функцій є неперервними операторами. Це дозволяє обґрунтувати коректність використання різних рекурсивних методів для визначення засобів конструювання програм, спираючись на теореми, доведені в теорії ННТ.

Проілюструємо введення рекурсивних визначень функцій для розширення мови SIPL.