1 Для уточнення поняття програмування як процесу конструювання

Скачать презентацию 1 Для уточнення поняття програмування як процесу конструювання Скачать презентацию 1 Для уточнення поняття програмування як процесу конструювання

33506-ta_lect3.ppt

  • Количество слайдов: 51

>1 Для уточнення поняття програмування як процесу конструювання програм В.Н.Редьком введене поняття програмної логіки 1 Для уточнення поняття програмування як процесу конструювання програм В.Н.Редьком введене поняття програмної логіки (алгебри). Програмна алгебра (P, C) задається парою (В, C), де множина функцій P – основа алгебри, C – множина композицій (операцій) над функціями із P, В  P – множина базових функцій. Функції, отримані з базових функцій програмної алгебри за допомогою її композицій, називаються програмно заданими, або програмованими. 7. Програмовані функції. Примітивні програмні алгебри

>2  Примітивні програмні алгебри (ППА) – програмні алгебри функцій із простими типами даних. 2 Примітивні програмні алгебри (ППА) – програмні алгебри функцій із простими типами даних. Kомпозиції ППА адекватно уточнюють засоби конструювання програм як функцій із простими типами даних. Базові композиції ППА: операції суперпозиції циклу розгалуження Уточнимо їх для ППА еквітонних V-квазіарних функцій.

>3 Операції суперпозиції – це описані вище Sv1,…,vn. Операція розгалуження  функціям g, h 3 Операції суперпозиції – це описані вище Sv1,…,vn. Операція розгалуження  функціям g, h та предикату p зіставляє функцію f = (p, g, h): Для кожного dVA f(d) = g(d) при умові p(d) = T, f(d) = h(d) при умові p(d) = F, f(d) в усіх інших випадках. Операція розгалуження інваріантна відносно структури даних для функцій. Вона може бути визначена вже на пропозиційному рівні. Твердження 1. Функція (p, g, h) алгоритмічно обчислювана відносно функцій p, g та h. 7.1. Примітивні програмні алгебри квазіарних функцій

>4 Операція циклу ☼v з параметром v функції g та предикату p зіставляє n-арну 4 Операція циклу ☼v з параметром v функції g та предикату p зіставляє n-арну функцію f = ☼v(p, g). Для кожного dVA значення f(d) – це перший елемент am послідовності a0 = d(v), a1 = g(dva0), a2 = g(dva1), ..., ak = g(dvak–1), ... такий, що p(dvam) = F та p(dvak) = T для всіх k

>5 Позначення (p, g, h): if p then g else h;   5 Позначення (p, g, h): if p then g else h; ☼v(p, g): v↑while p do g. Базові програмовані функції для квазіарних функцій на R: – функції розіменування 'v, де vV; – натуральнозначні константи k, де kN; – функції +xy, –xy, xy, /xy на множині R; – обмежені на множині N функції [x/y] та mod(x, y); – предикати порівняння <, , >, , =, . Функція на R програмована, якщо її можна отримати із базових функцій за допомогою скінченної кількості застосувань операцій S, , ☼v та , &, , . Визначення однакове для V-квазіарних і для V-фінарних функцій. Множина базових функцій та операцій не є мінімальною.

>6 Алгебру (qR ; , &, , , , ☼v, Sv1,…,vn), носієм qR якої 6 Алгебру (qR ; , &, , , , ☼v, Sv1,…,vn), носієм qR якої є клас усіх програмованих еквітонних V-квазіарних функцій на R, назвемо ППА програмованих еквітонних квазіарних функцій на R (ППА-EQ-R). Алгебру (fR ; , &, , , , ☼v, Sv1,…,vn), носієм fR якої є клас усіх програмованих еквітонних V-фінарних функцій на R, назвемо ППА програмованих еквітонних V-фінарних функцій на R (ППА-EФ-R). Твердження 4. Кожна програмована еквітонна V-квазі-арна функція на R алгоритмічно обчислювана відносно базових функцій, операції  та V-ІМ над R як функцій. Твердження 5. Кожна програмована еквітонна V-фінарна функція на R алгоритмічно обчислювана відносно базових функцій.

>7 Програмовані V-квазіарні функції на N.  Кожну функцію на N можна трактувати як 7 Програмовані V-квазіарні функції на N. Кожну функцію на N можна трактувати як предикат, інтерпретуючи 0 як F, а довільне значення a0 – як T. Для випадку V-квазіарних функцій на N не будемо залучати до розгляду предикати на N. Тоді модифікуємо визначення операцій розгалуження та циклу. Операція розгалуження N V-квазіарним функціям g, h та p зіставляє V-квазіарну функцію f, значення f(d) якої для кожного dVA визначається так: f(d) = g(d) при умові p(d)  0, f(d) = h(d) при умові p(d) = 0, f(d) в усіх інших випадках.

>8 Операція циклу N☼v V-квазіарним функціям g та p зіставляє V-квазіарну функцію f, значення 8 Операція циклу N☼v V-квазіарним функціям g та p зіставляє V-квазіарну функцію f, значення f(d) якої для кожного dVN визначається як перший елемент am послідовності a0 = d(v), a1 = g(dva0), a2 = g(dva1), ..., ak = g(dvak–1),... такий, що p(dvam) = 0 та для всіх k

>9 Твердження 6. Кожна програмована еквітонна V-квазіарна функція на N алгоритмічно обчислювана відносно операції 9 Твердження 6. Кожна програмована еквітонна V-квазіарна функція на N алгоритмічно обчислювана відносно операції  та V-ІМ над N як функцій. Твердження 7. Кожна програмована еквітонна V-фінарна функція на N алгоритмічно обчислювана. Алгебра (qN ; N, N☼v, Sv1,…,vn), носієм qR якої є клас усіх програмованих V-квазіарних функцій на N, називається ППА програмованих еквітонних V-квазіарних функцій на N (ППА-EQ-N). Алгебра (fN ; N, N☼v, Sv1,…,vn), носієм fN якої є клас усіх програмованих V-фінарних функцій на N, називається ППА програмованих еквітонних V-фінарних функцій на N (ППА-EФ-N).

>10 Операторні терми ППА-EQ-N.  Алфавіт мови ППА-EQ-N складається із символів о, sx, 'v, 10 Операторні терми ППА-EQ-N. Алфавіт мови ППА-EQ-N складається із символів о, sx, 'v, +xy, xy, ÷xy; N, N☼v, Sv1,…,vn, допоміжних "(", ")", ",". 1) Кожен символ базової функції є атомарним.ОТ; 2) Якщо t0, t1,..., tn – ОТ, то Sv1,…,vn(t0, t1,..., tn) – ОТ. 3) Якщо t0, t1 та t2 – ОТ, то N(t0, t1, t2) – ОТ. 4) Якщо t0 та t1 – ОТ, то N☼v(t0, t1) – ОТ. При інтерпретації на qN : кожна програмована еквітонна V-квазіарна функція на N є значенням деякого ОТ ППА-EQ-N. При інтерпретації на fN : кожна програмована еквітонна V-фінарна функція на N є значенням деякого ОТ ППА-EQ-N. Подання програмованих еквітонних V-квазіарних функцій на N операторними термами ППА-EQ-N неоднозначне.

>11 Моделювання логічних операцій засобами ППА-EQ-N. Нехай функції p, q трактуються як предикати. 11 Моделювання логічних операцій засобами ППА-EQ-N. Нехай функції p, q трактуються як предикати. Тоді Sx,y(÷xy, 1, p), Sx,y(xy, p, q) та Sx,y(+xy, p, q) можна трактувати як предикати p, p&q та pq. pq та pq можна подати як pq та (pq)&(qp). Приклади програмованих V-квазіарних функцій на N При обмеженні на клас V-фінарних функцій вони будуть прикладами програмованих V-фінарних функцій на N. Приклад 1. Функції-константи програмовані. Наприклад, константа 1 подається ОТ Sx(sx, о), який позначимо 1. Приклад 2. Функції nsgх та sgх програмовані. Подаються ОТ Su(÷ux, 1) та Su,v(÷uv, 1, Su(÷ux, 1).

>12 Приклад 3. Функція |x–y| програмована.     Подається ОТ Su,v(+uv, ÷xy, 12 Приклад 3. Функція |x–y| програмована. Подається ОТ Su,v(+uv, ÷xy, ÷yx). Приклад 4. Предикат x>y програмований. Він моделюється функцією ÷xy. Приклад 5. Предикати xy, x=y та xy програмовані. xy моделюється функцією (x+1)÷y. x=y моделюється функцією 1–|x–y|. xy можна подати як (x=y) або як (x>y)(y>х). Приклад 6. Функції min(x, y) та max(x, y) програмовані. Відповідні ОТ minxy : N(÷xy, 'у, 'х) maxxy : N(÷xy, 'х, 'у)

>13 Приклад 7. Функція mod(x, y) програмована.      Відповідний ОТ 13 Приклад 7. Функція mod(x, y) програмована. Відповідний ОТ modxy: N☼х(Sх(÷xy, sх), ÷xy). Приклад 8. Функція [x] програмована. Відповідний ОТ: Sу(N☼у(Su,v(÷uv, sх, Su,v(uv, sy, sy)), sy), 0). Приклад 9. Функція [x/y] програмована. Відповідний ОТ: Sz(N☼z(Su,v(÷uv, sх, Su(uy, sz)), sz), 0). Приклад 10. Функція HCK(x, y) програмована. Відповідний ОТ: Sz(N☼z(Su,v(+uv, modzx, modzy), sz), maxxy). Приклад 11. Функція HCD(x, y) програмована. Відповідний ОТ: Sz(N☼z(Su,v(+uv, modxz, modyz), Su(÷zu, ÷zu, 1)), minxy).

>14 Твердження 8. Функцію +xy можна отримати з базових функцій о, sх, 'v, xy, 14 Твердження 8. Функцію +xy можна отримати з базових функцій о, sх, 'v, xy, ÷xy за допомогою N☼v та Sv1,…,vn. Маємо z

>15 7.2. Примітивні програмні алгебри n-арних функцій Уточнимо базові операції для ППА n-арних функцій. 15 7.2. Примітивні програмні алгебри n-арних функцій Уточнимо базові операції для ППА n-арних функцій. Операції суперпозиції – це Sn+1, де n1. Операція розгалуження  кожним n-арним функціям g, h та n-арному предикату p зіставляє n-арну функцію f = (p, g, h), кожне значення f(x1,..., xn) якої задається таким чином: f(x1,..., xn) = g(x1,..., xn) при умові p(x1,..., xn) =T, f(x1,..., xn) = h(x1,..., xn) при умові p(x1,..., xn) = F, f(x1,..., xn) в усіх інших випадках. Твердження 1. Функція (p, g, h) алгоритмічно обчислювана відносно функцій p, g та h.

>16 Операція циклу ☼ n-арній функції g та n-арному предикату p зіставляє n-арну функцію 16 Операція циклу ☼ n-арній функції g та n-арному предикату p зіставляє n-арну функцію f = ☼(p, g), значення f(x1,..., xn) якої для кожних x1,..., xn визначається як перший елемент am послідовності a0 = x1, a1 = g(a0, x2,..., xn), a2 = g(a1, x2,..., xn),..., ak = g(ak–1, x2,..., xn), ... такий, що p(am, x2,..., xn) = F та p(ak, x2, ..., xn) = T для всіх k

>17 Базові програмовані функції для n-арних функцій на R: – функції-селектори Imn(x1,...,xn) = xm, 17 Базові програмовані функції для n-арних функцій на R: – функції-селектори Imn(x1,...,xn) = xm, де nm1; – натуральнозначні константи kn(x1,...,xn) = k, де kN; – стандартні функції +, –,  та / на множині R; – обмежені на N функції [x1/x2] та mod(x1, x2); – предикати порівняння <, , >, , = та . Функція на R програмована, якщо її можна отримати із базових функцій за допомогою операцій Sn+1, , ☼ та , &, , . Твердження 3. Кожна програмована n-арна функція на R алгоритмічно обчислювана відносно базових функцій. Алгебру (R ; , &, , , , ☼, S2, S3,... ), носієм R якої є клас всіх програмованих n-арних функцій на R, назвемо ППА програмованих n-арних функцій на R (ППА-AR-R).

>18 Програмовані n-арні функції на N.  Операція розгалуження N n-арним функціям g, h, 18 Програмовані n-арні функції на N. Операція розгалуження N n-арним функціям g, h, p зіставляє n-арну функцію f, кожне значення f(x1,..., xn) якої визначається так: f(x1,..., xn) = g(x1,..., xn) при умові p(x1,..., xn)  0, f(x1,..., xn) = h(x1,..., xn) при умові p(x1,..., xn) = 0, f(x1,..., xn) в усіх інших випадках. Операція циклу N☼ n-арним функціям g та p зіставляє n-арну функцію f, значення f(x1,..., xn) якої для кожних x1,..., xn визначається як перший елемент am послідовності a0 = x1, a1 = g(a0, x2, ..., xn), a2 = g(a1, x2,..., xn), ..., ak = g(ak–1, x2,..., xn), ... такий, що p(am, x2,..., xn) = 0 та p(ak, x2,..., xn)  0 для всіх k

>19 Твердження 4. Якщо функції p, g, h алгоритмічно обчислювані, то функція N(p, g, 19 Твердження 4. Якщо функції p, g, h алгоритмічно обчислювані, то функція N(p, g, h) теж алгоритмічно обчислювана. Твердження 5. Якщо функції p та g алгоритмічно обчислювані, то функція N☼(p, g) теж алгоритмічно обчислювана. Базові програмовані функції для n-арних функцій на N: о, s та Imn, де nm1, а також +, , ÷. Функція на N програмована, якщо її можна отримати з базових функцій за допомогою скінченної кількості застосувань операцій Sn+1, N, N☼. Твердження 6. Кожна програмована n-арна функція на N алгоритмічно обчислювана.

>20 Алгебра (N ; N, N☼, S2, S3,... ), носієм N якої є клас 20 Алгебра (N ; N, N☼, S2, S3,... ), носієм N якої є клас усіх програмованих n-арних функцій на N, а операціями – операції N, N☼ та Sn+1, де n1, – ППА програмованих n-арних функцій на N (ППА-AR-N). Алфавіт мови ППА-AR-N: о, s, +, , ÷ та Imn, де nm1; N, N☼ та Sn+1, де n1; допоміжні "(", ")", ",". Індуктивне визначення ОТ ППА-AR-N: 1) кожен символ базової функції є атомарним ОТ; 2) якщо t0, t1,..., tn – ОТ, то Sn+1(t0, t1,..., tn) – ОТ; 3) якщо t0, t1 та t2 – ОТ, то N(t0, t1, t2) – ОТ; 4) якщо t0 та t1 – ОТ, то N☼(t0, t1) – ОТ. Кожна програмована n-арна функція на N є значенням деякого ОТ ППА-AR-N. Через порушення умов арності не кожен ОТ ППА-AR-N має певне значення. Подання функцій ОТ ППА-AR-N неоднозначне.

>21 Моделювання логічних операцій над предикатами. Нехай p та q трактуються як предикати. Тоді 21 Моделювання логічних операцій над предикатами. Нехай p та q трактуються як предикати. Тоді nsg(p), pq та p+q можна трактувати як предикати p, p&q та pq. Приклад 12. Функції-константи програмовані. Приклад 13. Функції nsg(x1) та sg(x1) програмовані. nsg(x1) = 1÷x1, sg(x1) = 1÷ (1÷x1). Приклад 14. Функція |x1–x2| програмована. |x1–x2| = (x1÷x2) + (x2÷x1). Приклад 15. Предикати x1>x2, x1x2, x1=x2, x1x2 програмовані. x1>x2 та x1x2 моделюються функціями x1÷x2 та (x1+1) ÷x2. x1=x2 та x1x2 можна подати як (x1x2)&(x2x1) та (x1=x2).

>22 Приклад 16. Функція mod(x1, x2) програмована.  ОТ для функції mod(x1, x2): N☼(S3(÷, 22 Приклад 16. Функція mod(x1, x2) програмована. ОТ для функції mod(x1, x2): N☼(S3(÷, S2(s, I12), I22), ÷). Твердження 7. Функцію x1+x2 можна отримати з функцій о, s, Іmn, , ÷ за допомогою операцій N☼ та Sn+1. x1+x2 подаємо у вигляді S4(N☼(p, g), о2, I22, І22, І12), де p – предикат x1

>23 8. Кодування та нумерації  Різні формальні моделі алгоритмів можуть діяти на різних 23 8. Кодування та нумерації Різні формальні моделі алгоритмів можуть діяти на різних множинах: – MТ та нормальні алгоритми є вербальними алгоритмами – МНР-програми визначають функції на N Для порівняння різних формальних моделей і переходу від одної моделі до іншої – кодування елементів однієї множини елементами іншої. Кодування множини A у множині B – ін’єктивне  : A→B таке, що існують алгоритми  та : – для кожного aA маємо (a)(a); –  для кожного bB визначає b(A), і якщо так, то знаходить –1(b).

>24 Кодування множини A на множині B – ін’єктивне та сюр’єктивне  : A→B 24 Кодування множини A на множині B – ін’єктивне та сюр’єктивне  : A→B таке, що існують алгоритми  та : – для кожного aA маємо (a)(a); – для кожного bB маємо (b) = –1(b). Однозначне кодування множини A у множині B – ін’єктивне функціональне  : A→B таке, що  алгоритми  та : – для кожного aA маємо (a) = (a); –  для кожного bB визначає b(A), і якщо так, то знаходить –1(b). Однозначне кодування множини A на множині B – бієктивне  : A→B таке, що існують алгоритми  та : – для кожного aA маємо (a) = (a); – для кожного bB маємо (b) = –1(b).

>25 Нехай  – X-A-алгоритм,  – Y-B-алгоритм,   – однозначне кодування X 25 Нехай  – X-A-алгоритм,  – Y-B-алгоритм,  – однозначне кодування X на Y,  – однозначне кодування A на B. Алгоритми  та  еквівалентні з точністю до кодувань  та , якщо: – для кожного xX маємо (x) = –1(((x))); – для кожного yY маємо (y) = ((–1(y))). Алгоритми  та  еквівалентні, якщо  та  еквівалентні з точністю до деяких кодувань  та . Клас алгоритмів  називають універсальним, якщо кожний алгоритм еквівалентний деякому алгоритму з . Аналогічно – поняття універсального класу числень. МНР-програми, МТ, НА визначають універсальні класи алгоритмів.

>26 Нумерації Нумерація множини A – сюр’єктивне функціональне   : N→A.  26 Нумерації Нумерація множини A – сюр’єктивне функціональне  : N→A. – кожний елемент bA має номер з N (можливо, не єдиний) – кожне nN є номером єдиного елемента (n)A Однозначна нумерація множини A – бієктивне відображення  : N→A. Для ТА особливо важливими є ефективні нумерації, які дозволяють: – за кожним bA ефективно визначити його номер – за кожним nN ефективно визначити (n) = bA, нумерований цим n. Нумерація  : N→A ефективна, якщо існують алгоритми  та : – для кожного aA маємо (a)–1(a) – для кожного nN маємо (n) = (n)  : N→A – ефект. нумерація  –1 : A→N – кодування A на N.

>27 Канторові нумерації Це однозначні ефективні нумерації пар та n-ок натуральних чисел.  Пари 27 Канторові нумерації Це однозначні ефективні нумерації пар та n-ок натуральних чисел. Пари натуральних чисел розташуємо в послідовність так: – (x, y) передує (u, v)  x+y

>28 Теорема 1. Функції C(x, y), l(n) та r(n) – ПРФ. (x, y) знаходиться 28 Теорема 1. Функції C(x, y), l(n) та r(n) – ПРФ. (x, y) знаходиться на x-му місці після (0, x+y). Перед парою (0, x+y) – x+y груп пар з однаковою сумою компонент. В групі із сумою компонент m міститься m+1 пара. Тому перед (0, x+y) – всього n = 1+2+...+(x+y) = (x+y+1)(x+y)/2 пар. Звідси C(x, y) = n+x = [(x+y+1)(x+y)/2] + x = [((x+y)2+3x+y)/2] – ПРФ Нехай x = l(n), y = r(n). Тоді 2n = 2C(x, y) = ((x+y)2+3x+y)/2, звідки 8n+1 = (2x+2y+1)2+8x = (2x+2y+3)2–8y–8. 2x+2y+1 < [8n+1] < 2x+2y+3  x+y+1 = [([8n+1]+1)/2]. Однак n = C(x, y) = [(x+y+1)(x+y)/2]+x, звідки l(n) є ПРФ: l(n) = x = n÷[(x+y+1)(x+y)/2] = = n÷[[([8n+1]+1)/2][([8n+1]÷1)/2]/2]. Маємо r(n) = y = (x+y+1)÷(x+1) = [([8n+1]+1)/2]÷(l(n)+1) – ПРФ.

>29 C(x, y) задає бієкцію  NN→N  пара функцій (l(n), r(n)) задає бієкцію 29 C(x, y) задає бієкцію NN→N пара функцій (l(n), r(n)) задає бієкцію N→NN. Функції C, l та r зв’язaні тотожностями: C(l(n), r(n)) = n; l(C(x, y)) = x; r(C(x, y)) = y Нехай функції C, L, R зв’язані тотожностями C(L(n), R(n)) = n; L(C(x, y)) = x; R(C(x, y)) = y (1) Назвемо C(x, y) номером пари (x, y)  це однозначна нумерація NN. Нехай задана однозначна нумерація NN: всі пари натуральних чисел без повторів розташовані в послідовність (x0, y0), (x1, y1),..., (xn, yn),.... Взявши L(n) = xn, R(n) = yn, C(xn, yn) = n маємо функції, пов’язані тотожностями (1).

>30 Нумерація n-ок натуральних чисел для довільного n:     C3(x1, x2, 30 Нумерація n-ок натуральних чисел для довільного n: C3(x1, x2, x3) = C(C(x1, x2), x3); Ck+1(x1, x2,..., xk+1) = Ck(C(x1, x2), x3,..., xk+1) = = C(...С(C(x1, x2), x3),...), xk+1) Координатні функції Cn1,..., Cnn вводимо так: Нехай Cn(x1, x2,..., xn) = m. Тоді Cn1(m) = x1, Cn2(m) = x2, ..., Cnn(m) = xn. Для функцій Cn, Cn1,..., Cnn маємо тотожності: Cn(Cn1(x),..., Cnn(x)) = x; Cnk(Cn(x1, x2,..., xn)) = xk, 1kn. Теорема 2. Функції Cn, Cn1,..., Cnn є ПРФ. Cnn(m) = xn = r(m); Cnn–1(m) = xn–1 = r(l(m)); ..., Cn2(m) = x2 = r(l(...l(m))..); Cn1(m) = x1 = l(l(...l(m))..)

>31 Приклад 1. Знайдемо l(100) та r(100).  Для  x = l(100) та 31 Приклад 1. Знайдемо l(100) та r(100). Для x = l(100) та y = r(100) маємо С(х, у) = 100. Нехай х+у = р. Тоді p є найбільшим натуральним числом, для якого р(р+1)  2100. Звідси p = 13. Тому х+у = 13, х = 100 – [(1314)/2] = 9, y = 13–9 = 4. Отже, l(100) = 9 та r(100) = 4. Приклад 2. Розв'яжемо рівняння C4(x, y, z, v) = 207. С(С(С(x, y), z), v) = 207. Нехай С(С(x, y), z) = a, маємо С(a, v) = 207. Нехай a+v=р. Тоді p – найбільше таке: р(р+1)2207  p=19, a=17, v=2. Маємо С(С(x, y), z) = 17. Нехай С(x, y) = b, тоді С(b, z) = 17. Нехай b+z=q. Тоді q – найбільше таке: q(q+1)217  q=5, b=2, z=3. Маємо С(x, y) = 2, звідки x=1 та y=0.

>32 Приклад 3. Однозначна ефективна нумерація всіх скінченних послідовностей натуральних чисел на основі канторових 32 Приклад 3. Однозначна ефективна нумерація всіх скінченних послідовностей натуральних чисел на основі канторових нумераційних функцій Кодування  таких послідовностей () = 0; (a1,..., an) = C(Cn(a1,..., an), n–1) + 1. – бієктивне. Обернене η = –1 – шукана однозначна нумерація.

>33 Приклад 4. Однозначна ефективна нумерація всіх скінченних послідовностей нат. чисел на основі подання 33 Приклад 4. Однозначна ефективна нумерація всіх скінченних послідовностей нат. чисел на основі подання нат. числа у 2-й системі числення. Кодування  скінченних послідовностей: () = 0;  – бієктивне. Обернене  = –1 – шукана однозначна нумерація.

>34 Приклад 5. Однозначне кодування  всіх непорожніх скінченних послідовностей натуральних чисел (модифікація кодування 34 Приклад 5. Однозначне кодування  всіх непорожніх скінченних послідовностей натуральних чисел (модифікація кодування )  – бієктивне. Обернене відображення  = –1 – однозначна ефективна нумерація всіх непорожніх скінченних послідовностей натуральних чисел.

>35 Приклад 6. Ефективна нумерація  всіх формул заданої мови 1-го порядку зі зліченним 35 Приклад 6. Ефективна нумерація  всіх формул заданої мови 1-го порядку зі зліченним алфавітом Занумеруємо предметні імена x0, x1,..., КС c0, c1,..., ФС f0, f1,... ПС p0, p1,... Задамо кодування термів  та формул : (xk) = 3k; (ck) = 3k + 1; (fk t1...tn) = 3C(Cn((t1),..., (tn)), k) + 2; (pk t1...tn) = 4C(Cn((t1),..., (tn)), k); () = 4C(k, ()) + 1; () = 4C((), ()) + 2; (xk) = 4C(k, ()) + 3. Обернене  = –1 – шукана ефективна нумерація

>36 9. Функція Геделя. Eлімінація примітивної рекурсії Функція Геделя  дозволяє кодувати одним натуральним 36 9. Функція Геделя. Eлімінація примітивної рекурсії Функція Геделя  дозволяє кодувати одним натуральним числом довільну скінченну послідовність натуральних чисел. (x, y) = mod(l(x), 1 + (y + 1)r(x)). Функція  є ПРФ. Теорема (про основну властивість функції Геделя). Для довільної скінченної послідовності натуральних чисел b0, b1,..., bn існує натуральне число t таке: (t, і) = bі для всіх і{0,..., n}. Кодування за допомогою функції Геделя (x, y) дозволяє при розширенні множини базових функцій промоделювати операцію примітивної рекурсії.

>37 Теорема (про елімінацію операції примітивної рекурсії). Функція f = R(g, h) може бути 37 Теорема (про елімінацію операції примітивної рекурсії). Функція f = R(g, h) може бути отримана з функцій g, h, базових функцій та +, ,÷ за допомогою операцій суперпозиції Sn+1 та мінімізації М. Доводимо для випадку, коли f – бінарна функція. Зафіксуємо x та y. Згідно зі схемою примітивної рекурсії для функції f(x, y) маємо: f(x, 0) = g(x); f(x, 1) = h(x, 0, f(x, 0)); ............... (1) f(x, y) = h(x, y – 1, f(x, y–1)). За основною властивістю функції Геделя існує таке t, що (t, 0) = f(x, 0); . ........ (2) (t, y) = f(x, y).

>38 Ураховуючи (1), перепишемо (2) у вигляді     (t, 0) = 38 Ураховуючи (1), перепишемо (2) у вигляді (t, 0) = g(x); (t, 1) = h(x, 0, (t, 0)); .................. (3) (t, y) = h(x, y–1, (t, y–1)). Можна розглядати (3) як систему рівнянь відносно t. Згідно з (3), для всіх u{0,..., у–1} маємо (t, u+1) = h(x, u, (t, u)), звідки y = u(y=u або (t, u+1)  h(x, u, (t, u)). Тому (3) рівносильне системі (t, 0) = g(x); y = u(|y–u|nsg(|(t, u+1) – h(x, u, (t, u))|) = 0) (4)

>39 Позначимо   u(|y–u|nsg(|(t, u+1) – h(x, u, (t, u))|) = 0) 39 Позначимо u(|y–u|nsg(|(t, u+1) – h(x, u, (t, u))|) = 0) як F(x, y, t). Тоді система (4) рівносильна рівнянню |(t, 0) – g(x)| + |y – F(x, y, t)| = 0 (5) За основною властивістю функції Геделя система (3), отже, і рівносильне їй рівняння (5), має розв’язок відносно t для всіх значень x та y, тому існує мінімальний розв’язок t = z(|(z, 0) – g(x)| + |y – F(x, y, z)| = 0). Позначивши таке t як (x, y), маємо  f(x, y) = (t, y) = ((x, y), y). Функція  отримана з функцій g, h, функцій , +, , ÷, nsg і базових функцій о, s, Іmn за допомогою Sn+1 та M.

>40 Функція  отримується з функцій о, s, Іmn  та +, , ÷, 40 Функція  отримується з функцій о, s, Іmn та +, , ÷, mod, l, r за допомогою операцій Sn+1 та M. l та r отримані з [x], [x/2], о, s, Іmn, +, , ÷ за допомогою операцій Sn+1. [x], [x/2], mod отримуються з о, s, Іmn, +, , ÷ за допомогою Sn+1 та М. Ураховуючи nsg(x) = 1÷x, функцію  можна отримати з о, s, Іmn, +, , ÷ за допомогою операцій Sn+1 та М. Отже, функція , а тому і функція f, отримуються з g, h, о, s, Іmn, +, , ÷ за допомогою операцій Sn+1 та М. Наслідок. Клас ЧРФ збігається з класом функцій, отриманих з функцій о, s, Іmn, +, , ÷ за допомогою операцій Sn+1 та M.

>41 10. Теза Чорча Розглянемо співвідношення між різними формальними уточненнями поняття АОФ.  Розглядаємо 41 10. Теза Чорча Розглянемо співвідношення між різними формальними уточненнями поняття АОФ. Розглядаємо n-арні функції на N. Теорема 1. Клас ЧРФ збігається з класом програмованих n-арних функцій на N. 1) ЧРФ  програмовані n-арні функції на N. Базові функції о, s, Іmn програмовані. Функції +, , ÷ програмовані. Згідно з теоремою про елімінацію операції R, досить показати: якщо g програмована, то f = M(g) програмована. У випадку (n+1)-арної g маємо ОТ ППА-AR-N для f = M(g): Sn+2(N☼(Sn+2(g, І2n+1,..., Іn+2n+1, І1n+1), S2(s, І)), оn, І1n,..., Іnn).

>42 2) Програмовані n-арні функції на N  ЧРФ.  Базові програмовані n-арні функції 42 2) Програмовані n-арні функції на N  ЧРФ. Базові програмовані n-арні функції о, s, Іmn, +, , ÷ є ЧРФ. Залишається показати: якщо p та f – ЧРФ, то N☼(p, f) теж ЧРФ. Нехай дано ЧРФ p(x1,..., xn) та f(x1,..., xn). Розглянемо функцію q(x1,..., xn, y) – y-кратну ітерацію функції f за x1: q(x1,..., xn, y) = x1; q(x1,..., xn, k+1) = f(q(x1,..., xn, k), x2,..., xn). q можна подати як R(g, h), де функції g та h – суть g(x1,..., xn) = x1 та h(x1,..., xn, y, z) = f(z, x2,..., xn). ОТ алгебри ЧРФ для функції q: R(І1n, Sn+1(f, Іn+2n+2, І2n+2,..., Іnn+2)) Звідси N☼(p, f)(x1,..., xn) = = q(x1,..., xn, y(p(q(x1,..., xn, y), x2,..., xn) = 0)).

>43 Теорема 2. Кожна ЧРФ – МНР-обчислювана функція. Базові функції о, s, Іmn обчислюються 43 Теорема 2. Кожна ЧРФ – МНР-обчислювана функція. Базові функції о, s, Іmn обчислюються МНР-програмами: – програма 1) Z(0) – для функції о; – програма 1) S(0) – для функції s; – програма 1) T(m–1, 0) – для функції Іmn, Нехай k-арна g та n-арні g1,..., gk обчислювані відповідно МНР-програмами G, G1,..., Gk. Тоді Sn+1(g, g1,..., gk) обчислюється МНР-програмою вигляду T(j, m+j+1) для всіх j{0,..., n–1} Gj[m+1,..., m+n →m+n+j] для всіх j{0,..., n–1} G[m+n+1,..., m+n+k→ 0]. Тут m = max((G), (G1),..., (Gk))).

>44 Нехай n-арна g та (n+2)-арна функція h обчислювані відповідно МНР-програмами G та H. 44 Нехай n-арна g та (n+2)-арна функція h обчислювані відповідно МНР-програмами G та H. Тоді функція R(g, h) обчислюється МНР-програмою такого вигляду (тут m = max((G), (H)): T(j, m+j+1) для всіх j{0,..., n} p) G[m+1,..., m+n → m+n+3] J(m+n+1, m+n+2, q) H[m+1,..., m+n+2, m+n+3→ m+n+3] S(m+n+2) J(0, 0, p) q) T(m+n+3, 0).

>45   Нехай (n+1)-арна функція g обчислювана МНР-програмою G.  Тоді функція M(g) 45 Нехай (n+1)-арна функція g обчислювана МНР-програмою G. Тоді функція M(g) обчислюється МНР-програмою такого вигляду (тут m = (G)): T(j, m+j+1) для всіх j{0,..., n–1} p) G[m+1,..., m+n+1 → 0] J(0, m+n+2, q) S(m+n+1) J(0, 0, p) q) T(m+n+1, 0). Отже, кожна ЧРФ – МНР-обчислювана функція

>46 Теорема 3. Кожна МНР-обчислювана функція є ЧРФ.  Нехай f(x1,..., xn) обчислюється МНР-програмою 46 Теорема 3. Кожна МНР-обчислювана функція є ЧРФ. Нехай f(x1,..., xn) обчислюється МНР-програмою P. Позначимо (x1,..., xn, t) функцію, значенням якої є вміст 0-го регістру після t кроків роботи P над x1,..., xn, або після qt кроків, якщо на q-му кроці програма P при роботі над x1,..., xn зупинилась. Позначимо (x1, ...., xn, t) функцію, значенням якої є номер команди після t кроків роботи програми P над x1,..., xn, або 0, якщо P при роботі над x1,..., xn зупинилась на кроці qt. Моделюючи роботу P над x1,..., xn за t кроків, можна довести, що  та  є ПРФ. Однак f(x1,..., xn) = (x1,..., xn, t((x1,..., xn, t) = 0)) Отже, f є ЧРФ

>47 Наслідок 1. Клас ЧРФ збігається з класом МНР-обчислюваних функцій. Наслідок 2. Класи ЧРФ, 47 Наслідок 1. Клас ЧРФ збігається з класом МНР-обчислюваних функцій. Наслідок 2. Класи ЧРФ, МНР-обчислюваних функцій та програмованих n-арних функцій на N збігаються. Теорема 4. Такі класи функцій збігаються: 1) ЧРФ; 2) програмованих n-арних функцій на N; 3) МНР-обчислюваних функцій; 4) функцій, обчислюваних за Тьюрінгом; 5) функцій, обчислюваних за Марковим; 6) функцій, обчислюваних за Постом.

>48 Розглянуті нами формалізми задають один і той самий клас n-арних функцій на N. 48 Розглянуті нами формалізми задають один і той самий клас n-арних функцій на N. При цьому самі визначення формалізмів такі, що забезпечують ефективну обчислюваність описуваних ними функцій. Є всі підстави вважати, що такі формалізми є різними математичними уточненнями інтуїтивного поняття АОФ. Уперше таке твердження стосовно РФ висунув у 1936 р. А. Чорч, тому воно дістало назву тези Чорча. С. Кліні узагальнив тезу Чорча на випадок часткових функцій. Tеза Чорча. Клас ЧРФ збігається з класом n-арних АОФ, заданих на множині натуральних чисел. З тези Чорча як наслідок випливає: клас РФ збігається з класом тотальних АОФ, заданих на множині натуральних чисел.

>49 ТЧ є природно-науковим фактом, підтвердженим такими результатами: 1) істотно різні формальні уточнення поняття 49 ТЧ є природно-науковим фактом, підтвердженим такими результатами: 1) істотно різні формальні уточнення поняття АОФ, запропоновані різними авторами в різний час, виявилися еквівалентними в смислі задання одного й того ж самого класу функцій; 2) перехід від задання функції в одному формалізмі до її задання в іншому формалізмі є конструктивним – здійснюється певним алгоритмом; 3) для кожного з таких формалізмів усі задані в ньому функції алгоритмічно обчислювані в інтуїтивному смислі; 4) усі відомі алгоритмічно обчислювані n-арні функції на N виявилися ЧРФ. Нікому ще не вдалось навести приклад функції, яку можна було б вважати АОФ в інтуїтивному смислі, але яка не є ЧРФ.

>50 Значення тези Чорча: 1) Прийняття ТЧ перетворює інтуїтивні поняття алгоритму, обчислюваності, розв’язності в 50 Значення тези Чорча: 1) Прийняття ТЧ перетворює інтуїтивні поняття алгоритму, обчислюваності, розв’язності в об’єкти математичного вивчення. Це дає можливість ставити й розв’язувати питання про алгоритмічну обчислюваність функцій, алгоритмічну розв’язність чи нерозв’язність масових проблем. 2) Використання ТЧ як своєрідної аксіоми дозволяє в багатьох випадках замінити формальні завдання алгоритмів на неформальні їх описи. Це істотно спрощує доведення, дозволяє виділити основну ідею доведення чи побудови, звільняючи його від зайвих деталей. Доведення на основі ТЧ завжди має бути ретельно аргументованим! При виникненні найменших сумнівів треба проводити чисто формальне доведення

>51 Приклад використання тези Чорча. Нехай f є ЧРФ. Тоді функція h така: 51 Приклад використання тези Чорча. Нехай f є ЧРФ. Тоді функція h така: h(x) = 1 при xEf та h(x) в інших випадках – є ЧРФ. Задамо поетапний процес глобального обчислення всіх значень функції f. На кожному етапі починаємо обчислення для наступного значення аргументу. Етап 0: 1-й крок обчислення f(0). Етап n: 1-й крок обчислення f(n), 2-й крок обчислення f(n–1), …, (n+1)-й крок обчислення f(0). Якщо на якомусь етапі обчислення певного значення f(m) завершується, то порівнюємо f(m) та x. При f(m) = x процес глобальних обчислень завершується, адже тоді xEf , тому результатом буде число 1. При f(m)  x продовжуємо процес глобальних обчислень. Маємо алгоритм для обчислення функції h, звідки за ТЧ h(x) є ЧРФ.