TP#4.ppt
- Количество слайдов: 66
Теорія рекурсії (теорія найменшої нерухомої точки)
1. Рекурсивні визначення та рекурсивні рівняння Рекурсивні визначення – це такі визначення, в правій частині яких використовується посилання на поняття, що визначається. Такі визначення мають вид
Рекурсивне визначення можна тлумачити • операційно, тобто вказати алгоритм, за яким можна обчислити рекурсивно визначений об’єкт, • або денотаційно, тобто як рівняння, розв’язком якого є нерухомі точки (НТ) оператора .
Зауваження 1. Тут на (x) ми дивимось синкретично (не розрізнюючи різні аспекти), та тлумачимо (x) або як вираз в певній алгебрі (коли говоримо про рівняння), або як оператор в цій алгебрі (коли говоримо про нерухомі точки оператора).
Зауваження 2. Часто також розглядаються системи рівнянь виду Такі системи зводяться до одного рівняння над послідовністю (x , x 2, . . . , xn). 1
Зауваження 3. В теорії найменших нерухомих точок зазвичай використовується позначення виду i , де – перший нескінченний ординал, тобто ={0, 1, 2, . . . } – множина натуральних чисел. Метод послідовних наближень графічно представлений на малюнку 1. y=x y y= (x) d 0 d 1 d 2… d x Малюнок 1. Розв’язок рівнянь методом послідовних наближень
2. Частково впорядковані множини, границі ланцюгів та -області Визначення 1. Множина D з заданим бінарним відношенням D D називається частково впорядкованою множиною (ЧВМ), якщо для відношення виконуються наступні аксіоми часткового порядку (d, d 1, d 2, d 3 D): 1. Рефлексивність: ; 2. Транзитивність: ; 3. Антисиметричність: . Визначення 2. Нехай – ЧВМ, – індексована підмножина D. Ця підмножина – ланцюг, якщо .
Визначення 3. Нехай – ланцюг в ЧВМ. Границею X (позначається lim X = sup X = = ) називається точна верхня границя (супремум, найменша мажоранта) множини X, якщо вона існує. Визначення 4. ЧВМ – повна, якщо для довільного ланцюга з D існує його границя (що належить D). Визначення 5. Множина D – -область (також вживається термін індуктивна множина, -домен), якщо • на D введено частковий порядок , • в D існує найменший елемент , • D є повною ЧВМ.
3. Неперервні відображення Визначення 6. Відображення : D D, задане на ЧВМ , – неперервне за Гейне, якщо для будь-якого ланцюга з D виконується рівність . Визначення 7. Відображення : D D – монотонне, якщо Лема 1. Нехай – ЧВМ та : D D – неперервне відображення, тоді – монотонне. Доведення. Нехай є ланцюг , всі елементи якого, крім d 0, дорівнюють d 1. Тоді з визначення ланцюга та неперервності випливає, що Оскільки , то . Це означає, що є мажорантою , .
4. Теореми про нерухомі точки Теорема 1. (Кнастер-Тарський-Кліні). Нехай D – ωобласть, : D D – неперервне відображення, задане на цій області. Тоді існує найменша нерухома точка , яка позначається та для якої справедлива ( ) , наступна формула: де , , i . Доведення теореми складається с трьох тверджень: 1. Доведення факту, що множина { } i є ланцюг. 2. Доведення того, що є нерухомою точкою φ. 3. Доведення, що є найменшою з нерухомих точок φ.
1. Треба довести, що з випливає . Дійсно, за монотонністю φ маємо . Отже – ланцюг. 2. За неперервністю : . Остання рівність випливає з того, що , а найменший елемент не впливає на супремум. Отже, – нерухома точка φ. 3. Нехай b також нерухома точка, тобто . Маємо, що . За монотонністю φ . Аналогічно, . Тому . Отже, – найменша з нерухомих точок.
Теорема 2. (структура множини нерухомих точок). Нехай D – -область, – неперервне відображення на D. Тоді множина нерухомих точок Y= – -область. Доведення: 1. Частковий порядок на множині нерухомих точок отримуємо як звуження часткового порядку на D: . 2. Найменшим елементом в Y є елемент (за теоремою Кнастера-Тарського-Кліні). 3. . Тобто – нерухома точка.
Лема 2. Якщо множина D впорядкована за обома індексами, тобто i j (dij di(j+1)& dij d(i+1)j), то = . Доведення: Метод доведення леми полягає в тому, що ми покажемо, що множини мажорант усіх ланцюгів співпадають. Нехай – мажоранта ланцюга { }j . Звідси – мажоранта для всіх , а отже – мажоранта для ланцюга { }j . Аналогічно для { } k . Для будь якого елемента dij існує k (зокрема, k=max(i, j)), що dij dkk. Тому – мажоранта для { } j .
5. Конструювання похідних -областей Розмічене об’єднання -областей. Не втрачаючи загальності, розглянемо випадок двох областей. Нехай D 1 та D 2 – -області. Будемо індексувати відповідні поняття наступним чином: D 1, – для першої області, D 2, – для другої області. Нехай також D 1 та D 2 не перетинаються. Будуємо нову множину D = D 1 D 2 { }, де – новий елемент, що не належить ні D 1, ні D 2. D = D 1 D 2 {( , )} {( , d 1) | d 1 D 1} {( , d 2) | d 2 D 2} Неважко довести, що колапсу так побудованого відношення часткового порядку не буде. Повнота D відносно порядку D випливає з його розміченості.
Лема 3. Розмічене об’єднання -областей є -областю. Декартовий добуток -областей. Нехай D 1 та D 2 – -області. Побудуємо -область для D = D 1 D 2. Задамо частковий порядок на D покоординатно: (d 1, d 2) D (d 1 , d 2 ) (d 1 D 1 d 1 ) & (d 2) D 2 d 2 ) Неважко довести, що так визначене відношення є частковим порядком. Найменшим елементом D буде елемент ( D 1, D 2). Доведемо повноту D відносно введеного відношення. Нехай {(d 1 i, d 2 i)}i – ланцюг в D. Це можна зробити, показавши, що = ( , ).
= та = , де d 1 D 1, d 2 D 2. Далі позначимо dij=(d 1 i, d 2 j), де . Множина елементів dij впорядкована за обома індексами, тому згідно леми 2 = ( , ). Оскільки та існують, то існує і супремум . Отже, доведено наступне твердження. Лема 4. Декартовий добуток -областей є -областю.
Лема 5. Нехай D 1 та D 2 – -області. Тоді відображення неперервне тоді і тільки тоді, коли воно неперервне за кожним аргументом. Доведення: Необхідність. Нехай відображення неперервне на множині D = D 1 D 2. Це означає, що для довільного ланцюга з D = D 1 D 2 маємо, що . Щоб довести неперервність за першим аргументом розглянемо ланцюг , у елементів якого другий компонент дорівнює b. Звідси випливає, що та
Використовуючи ці співвідношення, отримуємо, що Аналогічно доводиться неперервність і за другим аргументом. Достатність. Треба довести, що з неперервності за кожним аргументом випливає неперервність в цілому. Беремо довільний ланцюг і користуючись властивостями супремуму на декартовому добутку та неперервність за кожним аргументом, отримуємо наступні рівності:
Класи функцій на -областях. Доведемо, що множина тотальних (всюди визначених) функцій F= на -області є -областю. Нехай . Тоді вважаємо, що Для так введеного бінарного відношення виконуються всі аксіоми часткового порядку: рефлективність ( , то ), транзитивність ( ), антисиметричність ( ). Тепер визначимо найменший елемент Тут вираз у квадратних дужках називається функціональним конструктором. Він задає значення функції на кожному її аргументі. Це означає, що ( ).
Тому . За визначенням, це означає, що F g. Далі треба продемонструвати повноту F. Нехай – ланцюг в F. Треба довести, що F, тобто, що супремум функцій є фукцією. Спочатку визначимо нову функцію . Наведений функціональний конструктор задає значення функції на кожному її аргументі. Це означає, що . Доведемо, що ( – найменша з мажорант ланцюга ).
1. Спочатку доведемо, що – мажоранта множини функцій { } . Дійсно, за визначенням . Звідси випливає, що . Переставляючи універсальні квантори, отримуємо, що . 2. Доведемо тепер, що – найменша мажоранта множини функцій { } . Нехай – довільна мажоранта цієї множини. Тоді . Це означає, що доведена наступна лема. Лема 6. Відображення є супремумом множини функцій { }, тобто . Лема 7. Множина функцій на -областях є -областю.
Неперервні функції на -областях. Доведемо неперервність відображення , тобто, що . Це означає, що треба довести рівність для довільного ланцюга елементів з D. Дійсно, . Лема 8. Якщо функції , – неперервні, то функція – також неперервна. Доведення. За лемою 6, якщо , то . Щоб довести, що - неперервна, треба довести, що для довільного ланцюга . Маємо, що ( . За лемою 2 , тому .
6. Властивості оператора найменшої нерухомої точки Операцію взяття нерухомої точки можна трактувати як оператор , де – множина неперервних відображень. Доведемо, що оператор lfp – неперервний. Але спочатку покажемо, що він – монотонний. Лема 9. Відображення – монотонне відображення, тобто для . Доведення. Нехай . Розглянемо наступні співвідношення:
D g( ) D h( ) g(g( )) D g(h( )) D h(h( )). . . D . . . (Умова ) (Монотонність g та умова ). . . D Оскільки lfp(g)= та lfp(h)= , то .
Теорема 3. (неперервність lfp) Якщо – -область, то відображення – неперервне, тобто . Доведення. Неперервність означає, що для довільного ланцюга має виконуватись співвідношення . Спочатку доведемо, що . Оскільки , то за лемою 6. 1. , для довільного , а отже . Тепер доведемо, що . Для цього доведемо, що – нерухома точка для (тобто, ). Дійсно .
Позначимо , . Неважко довести, що засновки леми 4. 3. виконуються, тому = . Оскільки – найменша нерухома точка, то вона менша за будь-яку нерухому точку для . Тому . Отже, ми довели, що . Таким чином, досліджено основні властивості оператора найменшої нерухомої точки, який може вважатися одним із уточнень рекурсії.
7. Застосування теорії ННТ Найважливішими способами визначення нескінченних об’єктів (множин, послідовностей, функцій і таке інше), є рекурентні, індуктивні та рекурсивні способи. Оскільки перші два способи є частковими випадками рекурсії, то звідси випливає важливість теорії ННТ, як одного із способів уточнення рекурсії, в різних застосуваннях. Тут ми розглянемо застосування ННТ для уточнення синтаксису та семантики мов програмування.
7. 1. Уточнення синтаксису мов програмування Синтаксис мов програмування переважно задається за допомогою БНФ, граматик та інших подібних формалізмів. В попередньому розділі було розглянуто приклад подання породжучої граматики як системи рівнянь. Так, правила задають мову, яка є розв’язком рівняння . Але для того, щоб стверджувати існування розв’язку, необхідно дослідити область, на якій задаються такі рівняння.
Розглянемо алгебру, на якій задано наведене рівняння (відображення ): , де – множина мов, < > – операції об’єднання та конкатенації. Достатніми умовами існування розв’язків рекурсивних рівнях в алгебрах наведеного типу є умови для множини бути -областю, та для операцій об’єднання та конкатенації бути неперервними. Доведемо виконання цих умов.
Лема 10. Множина – -область. Доведення. Щоб множина була -областю треба визначити на ній частковий порядок та показати його повноту та найменший елемент. Для множини частковим порядком буде включення, порожня множина буде найменшим елементом, а об’єднання множин буде супремумом, тобто є така відповідність: 1) 2) 3) Очевидно, що всі необхідні умови -області виконуються для так введеного часткового порядку.
Лема 11. Операції об’єднання та конкатенації – неперервні. Доведення. Розглянемо операцію об’єднання . Згідно леми 5 досить довести неперервність об’єднання за кожним аргументом. Не обмежуючи загальності, доведемо неперервність за першим аргументом. Нехай – ланцюг з множини , . За визначенням, . Для довільного елемента x маємо Отже – неперервна операція.
Розглянемо тепер операцію . За визначенням, Доведемо, що . Маємо, що Отже, операція також неперервна.
Таким чином, множина формальних мов є областю, а операції слабкої алгебри формальних мов – неперервними. Похідні операції також будуть неперервними. Тому рекурсивні визначення над цією алгеброю завжди мають найменший розв’язок. Цей розв’язок, за теоремою КТК, можна знайти методом послідовних наближень. Доведемо, що якщо за КВ-граматикою побудувати відповідну систему рекурсивних визначень, то розв’язок цієї системи співпаде з мовою, породженою граматикою.
Нехай G = (N, Т, Р, S) – КВ-граматика, (N T)*. Задамо відображення s: (N T) (N ), s(A)=A, A N, та s(a)={a}, a T. Це відображення розповсюджуємо на послідовності символів з алфавіту (N T), s(x 1 x 2…xn)=s(x 1)s(x 2)…s(xn). Тепер маємо, що s: (N T)* (N )*. Сукупність всіх правил A 1, A 2, …, A k з граматики G з одним і тим же нетерміналом у лівій частині замінюємо на рекурсивне визначення A= s( 1) s( 2) … s( k). Такі визначення будуємо для всіх нетерміналів. Отриману систему рекурсивних визначень над слабкою алгеброю формальних мов позначимо E(G). Відображення, що задається правими частинами цієї системи позначимо G, його складову за нетерміналом A позначимо A, а найменшу нерухому точку цього відображення за змінною (нетерміналом) S позначимо lfp. S( G).
Приклад 1. Для граматики G = ({S, A, B, C, D}, {a, b, c), P, S), де P складається з наступних правил: S AB | CD | A | a. A B | b. Bc C | a. Cb D | c. D отримуємо наступну систему рекурсивних визначень: S=AB CD { } A={ } {a}A B={ } {b}B{c} C={ } {a}C{b} D={ } {c}D
Теорема 4. Для КВ-граматики G = (N, Т, Р, S) L(G)= lfp. S( G). Доведення. Нехай L(k)A(G) – множина термінальних ланцюжків породжених з нетермінала A деревами виводу глибини не більше k. Індукцією за k доводимо, що A(G)= A( ). Дійсно, для виводів довжини 0 маємо, що та .
Припускаючи, що індуктивна гіпотеза вірна для k, доведемо її справедливість для k+1. Дійсно, мова складається з термінальних ланцюжків t, які виводяться з A деревами виводу глибини не більше k+1. Такі дерева породжуються деяким правилом A x 1 x 2…xn P, а виводи з нетермінальних символів з x 1, x 2, …, xn мають глибину не більшу k. Термінальні ланцюжки, що породжуються з таких нетерміналів x входять у мову . З побудови випливає, що ланцюжок t буде належати цій мові. Також є вірним і зворотнє: якщо t , то t . Індуктивна гіпотеза доведена. Звідси випливає справедливість теореми.
7. 2. Семантика мов програмування Нехай D, R – деякі множини даних, а – клас часткових функцій, заданих на цих множинах. Введемо на F відношення часткового порядку , вважаючи, що для функцій f, g F f g Якщо використовувати графіки функцій, то можна записати, що f g Очевидно, що так введене бінарне відношення є дійсно відношенням частково порядку. Найменшим елементом буде всюди невизначена функція, для якої залишимо позначення .
Супремумом ланцюга функцій буде функція f= , графік якої є об’єднання графіків функцій ланцюга, тобто . Неважко переконатись, це об’єднання є функціональним бінарним відношенням. Дійсно, нехай . Це означає, що Якщо , аналогічно . Тобто f є дійсно функцією. Це говорить про повноту F. Таким чином, доведено наступне твердження. Лема 12. Множина часткових функцій із D в R є -область.
Лема 13. Композиція суперпозиції номінативних функцій в n-арну функцію неперервна за номінативними функціями-аргументами. Доведення. Нехай f – n-арна функція, g 1, …, gn – номінативні функції типу FA, – ланцюг функцій з FA, st State. Значення обчислюється за наступною формулою: (f, g 1, …, gn ))(st)=f(g 1(st), …, gn(st)). Доведемо неперервність суперпозиції за першим аргументом типу FA, тобто доведемо, що (f, , …, gn )= (f, , …, gn ).
Нехай (f, , …, gn ))(st) =r. Отримуємо наступну послідовність еквівалентних перетворень: (f, , …, gn ))(st) =r f( (st), …, gn(st)) =r k(f(fk(st), …, gn(st)) =r (f, , …, gn )(st) =r. Наведені перетворення спираються на той факт, що (st) =r k(fk(st) =r. Аналогічним чином доводиться наступне твердження. Лема 14. Композиція присвоєння A – неперервна.
Лема 15. Композиція послідовного виконання – неперервна. Доведення. Щоб довести неперервність композиції , нам потрібно довести неперервність за кожним аргументом. Доведемо лише неперервність за першим аргументом, тобто, що . Маємо, що
Лема 16. Композиція IF – неперервна. Доведення. Щоб довести неперервність композиції IF , нам потрібно довести неперервність IF за кожним аргументом. Розглянемо лише доведення неперервності за одним аргументом, так як за іншими вона доводиться аналогічно. Нагадаємо, що Розглянемо перший випадок: . Тоді
Теорема 5. Для композиції циклу виконується наступне співвідношення: Доведення. Було доведено, що є нерухомою точкою рівняння X=IF(fb, fs X, id), звідки випливає, що . Тому залишилось довести, що . Попередньо нагадаємо початкове визначення композиції циклу: WH(fb, fs)(st)=stn, де st 0=st, st 1=fs(st 0), st 2=fs(st 1), …, stn=fs(stn-1), причому fb(st 0)=true, fb(st 1)=true, …, fb(stn-1)=true, fb(stn)=false.
Тепер позначимо . Тоді Також будемо позначати той факт, що обчислення на даному st завершилось з результатом при числі ітерацій, не більше ніж k, тобто Num. It. WH((p, f), st)) k. Доведемо індукцією за k, що з умови , випливає ( )(st) =stk. (Усі твердження такого типу вважаються універсально квантифікованими, в даному випадку за st та stk. ) База індукції (k = 0). З умови , випливає, що st 0=st, та . Оскільки , то при вказаних умовах будемо мати, що ( )(st) =st.
Індуктивний крок. З припущення, що індуктивна гіпотеза справедлива для k, доведемо її справедливість для k+1. Дійсно, нехай . Тоді з цього слідує, що та . За індуктивною гіпотезою маємо, що ( )(f(st)) =stk+1. Звідси випливає, що ( )(st) =stk+1, бо = і при обчисленні маємо, що ( )(st) = ( )(st) = = (st) = ( )(f(st))= stk+1.
Лема 17. Композиція WH - неперервна. Доведення. Скориставшись доведеними результатами щодо циклу та неперервності композицій послідовного виконання та умовного оператора, отримуємо, що Аналогічним чином доводиться неперервність і за першим аргументом.
Твердження 1. Програмні композиції (які обчислюються за скінченну кількість кроків) – неперервні. Доведення ґрунтується на тому факті, що для обчислення значень функцій, побудованих за допомогою програмних композицій, використовується лише скінченна частина (скінченний графік) функцій-аргументів.
Таким чином, найважливіший висновок з теорії ННТ полягає в тому, що семантика мов програмування задається класами функцій, які є областями, а композиції таких функцій є неперервними операторами. Це дозволяє обґрунтувати коректність використання різних рекурсивних методів для визначення засобів конструювання програм, спираючись на теореми, доведені в теорії ННТ.
7. 3. Рекурсивні розширення мови SIPL Глобальною суперпозицією функцій g 1, g 2, …, gn в номінативну функцію f називається функція, яка задається формулою S(v 1, v 2, . . vn)(f, g 1, g 2, …, gn)(st)=f([v 1 g 1(st), v 2 g 2 (st), …, vn gn(st)]) Локальною суперпозицією функцій g 1, g 2, …, gn в номінативну функцію f називається функція, яка задається формулою S[v 1, v 2, . . vn](f, g 1, g 2, …, gn)(st)=f(st [v 1 g 1(st), v 2 g 2(st), …, vn gn(st)])
Приклад 5. 1 Функцію n! часто задають наступним рекурсивним визначенням: f(n) = if n > 1 then n*f(n-1) else 1 Будемо вважати, що виразу if n > 1 then n*f(n-1) else 1 відповідає функція, задана на станах змінних, причому n є однією із змінних. Але оскільки ми вже «зарезервували» n для позначення довільного числа, будемо змінну позначати прописною (великою) літерою N. Це означає, що нам краще переписати визначення саме у такій формі: f(N) = if N > 1 then N*f(N-1) else 1
Візьмемо локальну суперпозицію. Отримуємо семантичний терм (f)= IF( (gr, N , ), (mult, N , (f, (sub, N , )), ) Неважко довести, що введені композиції суперпозиції є неперервними, тому теорема КТК є застосовною. Це означає, що існує ННТ (f), яку можна отримати методом послідовних наближень. Обчислимо декілька таких наближень. Початковим наближенням є всюди невизначена функція f 0 = . Наступне наближення отримуємо підстановкою попереднього наближення в оператор .
f 1 = (f 0) = ( ) = IF( (gr, N , ), (mult, N , (sub, N , )), ) = IF( (gr, N , ), (mult, N , )=IF( (gr, N , ), , ). Наближення f 1 можна записати за допомогою її графіка наступним чином f 1([N n])= IF( (gr, N , ), , ) ([N n])= = Обчислимо друге наближення. f 2 = (f 1) = IF( (gr, N , ), (mult, N , (f 1, (sub, N , )), )=IF( (gr, N , ), (mult, N , (IF( (gr, N , ), (sub, N , )), ).
f 2([N n])= Наведені наближення дозволяють сформулювати гіпотезу, що fk([N n])= Цю гіпотезу можна довести індукцією за k. Для k=1 гіпотеза справедлива. Доведемо її справедливість для k+1, виходячи з того, що вона справедлива для k. Маємо, що fk+1 = (fk) = IF( (gr, N , ), (mult, N , (fk, (sub, N , )), )
В силу монотонності «старі» значення функції fk не зміняться, але можуть появитися нові значення. Це можливо лише для даного [N k+1]. Дійсно, обчислення fk+1 дає fk+1([N k+1])= (fk) = = IF( (gr, N , ), (mult, N , (fk, (sub, N , )), )([N k+1])= = (mult, N , (fk, (sub, N , ))([N k+1])= =mult (N ([N k+1]), (fk, (sub, N , ))([N k+1]))= =mult (k+1, fk([N k+1] [N (sub, N , )([N k+1])])=
=mult (k+1, fk([N k+1] [N sub(N ([N k+1]), ([N k+1]))]))= =mult (k+1, fk([N k+1] [N sub(k+1, 1)]))= =mult (k+1, fk([N k+1] [N k]))=mult (k+1, fk([N k+1] [N k]))= =mult (k+1, fk([N k]))=mult (k+1, k!)=(k+1)! Для даних, більших за k+1, значення fk+1 буде невизначеним. Границя послідовності f 0, f 1, f 2, … дає функцію f = , яка є найменшою нерухомою точкою оператора , тобто f = =lfpf . Функція f на даному [N n] приймає значення n! (для n>0). Таким чином, теорія найменшої нерухомої точки дає обґрунтування рекурсивним визначенням наведеного типу.
Приклад 2. Знайдемо ННТ рекурсивного визначення найбільшого спільного дільника чисел n та m. f(n, m) = if n > m then f(n-m, m) else if n < m then f(n, m-n) else m f(N, M) = if N > M then f(N-M, M) else if N < M then f(N, M-N) else M Побудуємо семантичний терм правої частини цього визначення. (f)= IF( (gr, N , M ), (f, (sub, N , M ), IF( (less, N , M ), (f, N , (sub, M , N ), M ))
Зауважимо, що можна взяти суперпозицію за одним іменем, а саме (f)= IF( (gr, N , M ), (f, (sub, N , M )), IF( (less, N , M ), (f, (sub, M , N ), M )) Також можна брати глобальну суперпозицію: (f)= IF( (gr, N , M ), (f, (sub, N , M ), IF( (less, N , M ), (f, N , (sub, M , N ), M ))
Для спрощення перетворень, візьмемо варіант для . Початковим наближенням є всюди невизначена функція f 0 = . Наступне наближення отримуємо підстановкою попереднього наближення в оператор . f 1 = (f 0) = ( )= IF( (gr, N , M ), ( , (sub, N , M )), IF( (less, N , M ), ( , (sub, M , N ), M ))=IF( (gr, N , M ), , IF( (less, N , M ), , M ))
Графік задається наступною формулою: f 1([N n, M m])=IF( (gr, N , M ), , IF( (less, N , M ), , M ))([N n, M m])= = Запишемо графік f 1 трішки іншим чином, фактично вводячи r як найбільший спільний дільник: f 1([N n, M m])=
Обчислимо друге наближення. f 2 = (f 1) = IF( (gr, N , M ), (f 1, (sub, N , M )), IF( (less, N , M ), (f 1, (sub, M , N ), M )). Його графік задається наступною формулою: f 2([N n, M m])=IF( (gr, N , M ), (f 1, (sub, N , M )), IF( (less, N , M ), (f 1, (sub, M , N ), M ))([N n, M m])= =
Синтаксис розширення – БНФ – подамо у наступній таблиці. Ліва частина правила метазмінна <програма> : : = Права частина правила Ім’я правила …| program <список об’явлень функцій> begin <оператор> end NP 1 NP 2 …| if <умова> then <вираз> else <вираз> | <виклик функції> NA 1– NA 7 NA 8 NA 9 <список об’явлень | функцій>: : = <об’явлення функції> | <об’явлення функції> ; <список об’явлень функцій> LDF 1 LDF 2 LDF 3 <вираз> : : =
<об’явлення функції>: : = func <ім’я функції>=<вираз> | func <ім’я функції>(<список формальних параметрів>) = <вираз> <ім’я функції> : : = <змінна> DF 1 DF 2 <список формальних параметрів>: : = <змінна> | <змінна> , <список формальних параметрів> LFP 1 LFP 2 <виклик функції> <ім’я функції> | : : = <ім’я функції> (<список фактичних параметрів>) CF 1 CF 2 <список фактичних <вираз> | параметрів>: : = <вираз> , <список фактичних параметрів> LAP 1 LAP 2 NF
В більш математичному вигляді ці розширення можна задати наступним чином: Ліва частина Права частина правила метазмінна P: : = …| program dec 1; …; decn begin S end a: : = …| if b then a 1 else a 2 | fc dec : : = func fn=a | func fn(x 1, …, xn) = a fn : : = x fc : : = fn | fn(a 1, …, an) Ім’я правила P 1 P 2 A 1– A 7 A 8 A 9 DF 1 DF 2 NF CF 1 CF 2
Семантичні правила повинні врахувати наявність рекурсивних визначень. Тому ці правила ускладнюються, бо з’являється аргумент E, який називаємо середовищем. Неформально, середовище можна трактувати як відображення, яке імені функції fn, заданого рекурсивним визначенням func fn(x 1, …, xn) = a, співставляє формальні параметри (x 1, …, xn) та семантику виразу a. Далі ця інформація використовується для подання семантики викликів функцій.
Висновок. Основним методом знаходження об’єкту, що задається рекурсивним визначенням, є метод послідовних наближень. Щоб цей метод був коректним, клас об’єктів має бути -областю, а операції над об’єктами – неперервними. В цьому випадку теорема Кнастера–Тарського–Кліні гарантує існування найменшого розв’язку, який знаходиться методом послідовних наближень. Множина нерухомих точок також утворює -область, а відображення, яке неперервному оператору співставляє найменшу нерухому точку, також є неперервним. Традиційні методи побудови більш складних областей дозволяють будувати нові -області з більш простих -областей. Застосування теорії найменшої нерухомої точки є надзвичайно широким. Зокрема, ця теорії може бути застосована для визначення синтаксису формальних мов за допомогою БНФ та подібних методів. Семантика рекурсивних програм також може бути визначена за допомогою цієї теорії. Важливо відзначити, що семантичні області є -областями, а засоби конструювання програм – композиції – є неперервними.


