You are on page 1of 19

Literatura i pravila polaganja

 u n lj i v o s t
Izrac  c
▸ V. Ca  ic
, Komputonomikon, udzbenik, 2021.
⋙ p r e d a v a nj a & v j ez b e ⋘  c
▸ V. Ca  ic
, Komputrivij, zbirka zadataka (ZZ), 2021.
M. Vukovic, Izracunljivost, skripta, PMF{MO, 2015.
Slajdovi su pomoc u nastavi, nisu za samostalno ucenje! ▹
▹ J. Shoenfield, Recursion theory, Springer-Verlag, 1993.

 cic <veky@math.hr>
Vedran Ca
i=1 bod(tjedani )≤2 )≤20
[ konzultacije: uzivo cetvrtkom, 11{13h (A306) t ∶= (∑12
ili preko Zooma uz najavu ]
if ∃ 4i=1 bod(tjedani ) ∶ b ∶= ∑2i=1 bodovi(kolokviji )≤25 + t
PMF{Matematicki odsjek if b < 30 or zelja ∶ b ∶= (b − t) ∕∕ 3 + t + bodovi(kolokvijpopr )≤40
https://web.math.pmf.unizg.hr/~veky/izr
[ ili samo guglajte izracunljivost":]
" if b ≥ 30 ∶ b += bodovi(zavrsni ispit)≤30
https://moodle.srce.hr/2021-2022/course/view.php?id=96011
if b ≥ 45 ∶ ocjena ∶= b ∕∕ 15 − 1
akademska godina 2021./2022.
zadnja promjena: 7. listopada 2021. Prije drugog kolokvija mozete izraditi seminar: javite se za temu.
Tada na usmenom odgovarate samo temu seminara.

 je izrac
Sto unljivost? Algoritmi kroz povijest
Ukratko, proucavanje algoritama kao matematickih objekata.
▸ Babilon, −17. stoljece: procedura za rekonstrukciju
Zasto nam to treba? Prvenstveno da bismo dokazali da za dani
problem ne postoji algoritam. Primjerice, da bismo dokazali . . . dvaju brojeva iz njihove razlike i umnoska
▸ Grcka, −3. stoljece: Euklidov algoritam za odredivanje
ka logika)
Primjer (Churchov teorem, Matematic najvece zajednicke mjere dviju duzina
Logika prvog reda je neodluciva: ne postoji algoritam ▸ Perzija, 9. stoljece: Al-Horezmi zapisuje metode
koji za proizvoljnu formulu prvog reda odreduje je li valjana. 
racunanja s arapskim brojkama (ucimo ih u osnovnoj skoli)
▸ Italija, 16. stoljece: Ferrarijeva metoda za rjesavanje
Jos neki primjeri problema za koje ne postoje algoritmi:
▸ (Diofantske jednad
algebarskih jednadzbi cetvrtog stupnja
zbe) Neka je p(x1 , . . . , xn ) polinom s
▸ Indija, 21. stoljece: AKS, polinomni test za prim-brojeve
cjelobrojnim koe cijentima. Ima li p nultocku u Zn ?
▸ (Post) Neka je R kona cna binarna relacija nad {0, 1}∗ . Usprkos vrlo razlicitim matematickim formalizacijama
Postoje li a1 R b1 , . . . , an R bn za koje je a1 ⋯ an = b1 ⋯ bn ? u kojima su formulirani, te razlicitim tipovima podataka
Za velike potklase gornjih problema su poznati algoritmi, 
s kojima su radili, svima njima je nesto zajednicko. Sto?
no za opcenite probleme znamo da ne postoje.

Intuitivni opis pojmova Brojevne funkcije

Podaci su nam, od sad pa dok ne kazemo drugacije,


Izracunavanje je postupak kojim iz nekih zadanih objekata iskljucivo prirodni brojevi s nulom. Oznacavamo N+ ∶= N ∖ {0}.
(ulaznih podataka ), ksiranim skupom mehanickih pravila Druge objekte kodiramo prirodnim brojevima.
(algoritmom ) dobivamo krajnji rezultat (izlazni podatak ).
Ako za izracunavanje zelimo naglasiti algoritam A Dakle, algoritmima racunamo (neke) funkcije f cija domena
i ulazne podatke x, zovemo ga A-izracunavanje s x. Df je podskup od Nk za neki k ∈ N+ , a kodomena im je N.
Ubuduce podrazumijevamo funkcije takvog oblika (brojevne ).
Pretpostavljamo tocno jedan izlazni podatak izracunavanja.
Izracunavanje s l izlaznih podataka modeliramo pomocu Broj k zovemo mjesnoscu funkcije f, kazemo da je f
l nezavisnih izracunavanja s istim ulaznim podacima. k-mjesna funkcija, i pisemo fk ako to zelimo istaknuti.
Samu k-torku (x1 , . . . , xk ) ∈ Nk skraceno pisemo x⃗ ili x⃗k .
S druge strane dozvoljavamo jedan ili vise ulaznih podataka
(mjesnost ), ali konacno mnogo i ksno za zadani algoritam. Kazemo da je funkcija fk totalna ako je Df = Nk .
Nije nuzno da za sve ulazne podatke algoritam daje rezultat Prazna funkcija ⊗ ima domenu ∅ (nije de nirana nigdje).
| ponekad moze raditi beskonacno dugo bez zaustavljanja. Svaka neprazna funkcija ima jedinstvenu mjesnost.
Pravit cemo se da i prazne funkcije imaju mjesnost: ⊗k , k ∈ N.

Izracunavanje funkcija Nekonstruktivna egzistencija algoritma

De nicija Trebamo biti oprezni: dokazati da je funkcija izracunljiva"


"
ne znaci nuzno naci algoritam za nju".
Kazemo da algoritam A mjesnosti k racuna funkciju fk "
ako za sve x⃗ ∈ Nk vrijedi: Ipak, najcesce cemo doista konstruirati algoritme.
▸ Ako je x ⃗ ∈ Df , tada A-izracunavanje s x
⃗ stane, Primjer
te mu je izlazni podatak jednak f(⃗x). √

⎪1
⎪ ako postoji n uzastopnih petica u decimalama 2
▸ Ako x⃗ ∉ Df , tada A-izracunavanje s x⃗ nikada ne stane. f(n) ∶= ⎨
⎩0

⎪ inace
Funkcija f je izracunljiva ako postoji algoritam koji je racuna.
jest izracunljiva, iako ne znamo napisati algoritam za nju.
To nije prava" de nicija jer je pojam algoritma jos nejasan. Kljucno je da je f padajuca, a svaka padajuca funkcija
"
Formalizacijom pojma algoritma (i izracunavanja) na prirodnim brojevima je izracunljiva. (To cemo dokazati.)
dobit cemo i formalnu de niciju izracunljive funkcije:
npr. funkcija je RAM-izracunljiva ako postoji RAM-algoritam Funkcije poput ove u primjeru, cija slika je podskup od {0, 1} i
(taj pojam cemo precizno de nirati) koji je racuna. provjeravaju odredena svojstva, su ceste. Njima modeliramo . . .
Relacije Izracunljivost relacija
Za k ∈ N+ , k-mjesna relacija R je bilo koji podskup od Nk . Za relaciju Rk , s χkR oznacavamo njenu karakteristicnu funkciju
Ubuduce podrazumijevamo relacije takvog oblika (brojevne ).
⎪ 1 , ako vrijedi R(⃗

x)
Kao i za funkcije, k zovemo mjesnost relacije R, i pisemo Rk .

χR (⃗
x) ∶= ⎨ .
⎪ 0 , ina
c e
Svaka neprazna relacija ima jedinstvenu mjesnost.


Umjesto x⃗ ∈ R pisemo jos i R(⃗x). Dvomjesne (k = 2) relacije Vidimo da je χR totalna funkcija za svaku relaciju R.
(i funkcije, npr. aritmeticke operacije) cesto pisemo in ksno.
De nicija
Poistovjecujemo skup N1 sa skupom N: jednomjesne (k = 1)
relacije gledamo kao podskupove skupa prirodnih brojeva. Smatramo da je relacija R izracunljiva (za neku formalizaciju
izracunljivosti) ako je χR izracunljiva (za istu formalizaciju).
U teoriji skupova veza izmedu relacija i funkcija glasi: Za relacije, umjesto izracunavanje" cesto kazemo odlucivanje".
funkcije su specijalne relacije (one s funkcijskim svojstvom). " "
Algoritamski, prirodna veza ide u suprotnom smjeru: [Prazna relacija nema jedinstvenu karakteristicnu funkciju, ali
relacije su specijalne funkcije (one s kodomenom bool = {0, 1}). nema veze jer su sve one (nulfunkcije) trivijalno izracunljive.]
Relacije s funkcijskim svojstvom i njihovu vezu s funkcijama Kako bismo mogli dokazati da su nulfunkcije izracunljive?
proucavat cemo puno kasnije, kad budemo govorili o grafovima. Vrijeme je za formalizaciju . . .

RAM-stroj RAM-izracunavanje

Dakle, u RAM-programu svaka instrukcija je jednog od oblika:


RAM-stroj je "matematicki stroj": idealizirano racunalo
s beskonacno velikom memorijom, koje nikada ne grijesi. inc Rj uvecava broj u registru ( sadrzaj registra") Rj za 1,
"
i ide na sljedecu instrukciju;
Osnovni dijelovi RAM{stroja su: dec Rj ,l ako je sadrzaj registra Rj pozitivan, umanjuje ga za 1
cni niz instrukcija);
▸ program (I0 , I1 , . . . , In−1 : ksni kona i ide na sljedecu instrukciju, a inace ide na instrukciju Il ;
▸ registri (R0 , R1 , . . . : beskona
cno spremnika za podatke"); goto l ide na instrukciju Il .
"
▸ programski broja c (pc: redni broj trenutne instrukcije). ( Ide na instrukciju Ii " zapravo znaci postavljanje pc na i.)
"
Svaka instrukcija Ii , uz redni broj u programu (i ∈ [0  n⟩), ima: Na pocetku izracunavanja, ulazni podaci se stave u registre
▸ tip (inc, dec ili goto); R1 , . . . , Rk redom, dok se svi ostali registri, kao i pc, resetiraju :
▸ za inc i dec: adresu registra j ∈ N; njihov sadrzaj se postavi na 0.
▸ za dec i goto: odredi ste l ∈ [0  n] (ukljucivo). Kad pc postigne vrijednost n, kazemo da izracunavanje stane,
i sadrzaj registra R0 u tom trenutku je izlazni podatak.

RAM-algoritam i relevantni registri Primjeri RAM-programa


U samom RAM-programu nigdje ne pise intendirana mjesnost
algoritma. Isti RAM-program P racuna vise funkcija:
po jednu za svaku mjesnost. Zato uvodimo sljedeci pojam: Zadatak
Napisite RAM-programe koji racunaju / odlucuju:
RAM-algoritam Pk je ureden par RAM-programa P i
mjesnosti k ∈ N+ . Umjesto Pk -izracunavanje s x⃗" kazemo samo ▸ praznu relaciju ∅ Odredite duljinu i sirinu
"
P-izracunavanje s x⃗" ako znamo da je duljina od x⃗ jednaka k. ▸ praznu funkciju ⊗ (nP , mP , mPk ) napisanih
"
Svaki algoritam P racuna jedinstvenu funkciju:
k
▸ univerzalni skup Nk programa odnosno algoritama.
u njenoj domeni su sve k-torke s kojima P-izracunavanje stane, ▸ konstantu 5 (C5 ) Pazite!
svaka od njih preslikana u sadrzaj od R0 na kraju racunanja. Odlucitelji" uvijek stanu.
▸ identitetu I11 "
Kako svaka instrukcija koristi najvise jedan registar, Racunala" stanu tocno onda
▸ zbrajanje add2 "
svaki RAM-program koristi samo konacno mnogo registara. kada je ulaz u domeni funkcije.
▸ parnost 2N
Dakle za svaki RAM-program P postoji sirina mP : najmanji
broj takav da P koristi samo registre adresa manjih od mP . ▸ prethodnik (pd∣N+ ) ZZ: 1.1{1.3

Registar Rj je relevantan za program P ako je j < mP ,


a relevantan je za algoritam Pk ako je j < mP ∨ j ∈ [1  k].

Makroi | neformalno Makro-stroj


RAM-programi ne sluze samo za racunanje funkcija:
Makro-stroj je vrlo slican RAM-stroju: ima registre, programski
pored vrijednosti koju izracuna ( stavi" u R0 ),
" brojac, pomocni programski brojac ac, i makro-program.
RAM-program potencijalno proizvede i razne popratne efekte
na stanjima njegovih relevantnih registara. Svaka makro-instrukcija (instrukcija makro-programa) je:
▸ ili obi
cna RAM-instrukcija (tipa inc, dec ili go to),
Gledajuci te efekte, svaki RAM-program P mozemo shvatiti
kao elementarnu instrukciju nekog kompliciranijeg stroja. ▸ ili makro oblika P ∗, gdje je P proizvoljni RAM-program.

Primjer: za svaki j ∈ N, RAM-program Makro-izracunavanje se de nira kao i RAM-izracunavanje,


jedino sto moramo de nirati ponasanje makro-stroja
0. dec Rj , 2
Pj ∶= [ ] kad naide na instrukciju P∗.
1. go to 0
Makro-stroj tada pocne izvrsavati program P, kao RAM-stroj s
mozemo shvatiti kao instrukciju" zero Rj trenutnim stanjem registara i pomocnim programskim brojacem
"
za resetiranje registra Rj . Kazemo da je (koji pocinje od 0). Kad/ako pomocni programski brojac
zero Rj makro koji odgovara programu Pj , pisuci dode do nP (odnosno kad/ako to RAM-izracunavanje" stane),
"
(zero Rj ) ∶= Pj ∗ .
obicni programski brojac makro-stroja se uveca za 1 i
nastavlja se izvrsavanje makro-programa od sljedece instrukcije.
Spljostenje ( attening) makro-programa Ekvivalencija i simulacija
De nicija
Za svaki makro-program Q, de niramo njegovo spljostenje
kao RAM-program Q♭ koji nastaje sljedecim postupkom: Kazemo da su (RAM- ili makro-) programi P i P ′ ekvivalentni
ako za svaki k > 0, algoritmi Pk i P ′k racunaju istu funkciju.
Dok god u Q postoji barem jedan makro: Kazemo da P ′ simulira P ako za svaki k > 0, x⃗ ∈ N′k , te s ∈ N
1. Maknemo prvi makro iz Q: neka je to i. P∗ . postoji s ′ ∈ N takav da je za svaki j ∈ N, r(s)
j =r j
′ (s )
[gdje smo sa
(s)
2. Sva odredista veca od i i redne brojeve instrukcija vece od i rj oznacili sadrzaj registra Rj nakon s koraka P-izracunavanja
uvecamo za nP − 1 (umanjimo ih za 1 ako je P prazan). s x⃗ (i analogno s crticama)], te ako P-izracunavanje s x⃗ stane
nakon s koraka, tada P ′ -izracunavanje s x⃗ stane nakon s ′ koraka.
3. Za svaku instrukciju RAM-programa P, dodamo instrukciju
kojoj su redni broj i odrediste (ako postoji) uvecani za i. Lako je, iako tehnicki zahtjevno, vidjeti (indukcijom po s) da za
svaki prolaz kroz petlju opisanu na prethodnom slajdu, novi Q
Primijetimo da svaki prolaz kroz petlju umanjuje
(nakon petlje) simulira stari Q (prije petlje), te kao posljedica
broj makroa u Q za 1 (jer je P RAM-program).
toga, oni su ekvivalentni. Iteracijom tog argumenta dobivamo
Dakle, taj postupak sigurno stane za svaki makro-program Q.
Teorem
 se, Q i Q♭ su ekvivalentni: racunaju iste funkcije.
Stovi
Za svaki makro-program postoji ekvivalentni RAM-program.

RAM-makro ekvivalencija Generalizirani makroi i makro-programi


Kao i u RAM-slucaju, lako mozemo de nirati pojmove
makro-algoritma Qk , i makro-izracunljivosti funkcije fk . Posljedica ekvivalencije RAM- i makro-programa je
Korolar da kod pisanja makro-programa mozemo koristiti
ne samo makroe oblika P∗ gdje je P RAM-program,
Funkcija je makro-izracunljiva vec i one oblika Q∗ gdje je Q neki vec napisani makro-program,
ako i samo ako je RAM-izracunljiva. pri tome dakako misleci zapravo na (Q♭ )∗ (skraceno Q♭ ∗ ).
Dokaz. Semantiku makro-instrukcija pisemo tako da speci ciramo
(⇐) Neka je f RAM-izracunljiva funkcija,
k sadrzaj registara i programskog brojaca nakon izvrsavanja
i P RAM-program koji je racuna. Tada je P ujedno i pomocu sadrzaja prije. Pritom ne pisemo registre ciji sadrzaj
makro-program (s 0 makroa), pa je f makro-izracunljiva. ostaje isti, niti pc ako se samo inkrementira.
▸ inc Rj : r ′ = rj + 1
(⇒) Neka je fk makro-izracunljiva funkcija, i Q makro-program j

koji je racuna. Tada je Q♭ RAM-program, te iz ▸ dec Rj , l: ako rj > 0, r ′ = rj − 1; ina


ce, pc ′ = l
j
ekvivalencije Q♭ s Q slijedi da (Q♭ )k (skraceno Q♭ k ) ▸ Zadatak: sami napi site semantike za go to l i zero Rj !
takoder racuna funkciju f, pa je f RAM-izracunljiva.

Primjeri makro-programa Funkcijska i imperativna paradigma

Osnovni cilj prvog dijela kolegija je dokazati ekvivalentnost


dvaju (na prvi pogled jako razlicitih) poimanja izracunljivosti:
Zadatak
▸ aksiomatskog: funkcija sastavljena od o cito izracunljivih
Napisite makroe sa sljedecim semantikama: "
funkcija pomocu pravila koja ocito cuvaju izracunljivost"
▸ remove Ri to Rj (za i ≠ j): r ′ = 0 ∧ r ′ = ri
i j ▸ operativnog: funkcija koju ra cuna neki algoritam
▸ mmove n from Ri .. to Rj .. (za ∣i − j∣ ≥ n > 0):
"
sastavljen od jednostavnih mehanickih instrukcija"
′ ′
(∀t < n)(ri+t = 0 ∧ rj+t = ri+t )
▸ clone Ri to Rj , Rk (za i ≠ j ≠ k ≠ i): rj′ = rk′ = ri ∧ ri′ = 0
Zapravo zelimo dokazati ekvivalentnost dviju paradigmi:
funkcijskog i imperativnog programiranja.
▸ move Ri to Rj using Rk (za i ≠ j ≠ k ≠ i): rj′ = ri ∧ rk′ = 0
▸ Za smjer funkcijsko simulira imperativno", osnovna ideja
▸ args Rj1 , . . . , Rjk (za jt > k): (∀t ∈ [1  k])(rt′ = rjt ) ∧ r0′ = 0 "
je simulacija protoka vremena: shvatimo redni broj koraka
kao jos jedan ulazni podatak. [To cemo napraviti kasnije.]
ZZ: 1.4
▸ Za smjer imperativno simulira funkcijsko", osnovna ideja
"
je simulacija stoga poziva (call stack ), i funkcijski makro.

Funkcijski makro Semantika funkcijskog makroa

Propozicija
De nicija
Semantika funkcijskog makroa, uz oznake s prethodnog slajda,
Neka je k ∈ N+ , f k RAM-izracunljiva, te Pfk RAM-algoritam
te pokratu ⃗r ∶= (rj1 , rj2 , . . . , rjk ), jest:
koji je racuna. Neka su m, j0 , j1 , . . . , jk ∈ N. De niramo
1. Ako je ⃗r ∈ Df , tada je rj′0 = f(⃗r) ∧ (∀t ∈ [b  2b⟩)(rt′ = 0).
(Pf (Rj1 , . . . , Rjk ) → Rj0 using Rm ..) ∶= [ Zbog b > m, za sve i ∈ [0  m⟩ ∖ {j0 } vrijedi ri′ = ri . ]
⎡ 0. mmove b from R0 .. to Rb .. ⎤♭ ∗ 2. Ako ⃗r ∉ Df , izvrsavanje funkcijskog makroa ne stane.
⎢ ⎥
1. args Rb+j1 , Rb+j2 , . . . , Rb+jk
⎢ ⎥
⎢ ⎥
2. Pf ∗
⎢ ⎥
∶= ⎢⎢ ⎥
⎥ r0 r1 , . . . , rk rj0 rb rb+j0 r2b−1
3. remove R0 to Rb+j0
⎢ ⎥



⎥ 0. mmove 0 0, . . . , 0 0 r0 rj0 rb−1

⎣ 4. mmove b from Rb .. to R0 .. ⎥
⎦ 1. args 0 rj1 , . . . , rjk 0 r0 rj0 rb−1
2. Pf∗ f(⃗r) ?, . . . , ? ? r0 rj0 rb−1
uz pokratu b ∶= max {mPk , m, 1 + maxki=0 ji }.
f 3. remove 0 ?, . . . , ? ? r0 f(⃗r) rb−1

[Sirina algoritma se de nira kao mPk ∶= max {mP , 1 + k}.] 4. mmove r0 r1 , . . . , rk f(⃗r) 0 0 0
Inicijalne funkcije Kompozicija | intuitivno

Htjeli bismo reci: kompozicija dvije izracunljive funkcije Gk i Hl


Kao sto rekosmo, izracunljivost mozemo de nirati i aksiomatski. je izracunljiva funkcija. Ali postoje dvije komplikacije.
Inicijalne funkcije ciju izracunljivost podrazumijevamo su:
▸ nulfunkcija Z1 = χ∅1 , zadana sa Z(x) ∶= 0;
Prvo, da bi kompozicija bila de nirana, kodomena funkcije G
morala bi biti Nl . U nasem formalizmu to znaci da je
▸ sljedbenik Sc1 , zadana sa Sc(x) ∶= x + 1;
zadajemo pomocu l funkcija iste mjesnosti: Gk1 , . . . , Gkl .
▸ za 1 ≤ n ≤ k, koordinatna projekcija Ik n,
zadana s In (x1 , x2 , . . . , xk ) ∶= xn (reprezentacija idN∗ ). Drugo, moramo paziti na domene: Gi i H nisu nuzno totalne.
Kompozicija se formalno de nira pomocu ulancanih uredenih
Sve inicijalne funkcije su totalne: DZ = DSc = N, a DIkn = Nk . parova [marljiva evaluacija], ne pravilima preslikavanja".
"
Propozicija Primjer
Svaka inicijalna funkcija je RAM-izracunljiva. Recimo, kompozicija I21 ○ (Z, ⊗1) nije de nirana nigdje |
bez obzira na to sto I1 (x, y) = x ne koristi svoj drugi argument.

Kompozicija | formalno Parcijalna jednakost


De nicija s prethodnog slajda djeluje nezgrapno.
De nicija Prvo de niramo domenu, a zatim na toj domeni
Neka su k, l ∈ N+ , te Gk1 , . . . , Gkl i Hl funkcije. Za funkciju Fk : de niramo funkciju izrazom koji jedino ima smisla na domeni.
l Mozemo pisati samo izraz, podrazumijevajuci da je
DF ∶= {⃗
x ∈ ⋂i=1 DGi ∣ (G1 (⃗ x)) ∈ DH }
x), . . . , Gl (⃗
lijeva strana de nirana kad god je de nirana i desna,
F(⃗
x) ∶= H(G1 (⃗ x)) za sve x
x), . . . , Gl (⃗ ⃗ ∈ DF te tada ima istu vrijednost. Da naglasimo tu interpretaciju,
pisemo ≃ umjesto = u tockovnoj" de niciji:
kazemo da je dobivena kompozicijom funkcija G1 , . . . , Gl i H. "
Pisemo F ∶= H ○ (G1 , . . . , Gl ). (H ○ (G1 , . . . , Gl ))(⃗
x) ∶≃ H(G1 (⃗
x), . . . , Gl (⃗
x))
Kazemo da je skup funkcija F zatvoren na kompoziciju
ako za sve k, l ∈ N+ , za sve k-mjesne G1 , . . . , Gl ∈ F, Precizno, de niran izraz" znaci da za svaki njegov podizraz
"
za sve l-mjesne H ∈ F, vrijedi H ○ (G1 , . . . , Gl ) ∈ F. oblika f(⃗v) (mozda zapisan drugacije, npr. in ksno kao v1 + v2 )
vrijedi da je (rekurzivno) svaki izraz vi de niran, te je ⃗v ∈ Df .
Iz de nicije DF : kompozicija totalnih funkcija je totalna Ovo pravilo se ne odnosi na izraze de nirane po slucajevima,
(skup totalnih funkcija zatvoren je na kompoziciju). vec samo na pojedine slucajeve | vise o tome reci cemo kasnije.

RAM-izracunljivost kompozicije Primitivna rekurzija


Propozicija De nicija
Skup RAM-izracunljivih funkcija je zatvoren na kompoziciju. Neka je k ∈ N+ , te Gk i Hk+2 totalne funkcije.
Za (jedinstvenu) funkciju Fk+1 de niranu jednakostima
Dokaz.
F(⃗
x, 0) ∶= G(⃗
x)
Neka su k, l ∈ N+ , te neka su Gk1 , . . . , Gkl i Hl RAM-izracunljive.
F(⃗
x, y + 1) ∶= H(⃗
x, y, F(⃗
x, y))
Dakle, postoje RAM-algoritmi PGk1 , . . . , PGkl i PHl
koji ih racunaju. Tada RAM-algoritam kazemo da je dobivena primitivnom rekurzijom iz funkcija
⎤♭k G i H. Pisemo F ∶= G pr H. (pr je manjeg prioriteta od ○.)
⎡ 0. PG1 (R1 , . . . , Rk ) → Rk+1 using Rk+l+1 ..
⎢ ⎥ Kazemo da je skup funkcija F zatvoren na primitivnu
1. PG2 (R1 , . . . , Rk ) → Rk+2 using Rk+l+1 ..
⎢ ⎥





⎥ rekurziju ako za sve k ∈ N+ , za sve totalne k-mjesne G ∈ F,
za sve totalne (k + 2)-mjesne H ∈ F, vrijedi G pr H ∈ F.
⎢ ⋮ ⎥
⎢ (l −1). PGl (R1 , . . . , Rk ) → Rk+l using Rk+l+1 ..
⎢ ⎥

⎢ ⎥

⎣ l . PH (Rk+1 , . . . , Rk+l ) → R0 using Rk+l+1 .. ⎥
⎦ Indukcijom po y se moze dokazati da je G pr H uvijek totalna.
racuna H ○ (G1 , . . . , Gl ), koja je zato RAM-izracunljiva. Primitivnom rekurzijom zasad ne mozemo de nirati
jednomjesne funkcije (jer je k + 1 > 1). To cemo rijesiti poslije.

Tockovne de ncije funkcija Primitivno rekurzivne funkcije



Cesto je lakse zapisati de niciju funkcije kad imamo imena za
argumente. Vazno je imati na umu da se svaka takva De nicija
tockovna" de nicija funkcije uvijek mora moci zapisati Najmanji skup funkcija koji sadrzi sve inicijalne funkcije,
"
simbolicki, eliminirajuci sva koristenja imena argumenata. te je zatvoren na kompoziciju i primitivnu rekurziju,
Tockovna de nicija je cesto citljivija, ali postoji opasnost da zovemo skupom primitivno rekurzivnih funkcija.
necemo vidjeti da je neki argument nemoguce eliminirati.
Recimo ako imamo funkcije G0 , G1 , G2 , . . . , tada F(x) ∶≃ Gx (x) Propozicija
nije dobra tockovna de nicija od F, jer ne mozemo eliminirati x.
Funkcija je primitivno rekurzivna ako i samo ako se moze
[I doista, ako su sve Gi izracunljive, F ne mora biti izracunljiva!]
dobiti iz inicijalnih funkcija pomocu konacno mnogo primjena
Takva opasnost ne postoji kod simbolicke de nicije.
kompozicije i primitivne rekurzije (ima simbolicku de niciju).
Primjer
f(x, y, 0, z) ∶= g(x, h(x, y, z)) Tako cemo uvijek dokazivati primitivnu rekurzivnost funkcija
f(x, y, t + 1, z) ∶= h(z, f(x, y, t, z), g(t, z))
} ↭ koje proucavamo | jedino sto necemo uvijek sve iznova
raspisivati do inicijalnih funkcija, nego cemo koristiti
f4 ∶= (g2 ○ (I31 , h3 ) pr h3 ○ (I53 , I55 , g2 ○ (I54 , I53 ))) ○ (I41 , I42 , I44 , I43 ) funkcije ciju smo primitivnu rekurzivnost vec utvrdili.
Aritmeticke operacije su primitivno rekurzivne Degenerirana primitivna rekurzija
Zadatak
Propozicija
Napisite simbolicke i tockovne de nicije za:
▸ konstantne funkcije, Ck x) ∶= n (za n ∈ N, k ∈ N+ ) Neka je a ∈ N, te H2 primitivno rekurzivna funkcija.
n (⃗
Tada je funkcija F1 , de nirana jednakostima
▸ zbrajanje, add(x, y) ∶= x + y [Odgovor: add2 = I1 pr Sc ○ I3 ]
1 3
▸ mno zenje, mul(x, y) ∶= x ⋅ y F(0) ∶= a
▸ potenciranje, pow(x, y) ∶= xy F(x + 1) ∶= H(x, F(x)) ,

Mnogi skupovi funkcija imaju svojstvo da sadrze sve inicijalne takoder primitivno rekurzivna. (Pisemo F ∶= a pr H.)
funkcije, i zatvoreni su na kompoziciju i primitivnu rekurziju.
 to mozemo zakljuciti za neki skup funkcija F, znamo da je
Cim Dokaz. primitivno rekurzivna, dakle totalna
³¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ · ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹µ
skup primitivno rekurzivnih funkcija podskup od F. Recimo: F = (C1a pr H ○ (I32 , I33 )) ○ (Z, I11 ) .
Propozicija
Ideja je uvesti irelevantni" parametar na pocetak,
"
1. Sve primitivno rekurzivne funkcije su totalne. koji ne radi nista osim sto uvecava sve mjesnosti za 1.
2. Sve primitivno rekurzivne funkcije su RAM-izracunljive.

Jos neke primitivno rekurzivne funkcije i relacije Minimizacija relacije


Sve dosad de nirane operacije su cuvale totalnost.
Minimizacija pruza mogucnost dobivanja parcijalnih funkcija.
Zadatak
Napisite simbolicke odnosno tockovne de nicije za De nicija
sljedece funkcije / karakteristicne funkcije sljedecih relacija: Neka je k ∈ N+ i Rk+1 relacija. Za funkciju fk de niranu s
▸ prethodnik, pd(x) ∶= max{x − 1, 0}

▸ pozitivnost N+
Df ∶= ∃∗ R ∶= {⃗
x ∈ Nk ∣ ∃y R(⃗
x, y)} (projekcija relacije R)
x, y)}, za sve x
x) ∶= min {y ∈ N ∣ R(⃗
f(⃗ ⃗ ∈ ∃∗ R
▸ faktorijel, factorial(x) ∶= x!

▸ ograniceno oduzimanje, x  y ∶= sub(x, y) ∶= max{x − y, 0} kazemo da je dobivena minimizacijom relacije R.


▸ obrnuti strogi uredaj > Pisemo f ∶= µR, tockovno f(⃗x) ∶≃ µy R(⃗x, y).
▸ strogi uredaj < Kazemo da je skup funkcija F zatvoren na minimizaciju
ako za sve k ∈ N+ , za sve relacije Rk+1 , χR ∈ F povlaci µR ∈ F.
ZZ: 3.1
Zbog dobre uredenosti od N, projekcija ∃∗ R je
tocno skup svih x⃗ za koje izraz µyR(⃗x, y) ima smisla.

Parcijalno rekurzivne funkcije Rekurzivne funkcije i relacije

De nicija De nicija
Najmanji skup funkcija koji sadrzi sve inicijalne funkcije, te je Parcijalno rekurzivne funkcije koje su totalne zovemo
zatvoren na kompoziciju, primitivnu rekurziju i minimizaciju, rekurzivnima. Relacije cije karakteristicne funkcije su
naziva se skup parcijalno rekurzivnih funkcija. (parcijalno) rekurzivne takoder zovemo rekurzivnima.
Pojam parcijalno rekurzivna relacija" je beskoristan:
Propozicija (Simbolicka de nicija) "
sve takve relacije su rekurzivne (jer je χR uvijek totalna).
Funkcija je parcijalno rekurzivna ako je korijen stabla ciji
listovi su inicijalne funkcije, a svaki cvor je funkcija dobivena Zadatak
▸ kompozicijom iz svoje djece (2 ili vi se funkcija) Dokazite: svaka primitivno rekurzivna funkcija je rekurzivna.
▸ primitivnom rekurzijom iz svoje djece (2 totalne funkcije)
Zadatak
▸ minimizacijom svog djeteta (1 relacija)
Gra cki prikazite odnos svih
ili relacija cija je karakteristicna funkcija dobivena na isti nacin.
skupova brojevnih funkcija koje smo dosad uveli.

Imperativno programiranje simulira funkcijsko Negacija / komplement


Teorem
Svaka parcijalno rekurzivna funkcija je RAM-izracunljiva.
Propozicija (2 komada)
Neka je k ∈ N+ , te Rk (primitivno) rekurzivna relacija. Tada je i
Plan dokaza. relacija (R∁ )k zadana s R∁ (⃗x) ∶⇔ ¬R(⃗x) (primitivno) rekurzivna.
Znamo da skup RAM-izracunljivih funkcija sadrzi sve inicijalne
[(∅k )∁ je de nirana, kao Nk , samo za ksnu mjesnost k! ]
funkcije i da je zatvoren na kompoziciju i primitivnu rekurziju.
Jos treba dokazati zatvorenost na minimizaciju: ucinite to! Fraza (primitivno)" znaci skraceni zapis za dvije propozicije:
"
jedna za primitivno rekurzivne, a druga za rekurzivne relacije.
Postorder-obilaskom simbolicke de nicije parcijalno rekurzivne
funkcije mozemo je kompilirati u makro-program, Dokaz.
pa onda i spljostiti (linkati ) u RAM-program. Funkcija zadana s f 0 (x) ∶= 1  x je primitivno rekurzivna
(f 0 = sub ○ (C11 , I11 )), i vrijedi χR∁ = f 0 ○ χR .
Kao sto umjesto raspisivanja uvijek do inicijalnih funkcija Dakle, ako je χR primitivno rekurzivna, takva je i χR∁ .
mozemo koristiti vec dokazano rekurzivne funkcije, tako Ako je pak χR rekurzivna, takva je i χR∁ .
mozemo i neke cesto koristene operatore (preslikavanja
funkcija/relacija) zapisati pomocu osnovna tri. Krenimo!
Ostale logicke / skupovne operacije Visestruke skupovne operacije
Lema
Propozicija
Za svaki k ∈ N+ , funkcije addk i mulk
Neka je k ∈ N+ , te neka su Rk i Pk (primitivno) rekurzivne (zbrajanje i mnozenje k brojeva) primitivno su rekurzivne.
relacije. Tada su i sljedece relacije (primitivno) rekurzivne:
Dokaz.
Q1 (⃗
x) ∶⇐⇒ R(⃗
x) ∧ P(⃗
x) Q1 ∶= R ∩ P
Indukcijom po k. Naravno, mul1 = I11 . Za k ≥ 2,
Q2 (⃗
x) ∶⇐⇒ R(⃗
x) ∨ P(⃗
x) Q2 ∶= R ∪ P
Q3 (⃗
x) ∶⇐⇒ R(⃗
x) → P(⃗
x) Q5 ∶= R ∖ P mul(x1 , . . . , xk+1 ) ∶= mul(mul(x1 , . . . , xk ), xk+1 ),
Q4 (⃗
x) ∶⇐⇒ R(⃗
x) ↔ P(⃗
x) Q6 ∶= R △ P
dakle mulk+1 je dobivena kompozicijom iz mul2 , mulk i
koordinatnih projekcija. Za addk , potpuno analogno.
Zadatak (skica dokaza). Sada se istom tehnikom moze dokazati
Propozicija
Imitirajte prethodni dokaz: za svaki i ∈ [1  6] nadite primitivno
rekurzivnu funkciju f2i takvu da je χQi = f i ○ (χR , χP ). Neka su k, l ∈ N+ , te neka su Rk1 , . . . , Rkl (primitivno) rekurzivne
relacije. Tada su i ⋂i=1
l
Ri i ⋃i=1
l
Ri (primitivno) rekurzivne.

Grananje ( de nicija po slucajevima") Domena funkcije de nirane grananjem


"
De nicija
Neka su k, l ∈ N+ , te neka su Gk0 , . . . , Gkl funkcije, i Rk1 , . . . , Rkl Prethodnu de niciju takoder mozemo zapisati pomocu
u parovima disjunktne relacije. Za funkciju de niranu s parcijalne jednakosti ∶≃, ali moramo biti oprezni pri njenom
⎧ razumijevanju. Desna strana ne mora imati svojstvo da svi
l ∁ ⎪

⎪G1 (⃗
x), R1 (⃗x) njezini podizrazi trebaju biti de nirani da bi lijeva strana
R0 ∶= ( ⋃i=1 Ri ) ⎪


⎪ ⋮ bila de nirana | samo relevantni redak" (onaj koji odgovara
za sve x⃗ ∈ DF "

l F(⃗
x) ∶= ⎨
DF ∶= ⋃ (DGi ∩ Ri ) ⎪

⎪Gl (⃗
x), Rl (⃗
x) relaciji koja vrijedi za x⃗) treba imati to svojstvo.


x), inace
i=0 ⎪

⎩G0 (⃗
⎪ Ipak, kao i kod kompozicije, komplikacije s domenom bit ce
bitne kasnije. Zasad radimo s (primitivno) rekurzivnim
kazemo da je de nirana grananjem iz grana Gi i uvjeta Ri . funkcijama, koje su totalne | a lako je vidjeti da je
Pisemo simbolicki funkcija dobivena grananjem iz totalnih funkcija uvijek totalna.
(Samo tada ne smijemo ispustiti G0 , jer ⊗k nije totalna!)
F ∶= if{R1 ∶ G1 , . . . , Rl ∶ Gl , G0 }.

Ako ne navedemo G0 , podrazumijevamo G0 ∶= ⊗k .

Teorem o grananju, (primitivno) rekurzivna verzija Konacne relacije


Teorem
Neka su k, l ∈ N+ , Zadatak
neka su Gk0 , Gk1 , . . . , Gkl (primitivno) rekurzivne funkcije, Dokazite da su sljedece relacije primitivno rekurzivne:
te neka su Rk1 , . . . , Rkl u parovima disjunktne ▸ nestrogi uredaj ≤
(primitivno) rekurzivne relacije.
▸ obrnuti nestrogi uredaj ≥
Tada je funkcija Fk ∶= if{R1 ∶ G1 , . . . , Rl ∶ Gl , G0 }
▸ jednakost =
takoder (primitivno) rekurzivna.
▸ jedno clana jednomjesna relacija {c} (za c ∈ N)
Dokaz. ▸ jedno clana relacija {⃗c} (za c⃗ ∈ Nk , k ∈ N+ )

Prvo primijetimo da je R0 ∶= ( ⋃i=1
l
Ri ) (primitivno) rekurzivna ▸ prazna relacija ∅k (za k ∈ N+ )
kao komplement unije l (primitivno) rekurzivnih relacija. Tada ▸ kona cna relacija {⃗c1 , . . . , c⃗l } ⊆ Nk (za k ∈ N+ , l ∈ N)
F = G0 ⋅ χR0 + G1 ⋅ χR1 + ⋯ + Gl ⋅ χRl ,
ZZ: 3.2
odnosno F je dobivena kompozicijom add l+1
, mul , Gi i χRi .
2

Editiranje (konacna promjena) totalnih funkcija Ogranicene sume, produkti, brojenje, minimizacija, . . .

Propozicija Propozicija
Neka je k ∈ N+ te Gk (primitivno) rekurzivna funkcija,
Neka je k ∈ N+ , neka je Gk (primitivno) rekurzivna funkcija,
odnosno Rk (primitivno) rekurzivna relacija.
te Fk totalna funkcija koja se podudara s G u svima osim
Tada su (primitivno) rekurzivne i sljedece funkcije/relacije:
konacno mnogo tocaka. Tada je i F (primitivno) rekurzivna.
Fk x, i) i Fk
x, y) ∶= ∑i<y G(⃗
Σ (⃗ x, i),
x, y) ∶= ∏i<y G(⃗
Π (⃗
Dokaz.
Po pretpostavci, skup {⃗xk ∣ F(⃗x) ≠ G(⃗x)} je konacan: oznacimo Fk x, y) ∶= µ i (i < y → R(⃗
µ (⃗ x, y),
x, y)) =∶ (µ i < y) R(⃗
mu sve elemente (npr. leksikografskim redom) s c⃗1 , c⃗2 , . . . , c⃗l . Fk x, y) ∶= card {i ∈ [0  y⟩ ∣ R(⃗
# (⃗ x, y),
x, y)} =∶ (# i < y) R(⃗
Ako je taj skup prazan, F = G pa nemamo sto dokazivati. Inace,
Qk
∃ (⃗ x, i) i Qk
x, y) ∶⇔ (∃i < y) R(⃗ ∀ (⃗ x, i).
x, y) ∶⇔ (∀i < y) R(⃗
F = if{{c⃗1} ∶ Ck
F(c⃗1 ) , . . . , {c⃗l } ∶ F(c⃗l ) , G},
Ck
Jedna primitivna rekurzija:
(primitivno) rekurzivna funkcija po teoremu o grananju. ⎧
⎪ Fµ (⃗
⎪ x, y), R(⃗
x, Fµ (⃗
x, y))
Fµ (⃗
x, 0) = 0 , Fµ (⃗
x, y + 1) = ⎨ .
Zadatak: Gdje se u dokazu koristi totalnost funkcije F?


⎩ y + 1, inace
(Primitivno) rekurzivne granice Kodiranje | opcenito
Napomena
Kompozicijom s nekom (primitivno) rekurzivnom funkcijom H Neka je K skup koji ne sadrzi prirodne brojeve nego neke druge
na mjestu argumenta y lako dobijemo (primitivnu) rekurzivnost objekte: racionalne brojeve, RAM-programe, regularne izraze
zbrajanja / mnozenja / brojenja / minimizacije / kvanti kacije nad ksnom abecedom, konacne nizove prirodnih brojeva, . . .
do (primitivno) rekurzivne granice. Recimo, Kodiranje skupa K je izracunljiva injekcija NK ∶= κ ∶ K → N,
kojoj je slika ( skup svih kodova") Iκ rekurzivan skup,
(# i < H(⃗
x)) R(⃗
x, y) = F# (⃗ x)) .
x, H(⃗ "
a parcijalni inverz κ−1 ∶ Iκ → K je takoder izracunljiv.
Pisuci Sc ○ H za granicu umjesto H, dobijemo sve te rezultate [Ocito, da bi kodiranje postojalo, skup K mora biti prebrojiv!]
i za ukljucene gornje granice, jer je y ≤ H(⃗x) ⇐⇒ y < Sc(H(⃗x)). Ova de nicija nije stroga, jer govori o postojanju intuitivnih
algoritama, ciji ulazi/izlazi nisu prirodni brojevi. K je najcesce
Napomena neki apstraktni tip podataka: bitno je njegove osnovne metode
Neogranicena kvanti kacija ∃∗ R (cak ni primitivno) rekurzivne prikazati kao rekurzivne funkcije na kodovima. ZZ: 4.3
relacije R ne mora biti rekurzivna! To cemo dokazati kasnije.
ZZ: 3.3, 3.4

Kodiranje konacnih nizova prirodnih brojeva Povijest funkcije

Kao vazan primjer uzmimo skup N∗ ∶= ⋃i∈N Ni . 


Cesto ne zelimo kodiranje ksne mjesnosti,
Njegovo kodiranje predstavimo familijom funkcija Codek , k ∈ N+ nego ono ciji su argumenti zadani nekom funkcijom.
(i konstantom ⟨⟩ ∶= 1 za kod praznog niza), De nicija
a za osnovne metode uzmimo duljinu (lh) i indeksiranje (part).
Neka je k ∈ N+ i Gk totalna funkcija. Za funkciju Fk zadanu s
S pi oznacimo i-ti prim-broj (p0 = 2). Za x⃗ ∈ Nk , oznacimo
F(⃗
x, y) ∶= ⟨G(⃗
x, 0), G(⃗
x, 1), . . . , G(⃗
x, y − 1)⟩
k +1
x) ∶= ⟨x1 , . . . , xk ⟩ ∶= 2x1 +1 ⋅ 3x2 +1 ⋅ 5x3 +1 ⋯ pxk−1
Codek (⃗ .
kazemo da je povijest funkcije G i pisemo F ∶= G.
Propozicija Zadatak
Za svaki k ∈ N+ , funkcija Codek je primitivno rekurzivna. Izracunajte add(2, 1, 3), Z(5), Code(1, 1), mul(9, 7, 0), pow(8, 2).
Dekodiranje se svodi na rastav na prim-faktore (prethodnici Za dokaz da operator povijesti cuva (primitivnu) rekurzivnost,
eksponenata su clanovi niza). [ Sljedbenici u eksponentima sluze ne mozemo koristiti Codey jer mjesnost mora biti ksna |
za injektivnost: bez njih bi (1, 2) i (1, 2, 0) imali isti kod 18. ] prvo nam treba nekoliko pojmova iz teorije brojeva.

Dijeljenje s ostatkom, prim-brojevi Osnovne metode konacnih nizova: lh i part

Zadatak Za c = ⟨x1 , x2 , . . . , xk ⟩ ∈ Seq ∶= I⟨⋯⟩ , oznacimo lh(c) ∶= k i


Dokazite da su sljedece funkcije/operacije i relacije

⎪xi+1 , i < k

c[i] ∶= part(c, i) ∶= ⎨ . To je parcijalna speci kacija,
primitivno rekurzivne: inace
⎩0,


▸ zamjena nule jedinicom, x ∶= max {x, 1} jer nismo rekli nista o tome kako lh i part djeluju za c ∉ Seq |
▸ cjelobrojno dijeljenje, x ∕∕ y ∶= ⌊ yx ⌋ ali postoje primitivno rekurzivne funkcije koje to zadovoljavaju.
Nadite ih! Ubuduce cemo cesto parcijalno speci cirati funkcije.
▸ ostatak cjelobrojnog dijeljenja, x mod y
▸ djeljivost, y ∣ x Lema (o povijesti)
▸ skup prim-brojeva P Neka je k ∈ N+ i Gk totalna funkcija. Tada je G (primitivno)
▸ nextprime(p) ∶= prvi sljedeci prim-broj nakon p rekurzivna ako i samo ako je G (primitivno) rekurzivna.
▸ prime(n) ∶= pn
▸ ex(n, i) ∶= eksponent od pi u rastavu n na prim-faktore Korolar
Skup Seq svih kodova konacnih nizova primitivno je rekurzivan.
Jedna tockovna de nicija: x ∕∕ y = pd((µt ≤ x)(t ⋅ y > x)).

Konkatenacija Rekurzija s povijescu

Propozicija Propozicija
Postoji primitivno rekurzivna operacija ∗ takva da Neka je k ∈ N+ , te Gk (primitivno) rekurzivna funkcija. Tada je
za sve x⃗, y⃗ ∈ N∗ vrijedi ⟨⃗x⟩ ∗ ⟨⃗y⟩ = ⟨⃗x, y⃗ ⟩. (primitivno) rekurzivna i funkcija Fk , zadana jednadzbom
[ Operacija ∗ je takoder parcijalno speci cirana, na Seq × Seq. ] F(⃗ x, y)).
x, F(⃗
x, y) ∶= G(⃗
Dokaz.
De niramo funkciju G4 grananjem Dokaz.
⎧ Povijest funkcije F zadovoljava sljedecu primitivnu rekurziju:
⎪ x[i],
⎪ i<k
G(x, y, k, i) ∶= ⎨ .
⎩ y[i  k],

⎪ inace F(⃗
x, 0) = ⟨⟩ = 1
F(⃗
x, y + 1) = F(⃗ x, F(⃗
x, y) ∗ ⟨G(⃗ x, y))⟩
Sada mozemo de nirati x ∗ y ∶= G(x, y, lh(x), lh(x) + lh(y)).
Po teoremu o grananju G je primitivno rekurzivna, pa je (primitivno) rekurzivna jer su konstanta 1, G, ∗ i Code1
pa je G takoder takva po lemi o povijesti (⇒), a onda i ∗. takve. Onda je, po lemi o povijesti (⇐), i F takva funkcija.
Simultana primitivna rekurzija Kodiranje instrukcija RAM-stroja
Propozicija De nicija
▸ ⌜inc Rj⌝ ∶= codeINC(j) ∶= ⟨0, j⟩ = 6 ⋅ 3 j
Neka su k, l ∈ N+ , te neka su Gk1 , . . . , Gkl i Hk+l+1
1 , . . . , Hk+l+1
l
(primitivno) rekurzivne funkcije. Tada su (primitivno) ▸ ⌜dec Rj , l⌝ ∶= codeDEC(j , l) ∶= ⟨1, j, l⟩ = 60 ⋅ 3 j ⋅ 5l
rekurzivne i funkcije Fk+1
1 , . . . , Fl
k+1
, zadane jednadzbama ▸ ⌜go to l⌝ ∶= codeGOTO(l) ∶= ⟨2, l⟩ = 24 ⋅ 3l

Fi (⃗ x) ,
x, 0) ∶= Gi (⃗
Zadatak
Fi (⃗
x, y + 1) ∶= Hi (⃗
x, y, F1 (⃗ x, y)) .
x, y), . . . , Fl (⃗
Dokazite primitivnu rekurzivnost sljedecih skupova i funkcija:
▸ codeINC, codeDEC, codeGOTO

Dokaz. ▸ InsINC (skup kodova instrukcija tipa inc)

Funkcija Gk ∶= Codel ○ (G1 , . . . , Gl ), i funkcija Hk+2 , zadana s ▸ InsDEC i InsGOTO (analogno, za tipove dec i go to)

▸ Ins (skup svih kodova instrukcija)


x, y, z[0], . . . , z[l − 1]),
x, y, z) ∶= (Codel ○ (H1 , . . . , Hl ))(⃗
H(⃗
▸ regn(⌜inc Rj⌝) = regn(⌜dec Rj , l⌝) = j, ina
ce 0
su (primitivno) rekurzivne. Tada je Fi = part ○ (G pr H, Ck+1
i−1 ). ▸ dest(⌜dec Rj , l⌝) = dest(⌜go to l⌝) = l, ina
ce 0

Kodiranje RAM-programa Kodiranje stanja registara


Sada za K uzmimo skup nizova prirodnih brojeva s konacnim
Programi su konacni nizovi instrukcija, nosacem (takvih da su nula od nekog mjesta nadalje).
pa kompozicijom kodiranja instrukcija i konacnih nizova Taj skup kodiramo kao N∗, samo bez sljedbenika u eksponentu:
dobivamo kodiranje RAM-programa.
j x0 , x1 , x2 , . . . , 0, 0, 0, . . . o ∶= ∏i∈N pxi i .
De nicija
Za svaki RAM-stroj S, u svakom koraku rada, stanje registara
Za P = [ t. It ]t<n , de niramo 2P7 ∶= ⟨ ⌜I0⌝ , . . . , ⌜In−1⌝ ⟩.
je s konacnim nosacem (najvise mPk pozitivnih elemenata).
Propozicija Zadatak
2⋯7 je injekcija s primitivno rekurzivnom slikom. Dokazite da su sljedece (parcijalno speci cirane)
funkcije primitivno rekurzivne:
Skica dokaza (uputa): ▸ realizacija inkrementa" Rj na kodovima
"
▸ realizacija dekrementa" Rj (ako je mogu c) na kodovima
Prog(e) ∶⇔ Seq(e) ∧ (∀i < lh(e))(Ins(e[i]) ∧ dest(e[i]) ≤ lh(e)) "
▸ result(j r0 , r1 , r2 , . . . o) ∶= r0 (rezultat izra
cunavanja)
▸ start(⟨⃗
x⟩) ∶= j 0, x ⃗, 0, 0, . . . o (pocetna kon guracija)

Pracenje kon guracija Brojenje koraka i kodiranje izracunavanja


Neka je I RAM-instrukcija, r i p redom kod stanja registara i Step(x, e, m) ⇐⇒ m = (µn ≤ m) Final(x, e, n) znaci:
vrijednost programskog brojaca prije, a s i q poslije izvrsenja I. x je kod nepraznog konacnog niza x ⃗, e je kod RAM-programa P,
Postoje primitivno rekurzivne funkcije NextReg2 i NextCount3 a P-izracunavanje s x⃗ stane nakon tocno m koraka.
takve da za sve takve I, r, p, s i q vrijedi 
Citavo izracunavanje (ako stane) mozemo kodirati
NextReg(⌜I⌝, r) = s i NextCount(⌜I⌝, r, p) = q. kao povijest funkcije Reg: y = ⟨j r(s) (s) (s)
0 , r1 , r2 , . . . o⟩s≤m .

Ť(x, e, y) ∶⇐⇒ Step(x, e, pd(lh(y))) ∧ 1 < y = Reg(x, e, lh(y))


Postoje primitivno rekurzivne funkcije Reg3 i Count3 takve da,
za svaki RAM-program P, za svaki neprazni konacni niz x⃗,
▸ Reg(⟨⃗x⟩, 2P7, n) je kod stanja registara, a 
Cesto se relacija Ť razdvaja s obzirom na mjesnost ulaza:
▸ Count(⟨⃗x⟩, 2P7, n) je vrijednost programskog brojaca, x), e, y) za svaki k ∈ N+ .
xk , e, y) ∶⇐⇒ Ť(Codek (⃗
Tk (⃗
nakon n koraka P-izracunavanja s x⃗.
Zadatak
Relacija Final(x, e, n) ∶⇔ (x je kod nepraznog konacnog niza x⃗)
Dokazite da su relacije Step3 , Ť3 i Tk+2 primitivno rekurzivne,
∧ (e je kod RAM-programa P) ∧ (P-izracunavanje s x ⃗ stane k
imaju funkcijsko svojstvo, te je ∃∗ Step = ∃∗ Ť [=∶ HALT ].
nakon najvise n koraka), je primitivno rekurzivna.

Funkcija U, univerzalne funkcije compk , indeksi Kleenejev teorem o normalnoj formi


Tk ima funkcijsko svojstvo: za sve x ⃗ i e postoji najvise jedan y Teorem (Kleene /kleini/)
takav da je Tk (⃗x, e, y), i on je parcijalno jednak µ z Tk (⃗x, e, z).
Treba nam funkcija koja iz tog y procita rezultat: Postoji primitivno rekurzivna jednomjesna funkcija U takva da
za svaki pozitivni prirodni broj (mjesnost) k
U(y) ∶= result(y[pd(lh(y))]). postoji primitivno rekurzivna (k + 2)-mjesna relacija Tk tako da
Tada je compk ∶= U ○ µTk parcijalno rekurzivna funkcija. za svaku parcijalno rekurzivnu k-mjesnu funkciju F
postoji prirodni broj e (indeks od F) takav da
Za ksni e ∈ N i k ∈ N+ de niramo funkciju indeksa e: [ZZ: 4]
za svaku k-torku prirodnih brojeva x⃗ vrijede sljedece tvrdnje:
{e}(⃗ x, e).
xk ) ∶≃ compk (⃗ ▸ x⃗ ∈ DF ⇐⇒ ∃yTk (⃗ x, e, y); [D{e}k = $(e, ∃∗ Tk )]
Iz de nicije je {e}k parcijalno rekurzivna funkcija, te vrijedi: ▸ F(⃗ x) ≃ U(µyTk (⃗x, e, y)).

Lema (o indeksu)
Korolar
Neka je e ∈ N, k ∈ N+ te neka je P RAM-program. Svaka parcijalno rekurzivna funkcija ima simbolicku de niciju
▸ Ako je e = 2P7, tada P k racuna funkciju {e}k . s tocno jednom pojavom operatora µ.
▸ Ako e ∉ Prog, tada je {e} = ⊗k .
k
[ Zadatak sa zvjezdicom: Koliko ima pojava operatora pr? ]
Teorem o grananju, parcijalno rekurzivna verzija Povijesni pregled
Indeksi nam omogucavaju metaprogramiranje:
rad s funkcijama pomocu njihovih indeksa. Jedna primjena: RAM-stroj je, kao sto se pokazalo, dobar za
Teorem matematicki rad s instrukcijama cija minimalnost podsjeca
Neka su k, l ∈ N+ , neka su Gk0 , . . . , Gkl parcijalno rekurzivne na moderne mikroprocesore arhitekure RISC, no
funkcije, te Rk1 , . . . , Rkl u parovima disjunktne rekurzivne algoritmi su puno stariji od racunala. Prije manje od stoljeca,
relacije. Tada su funkcije Fk1 ∶= if{R1 ∶ G1 , . . . , Rl ∶ Gl , G0 } algoritme su jos uvijek izvodili iskljucivo ljudi.
i Fk2 ∶= if{R1 ∶ G1 , . . . , Rl ∶ Gl } takoder parcijalno rekurzivne. 1936. godine Alan Turing je dao jednu od prvih de nicija
algoritma. Iako je nespretna za strogu matematicku obradu,
Dokaz. njena posebnost je u tome sto je precizno motivirana detaljnim
Svaka funkcija Gi ima indeks gi (kompiliramo je, i kodiramo opisom covjekovog rada i misaonih procesa pri izvodenju
dobiveni RAM-program). Po rekurzivnoj verziji teorema o algoritma. Turingov clanak time predstavlja najbolju mogucu
grananju G ∶= if{R1 ∶ Ckg1 , . . . , Rl ∶ Ckgl , Ckg0 } je rekurzivna formalizaciju pojma algoritma kako su ga ljudi shvacali
funkcija pa je F1 = compk ○ (Ik1 , . . . , Ikk , G) parcijalno rekurzivna. oduvijek, sve do druge polovice proslog stoljeca.
Za F2 , samo treba staviti g0 ∶= 0, indeks prazne funkcije ⊗k .

Turingov stroj Jezicni model izracunavanja


Usprkos tome sto je govorio o ljudima kao agentima racunanja, De nicija
Turing je morao uvjeriti svoje citatelje da su njegove instrukcije
sasvim mehanicke i ne zahtijevaju nikakvo eksterno znanje, Abeceda Σ je ( ksiran) konacni neprazni skup.
sto je ucinio opisavsi zamisljeni stroj koji ih moze provoditi. Znak α je proizvoljni element abecede.
Taj stroj je (do na neke tehnicke detalje) ono sto danas zovemo
Rijec w je konacan niz znakova; moze biti i prazna (oznaka ε).
Skup svih rijeci oznacavamo sa Σ∗. Jezik znaci podskup od Σ∗.
Turingovim strojem. Razlozi zasto ga proucavamo:
Jezicna funkcija ϕ je bilo koja parcijalna funkcija iz Σ∗ u Σ∗.
▸ Osmi sljen je dovoljno davno da se mnogi drugi sustavi Turingov stroj T = (Q, Σ, Γ, , δ, q0 , qz ) zadan je pomocu:
opce izracunljivosti svode na njega (Turing-potpunost ).
▸ konacnog skupa stanja Q, s istaknutim elementima
▸ Motiviran je prou cavanjem ljudske kognicije i percepcije. q0 (po cetno stanje ) i qz (zavrsno stanje );
▸ Dovoljno je razli cit od RAM-stroja da ce nam dokaz ▸ kona cne radne abecede Γ koja je nadskup ulazne abecede Σ
ekvivalencije pokazati veliku robusnost pojma algoritma: s istaknutim elementom ∈ Γ ∖ Σ (praznina ); Γ+ ∶= Γ ∖ { };
ono sto ljudi rade na papiru nije bitno razlicito, ▸ funkcije prijelaza δ ∶ (Q ∖ {qz }) × Γ → Q × Γ × {−1, 1}.
u principu, od onog sto racunala rade u siliciju.
RAM-stroj i Turingov stroj su toliko razliciti da uopce prirodno
Kon guracija Turingovog stroja zadana je stanjem q ∈ Q,
ne rade s istim tipom podataka! Ipak, kodiranje spasava stvar.
pozicijom n ∈ N i trakom t ∶ N → Γ s konacnim nosacem t−1 [Γ+ ].

Turing-izracunavanje Turing-izracunljivost jezicnih funkcija


Kazemo da kon guracija (p, m, s) prelazi u kon guraciju De nicija
(q, n, t) (po funkciji prijelaza δ) ako, za (q, β, d) ∶= δ(p, s(m)),
Neka je ϕ ∶ Σ∗ ⇀ Σ∗ jezicna funkcija (dakle Dϕ ⊆ Σ∗ ),
imamo n = max{m + d, 0}, t(m) = β te t(j) = s(j) za sve j ≠ m. te T Turingov stroj cija ulazna abeceda je Σ.
Zavrsne kon guracije (one sa stanjem qz ) prelaze u same sebe. Kazemo da T racuna ϕ ako za svaku rijec w ∈ Σ∗ vrijedi:
De nicija ▸ w ∈ Dϕ ako i samo ako T -izra cunavanje s w stane, te
Za rijec w = γ0 γ1 ⋯γn−1 ∈ Σ∗, w-trakom zovemo funkciju ▸ tada, traka zavr
sne kon guracije je upravo ϕ(w)-traka.
Za jezicnu funkciju ϕ kazemo da je Turing-izracunljiva ako

⎪ γj , j < n

t =∶ w . . . ∶ N → Σ ∶= Σ ∪˙ { } ⊆ Γ zadanu s t(j) ∶= ⎨ .
postoji Turingov stroj koji je racuna.
⎩ , j≥n


Neka je w ∈ Σ∗ rijec i T Turingov stroj s ulaznom abecedom Σ.
Za razliku od RAM-strojeva, ne racuna svaki Turingov stroj
T-izracunavanje s w je niz kon guracija koji pocinje s neku jezicnu funkciju nad svojom abecedom:
(q0 , 0, w . . .), te svaka kon guracija u nizu prelazi u sljedecu. ako za bilo koju w ∈ Σ∗ , u zavrsnoj kon guraciji traka nije
Kazemo da T -izracunavanje s w stane ako v-traka ni za koju v ∈ Σ∗ (jer su na njoj ostali neki znakovi
u tom nizu postoji (jedinstvena) zavrsna kon guracija. iz Γ+ ∖ Σ, ili pak postoji znak iz Σ nakon prve praznine),
taj Turingov stroj ne racuna nijednu jezicnu funkciju.

Shortlex | kodiranje rijeci i jezicnih funkcija Vjezbanje rada s pomaknutom bazom


Fiksirajmo neki totalni uredaj ≺ na Σ, i prosirimo ga na Σ∗
tako da rijeci poredamo prvo po duljini, a onda leksikografski. Zadatak
ε≺ a≺b≺c ≺aa≺ab≺ac≺ba≺bb≺bc≺ca≺cb≺cc≺aaa≺aab≺⋯ Neka je Σ = {a, b, c} uredena abecedno.
Dokazite: (Σ∗, ≺) ≃ (N, <), slicnost: σ(w) ∶= card {v ∈ Σ∗ ∣ v ≺ w} ▸ Napisite prvih 15 elemenata od Σ∗ redom po kodovima.
Kako brze racunati σ i σ −1 ? Rijec ↔ zapis u bazi b ′ ∶= card Σ. ▸ Odredite k od rijeci baca.
σ(αn−1 αn−2 ⋯ α0 ) ∶= ∑j<n σ(αj ) ⋅ (b ′ )j . ▸ Odredite rije c koja ima kod 253.
Promotrimo jezicnu funkciju ξ ∶ Σ∗ ⇀ Σ∗ koja
Zapis je osebujan jer koristi znamenke iz [1  b ′ ] umjesto zamjenjuje posljednju pojavu znaka c u rijeci znakom b.
uobicajenih iz [0  b ′ ⟩, ali sva bitna svojstva i dalje vrijede. ▸ Odredite prirodnu domenu od ξ.
De nicija ▸ Odredite (ako postoje) Nξ(253) i Nξ(70).

Za jezicnu funkciju ϕ ∶ Σ∗ ⇀ Σ∗ i ksirano σ u gornjem smislu, ▸ Nacrtajte dijagram Turingovog stroja koji ra cuna ξ.
de niramo (jednomjesnu brojevnu) pratecu funkciju Za funkciju α(w) ∶= wa, napisite RAM-program koji racuna Nα.
Nϕ ∶= σ ○ ϕ ○ σ −1 . ZZ: 2
Sistematicniji rad s pomaknutom bazom Kodiranje radne abecede i trake
Do daljnjeg, neka je T = (Q, Σ, Γ, , δ, q0 , qz ) ksni
Zadatak Turingov stroj, te NΣ ksno kodiranje njegove ulazne abecede.
Nadite primitivno rekurzivne funkcije koje zadovoljavaju ove Oznacimo b ∶= card Γ > b ′ . Prosirimo NΣ do NΓ tako da
parcijalne speci kacije (zapisi su u pomaknutoj bazi b ∈ N+ ): preslikamo u 0, a znakove iz Γ+ ∖ Σ bijektivno u ⟨b ′  b⟩.
▸ nw(t, b) ∶= ukupan broj zapisa rije ci duljine ≤ t [∶= ∑i≤t bi ]
Sada prosirimo NΓ do kodiranja proizvoljne trake:
▸ slh(n, b) ∶= duljina zapisa od n [∶= (µt ≤ n)(nw(t, b) > n)]

▸ m⌢ b n ∶= (broj ciji je zapis) konkatenacija (zapisa) od m i n j t o ∶= j t0 t1 . . . . . . o ∶= ∑ NΓ (tj ) ⋅ bj .


j∈N
▸ sprefix(n, i, b) ∶= po cetak zapisa od n duljine i (≤ slh(n, b))
Lema
▸ mod ′ (n, b) ∶= pomaknuti ostatak n pri dijeljenju s b
Postoji primitivno rekurzivna funkcija Recode3 takva da za
▸ sdigit(n, i, b) ∶= i-ta znamenka zapisa n slijeva, i < slh(n, b)
svaku rijec w ∈ Σ∗ vrijede jednakosti
Dakle, σ je kodiranje skupa Σ∗. Zato pisemo σ =∶ NΣ∗, σ∣Σ =∶ NΣ. Recode(⟨w⟩, b ′ , b) = j w . . . o,
[Zadani NΣ prosirujemo do NΣ∗ zapisom u pomaknutoj bazi b ′.]
Recode(j w . . . o, b, b ′ ) = ⟨w⟩.
Ako se NΣ podrazumijeva, σ(w) jos pisemo ⟨w⟩.

Kodiranje stanja i funkcije prijelaza Primjer kodiranja funkcije prijelaza


Oznacimo a ∶= card Q i ksirajmo bijekciju NQ ∶ Q ↔ [0  a⟩ Napisali ste funkciju prijelaza za Turingov stroj koji racuna
takvu da je NQ(q0 ) = 0 i NQ(qz ) = 1 (bsomp q0 ≠ qz ). jezicnu funkciju ξ, koja posljednje c u rijeci zamjenjuje s b.
De niramo tri konacne funkcije s domenom D ∶= [0  a⟩ × [0  b⟩ Odgovarajuce brojevne tablice su
i kodomenama redom [0  a⟩, [0  b⟩ i {0, 1, 2}, tako da za sve newstate newsymbol direction
(s, g) ∈ D oznacimo (q, γ, d) ∶= δ(NQ−1 (s), NΓ −1 (g)), i stavimo Γ a b c a b c a b c
Q NΓ 0 1 2 3 0 1 2 3 0 1 2 3
newstate(s, g) ∶= NQ(q) newstate(e, s, g) ∶= e[s][g][0]
q0 0 3 0 0 0 0 0 1 2 3 0 0 2 2 2
newsymbol(s, g) ∶= NΓ (γ) newsymbol(e, s, g) ∶= e[s][g][1]
qz 1 1 1 1 1 1 0 1 2 3 1 1 1 1 1
direction(s, g) ∶= 1 + d direction(e, s, g) ∶= e[s][g][2] qx 2 2 2 2 2 2 0 1 2 3 2 0 0 0 0
qL 3 2 3 3 1 3 0 1 2 2 3 0 0 0 2
To ne radi za s = 1 (jer δ nije de nirana za stanje qz ); tada je
newstate(1, g) ∶= 1, newsymbol(1, g) ∶= g, direction(1, g) ∶= 1.
i tako mozemo kodirati Turingov stroj kao 3D array a × b × 3:
2Tξ 7 ∶= ⟨⟨⟨3, 0, 0⟩, ⟨0, 1, 2⟩, ⟨0, 2, 2⟩, ⟨0, 3, 2⟩⟩, ⟨⟨1, 0, 1⟩, . . .⟩, . . .⟩.
Kako su to konacne funkcije, njihova prosirenja nulom (koja
zovemo istim imenima) su funkcije s konacnim nosacem, pa su Funkcije s prethodnog slajda: dvomjesne za ksni Turingov
primitivno rekurzivne (dobivene editiranjem nulfunkcije C20 ). stroj, a tromjesne za bilo koji Turingov stroj zadan kodom.

Kodiranje T -izracunavanja Zaustavljanje i citanje rezultata


Lema (2 komada) Parcijalno rekurzivna funkcija stop(e, x) ∶≃ µn(State(e, x, n)=1):
nakon koliko koraka T -izracunavanje s w stane; e = 2T7, x = ⟨w⟩.
State(2T7, ⟨w⟩, n) ∶= NQ(qn )
Position(2T7, ⟨w⟩, n) ∶= pn Teorem (t ⇒ p za jezicne funkcije)
Tape(2T7, ⟨w⟩, n) ∶= j tn o Neka je Σ abeceda, NΣ njeno kodiranje,

i ϕ ∶ Σ∗ ⇀ Σ∗ jezicna funkcija nad tom abecedom.
gdje je ((qn , pn , tn ))n∈N T -izracunavanje s w ∈ Σ Ako je ϕ Turing-izracunljiva, tada je Nϕ parcijalno rekurzivna.
(a T je Turingov stroj nad Σ) su primitivno rekurzivne funkcije.
Dokaz.
Dokaz: primjena simultane primitivne rekurzije.
Po pretpostavci postoji Turingov stroj T koji racuna ϕ.
G1 (e, x) ∶= G2 (e, x) ∶= 0, G3 (e, x) ∶= Recode(x, b ′ , b). [Oznacimo e ∶= 2T7, b ∶= lh(e[0]), b ′ ∶= card Σ.]
H1 (e, x, n, q, p, t) ∶= newstate(e, q, g), Primjenom postupka s prethodnih slajdova na T , dobivamo
H2 (e, x, n, q, p, t) ∶= pd(p + direction(e, q, g)),
Nϕ(x) ≃ Recode(Tape(e, x, stop(e, x)), b, b ′ )
H3 (e, x, n, q, p, t) ∶= t  g ⋅ bp + newsymbol(e, q, g) ⋅ bp ,
uz pokrate g ∶= t ∕∕ bp mod b, b ′ ∶= card Σ, b ∶= lh(e[0]). pa je Nϕ parcijalno rekurzivna kao kompozicija takvih.

Transpiler RAM ↝ Turing: prvi i posljednji fragment Drugi fragment (F2) | inicijalizacija RAM-stroja

Neka RAM-algoritam P1 sirine m racuna Nϕ.



Zelimo izgraditi Turingov stroj za ϕ. Cilj: prevesti kon guraciju $ w ... (izlaz prvog
n
U Γ (uz Σ) dodajmo elemente # (separator), $ (granicnik), i jos
fragmenta) u kon guraciju $ ∣w∣ # r1 ⟨w⟩ ... .
sve elemente skupa Bm ∶= {◦, •}m , koje promatramo kao stupce: p0
dva specijalna su ∶= (◦, ◦, ◦, ◦, . . . , ◦)⊺ i r1 ∶= (◦, •, ◦, ◦, . . . , ◦)⊺ .
Metoda: dopisemo #, dekrementiramo broj u pomaknutoj bazi b
Granicnik pokazuje pocetak i kraj (koristenog dijela) trake, te za svaki uspjesni dekrement dodamo po jedan r1 na kraj.
a separator odvaja ulaz (Σ-dio) od simulacije (Bm -dio).
Oznacimo b ∶= card Σ, i za t ∈ [1  b] oznacimo αt ∶= NΣ−1 (t). Implementacija: n
:# q0 #, r1 , α1 ∶αb
Zadatak
αt :αt−1 $,
Konstruirajte fragmente koji prevode kon guracije: :r1
F1: (n$ , 0, w . . . ) (pocetna s ulazom w) u (n , ∣w∣, $w . . . ) #, r1 , Σ q1 q2 # p0
αb :
F5: (l , ∣v∣, $v . . . ) u (l$ , 0, v . . . ) (zavrsna s izlazom v)
Registri kao tragovi trake Gadgets za pojedine instrukcije; treci fragment (F3)
F1 i F2 uopce ne ovise o RAM-programu P (osim kroz broj m),
vec samo o ulazu w i kodiranju NΣ. Taj dio sigurno stane. Neka su I0 , . . . , In−1 sve instrukcije od P redom. Za svaku cemo
F3 simulira P-izracunavanje s ⟨w⟩ (na dijelu trake od pozicije imati stanja pi i si , a za instrukcije tipa dec jos i stanje ti .
znaka #, oznacimo je s k). Stanja pi , i < n pomicu glavu s bilo koje pozicije ≥ k na k + 1.
Sadrzaj registara zapisujemo u retke" (tragove) trake: gledano Zadatak (4 komada)
"
od # prema desno, j-ti redak brojeci od 0 odozgo uvijek ce biti
Implementirajte funkcionalnost stanja pi (za sve i < n)
oblika ••⋯•◦◦⋯, gdje je broj kruzica • sadrzaj registra Rj .
te stanja si (i eventualno ti ) ovisno o tipu instrukcije Ii .
Za β, β ′ ∈ B ∶= {◦ , •}, za j ∈ [0  m⟩, za q, q ′ ∈ Q te za d ∈ {−1, 1}, Ako/kad P-izracunavanje s ⟨w⟩ stane, Turingov stroj
β∶β ′ @j koji upravo gradimo doci ce u stanje pn , i u najvisem tragu
δ(j) (q, β) ∶= (q ′ , β ′ , d) (gra cki prikaz: q −−−−→ q ′ za d = 1) nakon p# pisat ce •y ◦⋯, za y ∶= Nϕ(⟨w⟩) = ⟨ϕ(w)⟩.
nam je pokrata za 2m−1 prijelaza oblika δ(q, c) ∶= (q ′ , c ′ , d), Ako to izracunavanje ne stane, stroj nece nikad doci u pn |
gdje se c, c ′ ∈ Bm podudaraju na svim koordinatama a svaki put od pocetnog do zavrsnog stanja vodi preko pn .
osim eventualno j-te, gdje u c pise β a u c ′ pise β ′ .


Cetvrti fragment (F4) | dekodiranje izlaza RAM-izracunljivost povlaci Turing-izracunljivost
Cilj: prevesti kon guraciju $ ∣w∣ # ••••⋯•••◦⋯◦ ...
?
pn Teorem (p ⇒ t za jezicne funkcije)
(u gornjem redu je • ) u $ ⟨v⟩ ∣w∣+1 ••••⋯•••◦⋯◦ $ ... , Neka je Σ abeceda, NΣ njeno kodiranje, te
?
q4
ϕ ∶ Σ∗ ⇀ Σ∗ jezicna funkcija nad tom abecedom.
a zatim (metoda dolje↓) u $ v ◦◦◦◦◦◦◦⋯◦ $ Ako je Nϕ parcijalno rekurzivna, tada je ϕ Turing-izracunljiva.
? q4
...

te obrisati ove ? i zadnji $ (namjestiti kon guraciju za F5). Dokaz.


Metoda: obrnuto od F2; brisemo znakove • iz traga 0 slijeva
Upravo smo, koristeci RAM-program P koji racuna Nϕ
te za svaki (od y njih) maknuti • inkrementiramo rijec prije $. (koji dobijemo kompiliranjem simbolicke de nicije od Nϕ),
#, Bm + #: , Bm ◦ @0, α1 Bm : konstruirali Turingov stroj koji racuna ϕ, tako da za ulaz w:
$: ▸ nakon $ i w zapi se # i x ∶= ⟨w⟩ u unarnom zapisu (r1 x );
pn q3 q4 l
:$ $ ▸ na dijelu trake nakon # simulira P -izra cunavanje s x = ⟨w⟩;
αt :αt+1 •:◦ @0 Bm :α1 ▸ dekodira rezultat y ∶= Nϕ(⟨w⟩) = ⟨ϕ(w)⟩ u rije c v ∶= ϕ(w);
$ ▸ cisti ostatak trake i premjesta v = ϕ(w) na pocetak.
Implementacija: αb :α1 , Bm q5 q6 α1

Izracunljivost jezika Analogni rezultat za brojevne funkcije | binarni zapis


Kao sto smo uz brojevne funkcije gledali
i brojevne relacije (podskupove od Nk ), De nicija
mozemo uz jezicne funkcije gledati jezike (podskupove od Σ∗ ). Binarna abeceda je Σβ ∶= {•, /}: sastoji se od kruzica •
De nicija i separatora /. Fiksirajmo poredak • ≺ /, odnosno kodove

Neka je Σ abeceda i NΣ neko njeno kodiranje. Za jezik L ⊆ Σ∗ ⟨•⟩ ∶= 1, ⟨/⟩ ∶= 2 (pomaknuta baza 2).
kazemo da ima neko svojstvo izracunljivosti ako relacija
⟨L⟩ ∶= σ[L] ⊆ N (odnosno funkcija χ⟨L⟩ ) ima to svojstvo. De niramo primitivno rekurzivnu funkciju blh(n) ∶= slh(n, 2).
Za k ∈ N+ , binarni zapis k-torke x⃗ = (x1 , . . . , xk ) ∈ Nk je rijec
Zadatak (veza s kolegijem Interpretacija programa)
x) ∶= •x1/•x2/⋯/•xk ∈ Σβ∗ .
β(⃗
Dokazite da je de nicija rekurzivnog jezika u gornjem smislu
(⟨L⟩ je rekurzivna) ekvivalentna de niciji iz Interpretacije
programa (postoji Turingov odlucitelj koji prepoznaje L). Zadatak
Uputa: (⇐) malo doradite funkcije stop i Nϕ" za odlucitelje, Dokazite da je β bijekcija izmedu N+ i Σ∗β . Opisite inverz β−1 .
"
(⇒) dodajte dva prijelaza iz l$ transpiliranog stroja za χ⟨L⟩ .

Binarna reprezentacija brojevne funkcije Primitivno rekurzivne funkcije bink

Lema
De nicija Za svaki k ∈ N+ , bink ∶= NΣ∗β ○ βk je primitivno rekurzivna.

Za brojevnu funkciju fk de niramo binarnu reprezentaciju βf: Dokaz.


βf ∶ Σ∗β ⇀ Σ∗β , x)), ako je w = β(⃗
βf(w) ∶≃ β(f(⃗ x ). k Indukcijom po k. Baza je formula za sumu geometrijskog niza:

Jezicna funkcija βf dobro modelira sve aspekte izracunljivosti bin1 (x) = ⟨•x ⟩ = (11⋯1)2 = 2x  1 = pd(pow(2, x)).
brojevne funkcije f. Zato skraceno kazemo da je
f Turing-izracunljiva ako je βf Turing-izracunljiva. Pretpostavimo da je binl primitivno rekurzivna za neki l ∈ N+ .

Primjenom dokazanih rezultata za jezicne funkcije na βf Korak: Tada je binl+1 (⃗x, y) = ⟨•x1/⋯/•xl/•y ⟩ =
mozemo dobiti analogne rezultate za brojevne funkcije = ⟨•x1/⋯/•xl ⟩ ⌢ ⌢ y l
x) ⌢
2 ⟨/⟩ 2 ⟨• ⟩ = bin (⃗
⌢ 1
2 2 2 bin (y),
| no prvo trebamo nekoliko tehnickih lema.
sto je primitivno rekurzivno kao kompozicija od binl , bin1 ,
konstante 2, operacije ⌢2 i koordinatnih projekcija.
Lovljenje strelica po komutativnim dijagramima Turing-izracunljivost povlaci parcijalnu rekurzivnost
Zadatak
Dokazite blh ○ bin1 = I11 . [ Podsjetnik: blh(n) ∶= slh(n, 2). ] Teorem (t ⇒ p za brojevne funkcije)
Neka je k ∈ N+ i fk (brojevna) funkcija.
Propozicija (Dijagram) Ako je βf Turing-izracunljiva, tada je f parcijalno rekurzivna.
Za svaki k ∈ N+ , za svaku brojevnu funkciju fk vrijedi
Dokaz.
bin1 ○ f = Nβf ○ bink . Po teoremu [ t ⇒ p za jezicne funkcije ],
Nβf je parcijalno rekurzivna. Iz dijagrama slijedi da je
f
Nk N f = blh ○ Nβf ○ bink ,
βk β1
arg1,..., argk

bink

dakle parcijalno rekurzivna kao kompozicija triju takvih.


Σ∗β •∗
βf

bin1

blh1
NΣ∗β NΣ∗β
Obrat je kompliciraniji: umjesto lijevog inverza blh za bin1,
Ibin
1 N βf
Ibin
1 sada trebamo k funkcija (argi )ki=1 koje cine desni inverz za bink .
k 1

Funkcije arg1 , . . . , argk Turing-izracunljivost parcijalno rekurzivnih funkcija

Zadatak
Teorem (p ⇒ t za brojevne funkcije)
Dokazite primitivnu rekurzivnost sljedecih relacija i funkcija:
▸ ⟨v⟩ ⊑ ⟨w⟩: v je pre ks od w Binarne reprezentacije svih parcijalno rekurzivnih
▸ count2(x): broj dvojki u (zapisu od) x
brojevnih funkcija su Turing-izracunljive.
▸ Ibink = ⟨β[Nk ]⟩: slika k-mjesnog binarnog kodiranja
Dokaz.
▸ z ∶= x̂: uokvirivanje (zapisa od) x dvojkama: x̂ = (2 x 2)2
Neka je k ∈ N+ i f k parcijalno rekurzivna. Iz dijagrama slijedi
▸ pos2(z, i) ∶= pozicija i-te dvojke u (zapisu uokvirenog) z

▸ streak1(z, i) ∶= duljina i-tog niza uzastopnih jedinica u z Nβf = (bin1 ○ f ○ (arg1 , . . . , argk )) ∣ I
bink

▸ argn (bink (⃗ xk ⟩[n − 1] (= Ik


x)) = ⟨⃗ x) za 1 ≤ n ≤ k)
n (⃗ sto je parcijalno rekurzivna funkcija kao kompozicija takvih,
Pod zapisom podrazumijevamo zapis u pomaknutoj bazi 2. restringirana na rekurzivan skup.
i broji od 0 slijeva; za prevelik i pos2 daje blh, a streak1 daje 0. Iz [ p ⇒ t za jezicne funkcije ], βf je Turing-izracunljiva.
Jedan odgovor: pos2(z, i) ∶= blh((µy < z)(ŷ ⊑ ẑ ∧ count2(y) = i))

Teorem ekvivalencije Sustavi opce izracunljivosti i univerzalnost


Teorem
De nirali smo cetiri formalizma izracunljivosti i pokazali
Neka je k ∈ N+ , te fk funkcija. Tada je ekvivalentno:
da su ekvivalentni: racunaju iste funkcije ako rade s istim
(p) f je parcijalno rekurzivna (dobivena s ○, pr, µ iz Z, Sc, Ikn ) tipom podataka, inace iste" do na neko prirodno kodiranje.
(s) f ima simbolicku de niciju (f je u korijenu stabla . . . ) "

Stovi
se, jedan od njih (pa onda i svi ostali) je univerzalan:
(r) f je RAM-izracunljiva (neki RAM-algoritam racuna f ) familija parcijalno rekurzivnih funkcija compk moze racunati
(m) f je makro-izracunljiva (neki makro-algoritam racuna f ) bilo koju parcijalno rekurzivnu funkciju zadanu indeksom.
(i) f ima indeks (postoji e ∈ N takav da je f = {e}k )
U zadnjih stotinjak godina predlozeni su brojni formalizmi
(t) f je Turing-izracunljiva (neki Turingov stroj racuna βf ) (opce gramatike, λ-izrazi, . . . ) i svi su se pokazali ekvivalentnima.
Church{Turingova teza tvrdi da postoji intuitivna ideja
algoritam konkretni apstraktni izracunljivosti koju svi ti formalizmi uspjesno modeliraju.
model (imperativni) (funkcijski) Ipak, postoje i neizracunljive funkcije, koje cak ni univerzalni
jezicni (prakticni) Turingov stroj λ-racun sustavi ne mogu racunati. To cemo dokazati dijagonalizacijom.
brojevni (teorijski) RAM-stroj rekurzivnost

Russellova funkcija i Kleenejev skup Nerekurzivna (totalna) funkcija i relacija


De nicija
Korolar
De niramo Russell(x) ∶≃ 1 + comp(x, x). Oznacimo K1 ∶= DRussell . ⎧
⎪ Russell(x) , K(x)

Funkcija zadana s R̃
ussell(x) ∶= ⎨
Russell = Sc ○ U ○ µT1 ○ (I11 , I11 ) je parcijalno rekurzivna. Ali . . . ⎩0,

⎪ inace
je totalna ali nije rekurzivna. Kleenejev skup K nije rekurzivan.
Lema
Ne postoji rekurzivna funkcija r takva da je r ∣ K = Russell. Dokaz.
Kad bi R̃ ussell bila rekurzivna, tada bi ona bila jedna od
Dokaz. funkcija r za koje prethodna lema tvrdi da ne mogu postojati.
Pretpostavimo da postoji. Tada r ima indeks, oznacimo jedan A kad bi K bio rekurzivan, tada bi i R̃ussell = if{K ∶ Russell, Z}
takav s e. Kako je r totalna, postoji q ∶= r(e) ∈ N. No tada bila parcijalno rekurzivna po teoremu o grananju
(parcijalno rekurzivna verzija).
N ∋ 1 + q = 1 + r(e) = 1 + {e}(e) = 1 + comp(e, e)
[Primijetimo da smo time dobili jos jedan primjer
pokazuje da je e ∈ K, pa je 1 + q = Russell(e) ≠ r(e) = q.
totalne nerekurzivne funkcije: konkretno, χK .] ZZ: 7.1
Dakle r ne moze biti prosirenje od Russell.
Problem zaustavljanja Prema Churchovom teoremu

Po teoremu ekvivalencije, Prethodni slajd pokazuje put k dokazu Churchovog teorema.


postoje RAM-stroj i Turingov stroj koji racunaju Russell. Ideja je za svaki prirodni broj t iskonstruirati formulu prvog
reda ϕt , tako da t bude u K ako i samo ako je ϕt valjana.
Kad bismo za bilo koji od ta dva stroja imali efektivni
postupak za odredivanje stane li s proizvoljnim ulazom, Formula ce modelirati problem zakljucivanja (logicke posljedice)
po Church{Turingovoj tezi taj efektivni postupak bi racunao
πt , ι0 , ι1 , . . . , ιn−1 ⊧? ζ
rekurzivnu funkciju. No kako χK nije rekurzivna,
proizlazi da takav efektivni postupak ne moze postojati. gdje jedino πt ovisi o t, dok su sve ostale formule, kao i broj n,
[Formalno, Turingov stroj racuna βRussell =∶ ρ, no iz de nicije β ksne. Taj problem mozemo prikazati kao
slijedi da za svaki t ∈ N vrijedi: •t ∈ Dρ ako i samo ako je t ∈ K.] problem utvrdivanja valjanosti formule ϕt oblika
Korolar πt → (ι0 ∧ ι1 ∧ ⋯ ∧ ιn−1 → ζ )
Problem zaustavljanja (halting problem )
za Turingove strojeve i za RAM-strojeve je neodluciv. (gdje ψ oznacava univerzalno zatvorenje formule ψ, dok su
πt i ζ recenice), iz cega ce slijediti tvrdnja Churchovog teorema.

Churchov teorem | uvodenje oznaka Formule ιi


Za i < n, de niramo formulu ιi ovisno o i-toj instrukciji od P:
Kompilirajmo funkciju Russell u RAM-program P. ▸ Ako je to (i. inc Rj ), de niramo ιi kao formulu
Oznacimo s m i n redom sirinu i duljinu algoritma P1 .
Ri (x[0m⟩ ) → Ri+1 (x[0j⟩ , s(xj ), x⟨jm⟩ ).
Signatura σ nad kojom cemo konstruirati formule ima:
▸ jedan konstantski simbol o

▸ jedan jednomjesni funkcijski simbol s ▸ Ako je to (i. dec Rj , l), de niramo ιi kao formulu
▸ n + 1 m-mjesnih relacijskih simbola R0 , . . . , Rn .
(Ri (x[0j⟩ , o, x⟨jm⟩ ) → Rl (x[0j⟩ , o, x⟨jm⟩ )) ∧
Od individualnih varijabli koristit cemo samo xj , j < m.
∧ (Ri (x[0j⟩ , s(xj ), x⟨jm⟩ ) → Ri+1 (x[0m⟩ )).
[Intendirana semantika: zatvoreni termi ocito predstavljaju
prirodne brojeve. Atomarne formule Ri (x0 , . . . , xm−1 )
predstavljaju dostizne kon guracije RAM-stroja: ▸ Ako je to (i. go to l), de niramo ιi kao formulu
i je vrijednost od pc, a valuacija od xj je sadrzaj registra Rj .]
Ri (x[0m⟩ ) → Rl (x[0m⟩ ).

Pocetna i zavrsna formula Dokaz leme, smjer (⇐)

Za svaki t ∈ N, de niramo
Neka je t ∈ N proizvoljan, i ζ logicka posljedica od Γt .
t s-ova m−2 o-ova
³¹¹ ¹ ¹ · ¹ ¹ ¹ ¹µ Pretpostavimo suprotno da P-izracunavanje s t ne stane, i za
sve j, k ∈ N, oznacimo s r(k)
³¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ·¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ µ
πt ∶= R0 (o, s(s(⋯s(o)⋯)), o, o, . . . , o), j sadrzaj registra Rj , a s pc(k) (< n)
Γt ∶= {πt , ι0 , ι1 , ι2 , . . . , ιn−1 }, sadrzaj programskog brojaca, nakon k koraka izracunavanja.
ζ ∶= ∃x0 ∃x1 ⋯∃xm−1 Rn (x0 , x1 , . . . , xm−1 ). Promotrimo σ-strukturu N, s nosacem N i interpretacijom
zadanom s: oN ∶= 0; sN ∶= Sc; te za sve i ≤ n,
Lema (k)
RN c ∈ Nm ∣ ∃k (pc(k) = i ∧ (∀j < m)(rj
i ∶= {⃗ = cj+1 ))}.
Za svaki t ∈ N vrijedi: (P-izracunavanje s t stane) ⇐⇒ (Γt ⊧ ζ) .
U toj strukturi vrijedi πt i sve ιi , pa mora vrijediti i ζ.
Zadatak No N ⊧ ζ znaci RN (k)
n ≠ ∅, odnosno ∃k (pc = n ∧ ⋯),
Generalizirajte sve na ovom slajdu na proizvoljni sto je kontradikcija s pretpostavkom da izracunavanje ne stane.
RAM-algoritam Pk i ulazne podatke za njega ⃗tk .

Dokaz leme, smjer (⇒) Dokaz Churchovog teorema


Korolar
Pretpostavimo sada da P-izracunavanje s t stane, i oznacimo Za svaki t ∈ N vrijedi K(t) ⇐⇒ (⊧ ϕt ), gdje je
broj koraka u tom izracunavanju s b. Kao i u dokazu obrnutog
smjera, uvedimo oznake r(k)
j i pc(k) (samo sada za k ≤ b). ϕt ∶= (πt → ( ι0 ∧ ι1 ∧ ⋯ ∧ ιn−1 → ζ )).
Neka je M = (M, Θ, f, (Si )i≤n ) proizvoljna σ-struktura u kojoj
Teorem (Church)
vrijedi Γt . Oznacimo s a(k)
M
j ∶= rj (k) = f(f(⋯ f(Θ) ⋯)) ∈ M
(k)
element nosaca dobiven rj -strukom primjenom f na Θ. Ne postoji algoritam koji za proizvoljnu
formulu prvog reda odlucuje je li valjana.
Indukcijom po k dokazemo da za svaki k ≤ b vrijedi
Dokaz.
⃗k ∶= (a(k)
a
(k) (k)
0 , a1 , . . . , am−1 ) ∈ Spc(k) .
Kad bi takav algoritam postojao, mogli bismo pomocu njega
Baza slijedi iz M ⊧ πt , a korak iz M ⊧ ιpc(k) . napisati algoritam koji prima prirodni broj t, konstruira
formulu ϕt , ustanovi je li ϕt valjana, te ako jest vrati 1,
Za k ∶= b dobijemo a⃗b ∈ Spc(b) = Sn ≠ ∅, dakle M ⊧ ζ.
a inace vrati 0. Taj algoritam bi racunao χK , pa bi po
Church{Turingovoj tezi K bila rekurzivna, kontradikcija.
Formule prvog reda kao formalni jezik Kodiranje formula prvog reda
Algoritam na prethodnom slajdu opisali smo samo intuitivno,
jer barata formulama umjesto prirodnih brojeva, a nismo
Sada je jasno da svaku formulu, cak svaki konacni niz formula,
opisali kodiranje formula. Ideje iz Turing-izracunljivosti
mozemo shvatiti kao zapis broja u pomaknutoj bazi b ′ = 12
mogu nam pomoci da i to formaliziramo: svaka se formula
(NΣlog je zadano redoslijedom kojim su simboli navedeni na
logike prvog reda moze zapisati kao rijec nad abecedom
prethodnom slajdu; npr. ⟨R⟩ = 4, ⟨c2 ⟩ = ⟨c’’⟩ = (266)12 = 366).
Σlog ∶= {x, c, f, R, , , ’ , (, ), ¬, →, ∀, # }, Nije jednostavno, ali moze se pokazati da je to zaista kodiranje:
kod: 1 2 3 4 5 6 7 8 9 A B C
skup kodova formula prvog reda (jednomjesna relacija ⟨F1⟩) je
pri cemu se svi logicki veznici i kvanti katori mogu izraziti rekurzivan, te se osnovne metode kao sto su introdukcija ili
pomocu navedenih (detalji u: Vukovic , Matematicka logika). eliminacija veznika i kvanti katora, pravila zakljucivanja,
Indeksiranje varijabli i nelogickih simbola pise se pomocu supstitucija terma za varijablu i slicno, sve mogu realizirati
ponavljanja crtice ’, recimo x0 se pise kao x, a f3 kao f’’’. kao primitivno rekurzivne funkcije na kodovima.
Mjesnost se moze zakljuciti brojeci zareze , izmedu zagrada (). Operacija 12
⌢ je pritom vrlo korisna.
Jednakost shvacamo kao R20 , dakle c0 = x1 pisemo kao R(c,x’). Za detalje: Smullyan, Godel's Incompleteness Theorems.
Simbol # se ne pojavljuje u zapisu pojedine formule, nego sluzi
kao separator kod pisanja konacnih nizova formula, npr. dokaza.

Gradivo Interpretacije programa je korisno Kodirana izreka Churchovog teorema

Primjer Zadatak
Beskontekstna gramatika (tipovi tokena su u zadnjem redu) ▸ Napisite formulu ϕt u ekvivalentnom obliku ϕ̂t ∈ F1.
▸ Dokazite da je funkcija Phi1 , zadana s Phi(t) ∶= ⟨ϕ̂t ⟩,
S → P(U) ∣ ¬S ∣ (S → S) ∣ ∀V S
primitivno rekurzivna.
T → V ∣ C ∣ F(U) U → T ∣ U,T
V → x ∣ V ’ C → c ∣ C’ F → f ∣ F’ P → R ∣ P’ Korolar
generira jezik F1 nad abecedom Σlog . Jezik Valid ⊂ F1 svih valjanih formula nije rekurzivan.

Iz toga slijedi da je taj jezik beskontekstan, pa je rekurzivan. Dokaz.


Zadatak Samo treba primijetiti da je t ∈ K ⇔ Phi(t) ∈ ⟨Valid⟩, odnosno
χK = χ⟨Valid⟩ ○ Phi. Kad bi Valid bio rekurzivan, tada bi χK bila
Je li svaki beskontekstni jezik primitivno rekurzivan? rekurzivna kao kompozicija rekurzivnih, kontradikcija.

Prema Godelovom prvom teoremu nepotpunosti Funkcije viseg reda


Pogledajmo sada skup recenica Go ∶= {¬ϕt ∣ t ∈ K∁ }. Rekli smo da nam funkcijski interpreter za RAM-programe
Prema lemi koju smo dokazali prije Churchovog teorema, pruza mogucnost metaprogramiranja, odnosno
ako N ⊧ ϕt , tada P-izracunavanje s t stane, pa je t ∈ K. prijenosa (parcijalno rekurzivnih) funkcija kao argumenata,
Kontrapozicijom, za sve t ∈ K∁ je N ⊧/ ϕt , a kako je ϕt recenica, i vracanja istih iz, funkcija viseg reda" koje pisemo.
"
zapravo vrijedi N ⊧ ¬ϕt . To znaci (N, 0, Sc, RN
0 , . . . , Rn ) ⊧ Go
N
, Jednostavan primjer smo vidjeli u teoremu o grananju
odnosno sve recenice iz Go vrijede u standardnom modelu (parcijalno rekurzivna verzija), gdje smo selekcijom
prirodnih brojeva (obogacenom s nekim relacijama Ri , ispravnog indeksa zaobisli nede niranost irelevantnih redaka.
ali one se barem nacelno mogu svesti na zbrajanje i mnozenje). Tamo uopce nismo trebali mijenjati indekse, vec samo odabrati
Kada bi neka dovoljno lijepa aksiomatika te strukture pravi | ali opcenito mozemo zamisliti razne transformacije na
(recimo, PA) mogla dokazati svaku formulu iz Go, tada bismo RAM-programima kao izracunljive (npr. primitivno rekurzivne)
opet imali svojevrstan algoritam za odluku Kleenejevog skupa: funkcije na indeksima. Recimo, kad smo dokazivali zatvorenost
paralelno pustimo P da racuna Russell(t) i enumerator nad Σlog skupa RAM-izracunljivih funkcija na razne operatore (○, pr, µ),
da generira dokaze u PA, za svaki od kojih provjerimo zavrsava mogli bismo svaku od tih konstrukcija shvatiti kao
li s ¬ϕ̂t . Kontradikcija s Church{Turingovom tezom znaci da preslikavanje indeksa, npr. primRecursek (g, h) koje paru
postoji Godelova recenica, istinita na N, ali nedokaziva u PA. (indeks za Gk , indeks za Hk+2 ) pridruzi indeks za (G pr H)k+1 .

Specijalizacija funkcije Teorem o parametru

Teorem
Jednu jednostavnu transformaciju funkcije napravit cemo
eksplicitno kao primitivno rekurzivnu funkciju na indeksima, Za svaki k ∈ N+ , postoji primitivno rekurzivna funkcija S2k ,
a pomocu nje cemo napraviti sve ostalo sto nam treba. takva da je za sve (y, e) ∈ N2 , Sk (y, e) ∈ Prog indeks funkcije
dobivene iz {e}k+1 specijalizacijom zadnjeg argumenta na y.
U procesu cemo dobiti i teorem rekurzije, koji nam daje
mogucnost pisanja i rjesavanja opcih rekurzija, ne izlazeci iz Zadatak: Dokazite teorem o parametru kroz ove korake:
okvira parcijalno rekurzivnih / RAM-izracunljivih funkcija. Funkcija dBase preslikava tip instrukcije u prim-broj koji se
potencira odredistem u kodu instrukcije (1 ako takvog nema).
De nicija
Shift(y, ⌜ I ⌝) pomice odrediste (ako postoji) instrukcije I za y.
Neka su k, l ∈ N+ , gk+l funkcija i y⃗ ∈ Nl . Za funkciju fk zadanu
Napisite makro Y ∗ semantike rk+1 = 0 ⇒ rk+1 ′
= y.
s f(⃗x) ∶= g(⃗x, y⃗ ) kazemo da je dobivena iz g specijalizacijom
zadnjih l argumenata na y⃗ . Pisemo f = $(⃗y, g). Napisite makro-program Q koji racuna $(y, {2P7}k+1 ).
Kod spljostenja 2Q♭ 7 prikazite kao konkatenaciju dvije funkcije
Primjer: {e}k = $(e, compk ). Nadite jos primjera u kolegiju! (dobivene pomocu operatora povijesti). De nirajte te funkcije.
Ne zaboravite smisleno de nirati i Sk (y, e) ∈ Prog za e ∈ Prog∁ !
Teorem o parametrima Parcijalna jednakost u funkcijskim jednadzbama

Buduci da su indeksi k-mjesnih funkcija de nirani


Iteriranjem upravo de nirane funkcije S2k mozemo pomocu univerzalne funkcije, speci kaciju od Sl+1
k
specijalizirati vise zadnjih argumenata odjednom. mozemo napisati i na sljedeci formalniji" nacin:
"
Korolar
compk+l (⃗ ⃗ , e) ≃ compk (⃗
x, y y, e)).
x, Sk (⃗
Za sve k, l ∈ N+ postoji primitivno rekurzivna funkcija Sl+1 k
takva da je za sve (⃗y, e) ∈ Nl+1, Sk (⃗y, e) ∈ Prog indeks funkcije Upotrijebili smo znak ≃ kako bismo istaknuli da izrazi
dobivene iz {e}k+l specijalizacijom zadnjih l argumenata na y⃗ . s lijeve i desne strane ne moraju biti uvijek de nirani |
ali tada moraju oba biti nede nirani za iste vrijednosti x⃗, y⃗ i e.
Dokaz.
To je samo tockovni zapis simbolicke funkcijske jednadzbe
Indukcijom po l (za svaki k pojedinacno). Raspisite!
compk+l = compk ○ (Ik+l+1, . . . , Ik+l+1 , Sk ○ (Ik+l+1 k+l+1
k+1 , . . . , Ik+l+1 ))
Primjer: S3 (7, 2, 9, 4, e) = S3 (7, S4 (2, S5 (9, S6 (4, e)))) ZZ: 5.2 1 k

koja ukljucuje i jednakost domena, ali je od nje puno citljiviji.

Primitivna rekurzivnost komponiranja Pokusaj daljih primjena


Propozicija Primjer
Za sve k, l ∈ N+ postoji primitivno rekurzivna funkcija Neka je a neki indeks za add2 . Tada je (za svaki k)
composel+1
k takva da je za sve (⃗
g, h) ∈ Nl+1 , plus2k ∶= $(a, ek,3 , S4k ) primitivno rekurzivna, te je
plusk (m, n) ∶= composek (m, n, a) indeks funkcije {m}k + {n}k .
gl , h)}k = {h}l ○ ({g1 }k , . . . , {gl }k ).
{composek (⃗
Nazalost, primRecurse ne mozemo dobiti tako jeftino: dobijemo
Dokaz. ⎧
⎪ compk (⃗
⎪ x, g), y=0
F(⃗
x, y, g, h) ≃ ⎨
Fk,l (⃗k l
⃗ , h) ∶≃ compl (compk (⃗
x ,g x, g1 ), . . . , compk (⃗
x, gl ), h) ⎩ compk+2 (⃗

⎪ x, pd(y), F(⃗
x, pd(y), g, h), h), inace

je parcijalno rekurzivna; oznacimo s ek,l jedan njen indeks. i sada desno imamo F koje se ne mozemo tako lako rijesiti.
Specijalizacijom zadnjih l + 1 argumenata dobivamo: Ipak, mozemo je (odnosno njen indeks) shvatiti kao parametar!
composek (⃗ l
g , h) ∶= Sk (⃗ l
g , h, ek,l ) Svaka funkcijska jednadzba poput gornje moze se svesti na
oblik compl (⃗t, f) ≃ L(⃗t, f) s nepoznanicom f, za neku parcijalno
k ∶= $(ek,l , Sk ) ].
[ composel+1 l+2
rekurzivnu funkciju Ll+1 . Taj oblik zovemo opcom rekurzijom.

Rekurzivne de nicije Specijalne rekurzije

De nicija
Primjer
Neka je k ∈ N+ i Gk+1 parcijalno rekurzivna funkcija. Jednadzbu
Iz zapisa ⎧
compk (⃗
x, e) ≃ G(⃗
x, e) ⎪ G(⃗
⎪ x), y=0
compk+1 (⃗
x, y, e) ≃ ⎨
⎩ x, pd(y), compk+1 (⃗

⎪ H(⃗ x, pd(y), e)), inace
(s nepoznanicom e, za sve x⃗) zovemo opcom rekurzijom. Ako e vidimo: primitivna rekurzija je specijalni slucaj opce rekurzije.
zadovoljava tu jednadzbu, {e}k zovemo rjesenjem te rekurzije. [Ako su G i H rekurzivne, rjesenje je jedinstveno i rekurzivno.]
Tri su zanimljiva pitanja vezana uz opce rekurzije: Zadatak
1. imaju li uopce (parcijalno rekurzivno) rjesenje; Prikazite
2. je li ono jedinstveno (kao funkcija, ne kao indeks!); ▸ rekurziju s povijescu,
3. je li to jedinstveno rjesenje totalno (rekurzivno). ▸ simultanu rekurziju
Odgovori na drugo i trece pitanje ovise o G. u obliku opce rekurzije!
[ Npr. ako je G rekurzivna, svako rjesenje je totalno. ]
No odgovor na prvo pitanje uvijek je potvrdan.

Primjeri opcih rekurzija Dijagonalna funkcija Dk


Intuitivno, rjesenje opce rekurzije mora biti funkcija koja zna"
▸ x, e): "
comp3 (⃗
x, e) ≃ comp3 (⃗ svoj indeks i moze ga koristiti u svom radu (kao argument).
svaka parcijalno rekurzivna tromjesna funkcija je rjesenje. Takve funkcije zovemo dijagonalama.
▸ comp3 (⃗ x, e) + 1: jedinstveno rjesenje je ⊗3 .
x, e) ≃ comp3 (⃗
De nicija

⎪ 0, x=0
Neka je k ∈ N+ te h ∈ N. Dijagonala za H ∶= {h}k+1 je funkcija



▸ x=1 :

comp1 (x, e) ≃ ⎨ comp1 (1, e),

⎪ ∂Hk zadana s ∂H(⃗ x, h), odnosno ∂H ∶= $(h, H).
x) ∶≃ H(⃗


⎩ comp1 (x  2, e) + 2,
⎪ x≥2
beskonacno mnogo rjesenja, sva osim jednog su totalna. Propozicija



⎪ 0, x<2 Za svaki k ∈ N+ postoji primitivno rekurzivna funkcija D1k takva
da je za svaki h ∈ N, Dk (h) neki indeks dijagonale za {h}k+1 .

▸ x ∈ N+ ∧ 2 ∣ x :

comp1 (x, e) ≃ ⎨ comp1 (x ∕∕ 2, e),




⎩ comp1 (3x + 1, e), inace
Dokaz.

nerijesen je problem (Collatzova slutnja)
x, h) ≃ {h}k+1 (⃗
H(⃗ x, h) ≃ compk+1 (⃗
x, h, h) ≃ compk (⃗
x, Sk (h, h))
je li rjesenje jedinstveno odnosno rekurzivno (nulfunkcija).
znaci da mozemo de nirati Dk (h) ∶= Sk (h, h).
Teorem rekurzije Toranj aritmetickih operacija
Teorem Sljedbenik, zbrajanje, mnozenje, potenciranje, tetracija, . . .
svaka od tih operacija dobivena je ponavljanjem prethodne.
Za svaki k ∈ N+ , za svaku parcijalno rekurzivnu funkciju Gk+1 , Oznacimo ih s A0 = Sc ○ I22 , A1 = add2 , A2 = mul2 , A3 = pow, . . .
postoji e ∈ N takav da za sve x⃗ ∈ Nk vrijedi comp(⃗x, e) ≃ G(⃗x, e). Svaka An je primitivno rekurzivna
| za n < 4 smo to vec pokazali; zatim, lako se vidi
Dokaz.
Kao sto je objasnjeno na vrhu prethodnog slajda, trazimo e An+1 (x, 0) = 1 (za n > 1)
u obliku e = Dk (h) za indeks h neke funkcije H. Dakle zelimo An+1 (x, y + 1) = An (x, An+1 (x, y))

G(⃗
?
x, Dk (h)) ≃ compk (⃗
x, Dk (h)) ≃ compk+1 (⃗ x, h),
x, h, h) ≃ H(⃗ dakle An+1 = C11 pr An ○ (I31 , I33 ), pa dalje mozemo indukcijom |
no sto je s funkcijom A(x, y, z) ∶= Az (x, y)? Ocito je totalna
sto ce vrijediti ako de niramo H(⃗x, y) ∶≃ G(⃗x, Dk (y)) za sve y. jer su sve Az totalne, i u intuitivnom smislu je izracunljiva,
Funkcija H je parcijalno rekurzivna (zasto?), pa ima indeks h. pa bi po Church{Turingovoj tezi trebala biti rekurzivna.
Sada je po gornjem e ∶= Dk (h) trazeni broj. Poteskoca je u tome da nije primitivno rekurzivna
[Drugim rijecima, ∂H je rjesenje opce rekurzije.] (intuitivno, z kaze koliko puta moramo primijeniti operator pr
u de niciji; ne moze manje jer inace A ne raste dovoljno brzo),
ZZ: 5.1, 5.3 no primjena teorema rekurzije lako daje rekurzivnost od A3 .

Primjena teorema rekurzije: Ackermannova funkcija Teorem o ksnoj tocki; k-invarijantnost


De niramo cetveromjesnu parcijalno rekurzivnu funkciju Korolar
grananjem: ⎪ y + 1 , (sljedbenik)

⎪ ⎪


z=0 Neka je k ∈ N+ te F1 rekurzivna funkcija.
x , (zbrajanje s nulom) Tada postoji e ∈ N takav da je {e}k = {F(e)}k [⇐⇒∶ e ≈k F(e)].




⎪ y=0∧z=1


⎪ 0 , (mnozenje nulom)

⎪ y=0∧z=2 Dokaz.
G(x, y, z, e) ∶≃ ⎨




1 , (potenciranje, . . . nulom) y=0∧z≥3 Primijenimo teorem rekurzije na compk (⃗x, e) ≃ compk (⃗x, F(e)).







comp(x, comp(x, pd(y), z, e), Tako dobijemo e ∈ N, a jer je F totalna, imamo i f ∶= F(e) ∈ N,



⎪ pd(z), e) , y>0∧z>0 te su e i f indeksi iste k-mjesne funkcije.

Po teoremu rekurzije, postoji a ∈ N takav da za sve (x, y, z) ∈ N3 De nicija
vrijedi comp3 (x, y, z, a) ≃ G(x, y, z, a). Indukcijom po z i y Neka je S ⊆ N, te k ∈ N+ . Kazemo da je S k-invarijantan
sada se vidi da je {a}3 = A (dokazite!), pa A ima indeks. ako je zatvoren na ≈k : e ∈ S i {e}k = {f}k povlace f ∈ S .
Kako smo vec vidjeli da je totalna, A je rekurzivna funkcija.
Zadatak
A3 je jedna od brojnih varijanti Ackermannove funkcije.
Dokazite: S je k-invarijantan ako i samo ako
Druga cesto koristena varijanta je A2 (x, y) ∶= A3 (2, y + 3, x) − 3.
postoji skup funkcija F takav da je S = {e ∈ N ∣ {e}k ∈ F } =∶ ⌜F ⌝.
Svima je zajednicko racunanje ugnijezdenom rekurzijom.

Riceov teorem Uputstvo za upotrebu Riceovog teorema



Zelimo dokazati da skup S nije rekurzivan. [ZZ: 6]
Teorem ▸ Pomo cu skupa S zapisemo skup T ⊆ N u kojem
Neka je ∅ ⊂ S ⊂ N, te postoji k ∈ N+ takav da je se nalaze indeksi nekih funkcija ksne mjesnosti k.
S k-invarijantan. Tada S nije rekurzivan. (Skup svih takvih funkcija oznacimo s F.)
▸ Nademo neki indeks koji jest u T (tako da nademo neku
Dokaz. jednostavnu funkciju u F, napisemo RAM-program koji je
Pretpostavimo suprotno: neka je k ∈ N+ , racuna, i kodiramo ga). [ Korisno: {0}k = ⊗k , {1}k = Ck0 . ]
i S neprazan rekurzivan k-invarijantan pravi podskup od N. ▸ Analognim postupkom nademo neki indeks koji nije u T .
Jer je S ⊂ N, postoji n ∈ S∁ . Jer je S neprazan, postoji s ∈ S. ▸ Doka zemo da je T k-invarijantan, gdje je k mjesnost koju
Jer je S rekurzivan, funkcija F1 ∶= if{S ∶ C1n , C1s } je rekurzivna, smo ksirali u prvom koraku. Ovo je najcesce jednostavno:
pa po teoremu o ksnoj tocki postoji e ∈ N za koji je e ≈k F(e). ako je {e}k = {f}k i {e}k ∈ F, tada je i {f}k ∈ F.
Ako je e ∈ S, k-invarijantnost daje n = F(e) ∈ S, kontradikcija. ▸ Doka zemo da iz pretpostavke da je S rekurzivan slijedi
Ako pak e ∉ S, tada je F(e) = s ∈ S, pa k-invarijantnost rekurzivnost od T [napisemo χT , najcesce kompozicijom,
daje e ∈ S, kontradikcija. Dakle, pretpostavka je kriva. pomocu χS (svedemo T na S): detalji na sljedecem slajdu],
sto je kontradikcija s Riceovim teoremom.

Svodenje (redukcija) relacija Poluodlucivi problemi i njihova formalizacija


Znamo da Kleenejev skup nije rekurzivan: ne mozemo za svaki
prirodni broj t u konacno mnogo koraka odgovoriti je li t ∈ K.
De nicija
Ipak, ako je odgovor da", to cemo sigurno saznati
"
Neka su k, l ∈ N+ , te T k i Sl relacije. Kazemo da je T svediva cim racunanje Russell(t) zavrsi.
(reducibilna) na S ako postoje rekurzivne funkcije Fk1 , . . . , Fkl Jedino ako je odgovor ne", mozda to necemo nikada saznati
"
takve da je χT = χS ○ (F1 , . . . , Fk ). Pisemo T ⪯ S. (mozemo ponekad, recimo kad t ∉ Prog, ali ne uvijek).
Zatvorenost skupa rekurzivnih funkcija na kompoziciju znaci Takvi problemi su poluodlucivi : odlucivi" su u slucaju
"
da je svaka relacija svediva na rekurzivnu, i sama rekurzivna. pozitivnog odgovora. Zbog univerzalnosti RAM-modela,
halting problem je univerzalni primjer poluodlucivog problema,
Ako relacije gledamo kao probleme odlucivanja, T ⪯ S znaci da
sto nas motivira da poluodlucive probleme opcenito
je problem T laksi" od S. To ne znaci puno kad imamo samo
" modeliramo kao domene izracunljivih funkcija.
dva stupnja tezine (tehnicki, mozemo gledati i primitivno
rekurzivne relacije kao zasebni stupanj, ali tesko je naci De nicija
Ackermannovu relaciju". . . ), no sada cemo dodati jos jedan. Neka je k ∈ N+ . Kazemo da je relacija Rk rekurzivno prebrojiva
"
ako postoji parcijalno rekurzivna funkcija f k takva da je R = Df .
Svodenje cuva rekurzivnu prebrojivost Rekurzivnost je strogo jaca od rekurzivne prebrojivosti
Propozicija Propozicija
Svaka relacija svediva na rekurzivno prebrojivu relaciju Svaka rekurzivna relacija je rekurzivno prebrojiva.
je i sama rekurzivno prebrojiva.
Dokaz.
Dokaz. Neka je k ∈ N+ te Rk rekurzivna. Po teoremu o grananju
Neka su k, l ∈ N+ te T k ⪯ Sl = Df k . Tada postoje rekurzivne (parcijalno rekurzivna verzija), f ∶= if{Rk ∶ Ck0 } je parcijalno
funkcije Fk1 , . . . , Fkl takve da je χT = χS ○ (F1 , . . . , Fl ). rekurzivna funkcija, s domenom DCk ∩ Rk = Nk ∩ Rk = Rk .
0
Oznacimo gk ∶= f l ○ (F1 , . . . , Fl ). Kako su sve Fi rekurzivne,
i time totalne, formula za domenu kompozicije daje Zadatak
⃗ ∈ Dg ⇐⇒ x
x k
⃗∈ l
⋂i=1 N
k

l
x))i=1
(Fi (⃗ ∈ Df = S Dokazite: f(⃗x) ∶≃ µy(Sc(y) = χR (⃗x)) je tockovna de nicija od f .
l
⇐⇒ 1 = χS (Fi (⃗
x))i=1 = χT (⃗
x) ⇐⇒ x
⃗∈T Napomena
pa je T = Dg domena parcijalno rekurzivne funkcije g, Obrat ne vrijedi: K ∶= DRussell je rekurzivno prebrojiv
dakle rekurzivno prebrojiva. po de niciji, ali nije rekurzivan.

Restrikcija na rekurzivno prebrojiv skup Presjek konacno mnogo rekurzivno prebrojivih relacija

Propozicija
Lema (o restrikciji) Presjek dvije rekurzivno prebrojive relacije
Restrikcija parcijalno rekurzivne funkcije je rekurzivno prebrojiva relacija.
na rekurzivno prebrojiv skup je parcijalno rekurzivna.
Dokaz.
Dokaz. Neka su S = Df i T rekurzivno prebrojive relacije.
Ako su mjesnosti razlicite, restrikcija je prazna, Tada je S ∩ T = Df ∩ T = Df∣T , sto je domena
pa je parcijalno rekurzivna kao domena prazne funkcije. parcijalno rekurzivne funkcije po lemi o restrikciji.
Inace, oznacimo zajednicku mjesnost s k, i
neka su Fk i Gk parcijalno rekurzivne te Sk = DGk . Korolar
Tada je F∣S = I21 ○ (F, G). Presjek konacno mnogo rekurzivno prebrojivih relacija
takoder je rekurzivno prebrojiva relacija.
Raspisite detalje u gornjem dokazu!
Vrijedi i zatvorenost na (cak rekurzivno prebrojive) unije,
ali za to nam trebaju mocniji alati | poput projekcije ∃∗ .

Projekcijska karakterizacija rekurzivne prebrojivosti Zatvorenost na konacne unije


Teorem Propozicija
Neka je k ∈ N+ te Rk relacija. Tada je R rekurzivno prebrojiva Neka su k, l ∈ N+ te Rk1 , . . . , Rkl rekurzivno prebrojive relacije.
ako i samo ako je R = ∃∗ P za neku (primitivno) rekurzivnu Pk+1 . Tada je i njihova unija ⋃i=1 l
Ri rekurzivno prebrojiva relacija.

Dokaz.
Dokaz.
(⇒) Neka je R = Df k te e neki indeks za f. Po Kleenejevom Za svaki i ∈ [1  l] po projekcijskoj karakterizaciji postoji
teoremu o normalnoj formi, R(⃗x) ⇔ ∃yTk (⃗x, e, y), rekurzivna relacija Pk+1
i takva da je Ri = ∃∗ Pi . Sada vrijedi
a relacija P(⃗x, y) ∶⇔ Tk (⃗x, e, y) je primitivno rekurzivna. l
(⇐) Neka je R = ∃∗ P, gdje je P (primitivno) rekurzivna. x
⃗ ∈ ⋃ Ri ⇐⇒ (∃i ∈ [1  l])(∃y)Pi (⃗
x, y) ⇐⇒
l
i=1
Tada je DµP = ∃∗ P = R, a µP je parcijalno rekurzivna ⇐⇒ (∃y)(∃i ∈ [1  l])Pi (⃗ x, y) ∈ ⋃ Pi),
x, y) ⇐⇒ ∃y((⃗
kao minimizacija (primitivno) rekurzivne relacije. i=1
pa je ⋃i=1
l l
Ri = ∃∗ (⋃i=1 Pi ) projekcija rekurzivne relacije.
Mozemo proucavati djelovanje raznih kvanti katora (∃∗ , ∀∗ ) na
rekurzivne relacije. U tom kontekstu (aritmeticka hijerarhija) Gore smo imali ogranicenu (po i) i neogranicenu (po y)
, Izracunljivost.
projekcije se zovu Σ01 . Detaljnije u: Vukovic  bismo s dvije neogranicene?
egzistencijalnu kvanti kaciju. Sto

Kodiranje parova brojeva Kontrakcija egzistencijalnih kvanti katora

Skup N2 ⊂ N∗ se svakako moze kodirati (funkcijom Code2 ), Lema


ali za osnovne metode dobro je uvesti posebne oznake.
Za svaku relaciju R mjesnosti barem 3 vrijedi ∃∗ ∃∗ R = ∃∗ R̂.
fst(p) ∶= p[0] snd(p) ∶= p[1]
Dokaz.
De nicija Neka je k ∈ N+ , neka je Rk+2 (dakle R̂k+1 ) relacija,
i neka je x⃗ ∈ Nk proizvoljan.
Neka je k ∈ N+ te Rk+1 relacija. Za relaciju R̂ de niranu s
(⊆) Ako je x⃗ ∈ ∃∗ ∃∗ R, to znaci da postoji y takav da je
R̂(⃗ x, fst(y), snd(y))
x, y) ∶⇐⇒ R(⃗ x, y) ∈ ∃∗ R, pa postoji i z takav da vrijedi R(⃗
(⃗ x, y, z). Tada
postoji t ∶= ⟨y, z⟩ takav da vrijedi R̂(⃗x, t), odnosno x⃗ ∈ ∃∗ R̂.
kazemo da je dobivena iz R kontrakcijom zadnja 2 argumenta. (⊇) Ako je x⃗ ∈ ∃∗ R̂, to znaci da postoji t ∈ N takav da vrijedi
x, t), odnosno R(⃗
R̂(⃗ x, fst(t), snd(t)). To pak znaci da
Funkcije fst = $(0, part) i snd = $(1, part)
postoje y ∶= fst(t) i z ∶= snd(t) takvi da vrijedi R(⃗x, y, z),
su (primitivno) rekurzivne, pa je R̂ ⪯ R.
odnosno (⃗x, y) ∈ ∃∗ R, pa onda i x⃗ ∈ ∃∗ ∃∗ R.
Takoder, lako vidimo R(⃗x, y, z) ⇔ R̂(⃗x, ⟨y, z⟩), iz cega R ⪯ R̂.
Zatvorenost na projekciju Grafovi
Propozicija S grafovima smo se vec upoznali kod relacija Step i Tk .
Neka je R rekurzivno prebrojiva relacija mjesnosti barem 2. De nicija
Tada je i njena projekcija S ∶= ∃∗ R rekurzivno prebrojiva.
Neka je k ∈ N+ i fk funkcija. Graf od f je relacija Gk+1
f , zadana s
Dokaz.
Gf (⃗
x, y) ∶⇐⇒ Df (⃗ x) ≃ y.
x) ∧ f(⃗
Uvjet na mjesnost sluzi kako bi projekcija bila de nirana:
[Za totalnu f, ta konjunkcija je ekvivalentna s f(⃗x) = y.]
oznacimo njenu mjesnost s k ∈ N+ . Tada je R mjesnosti k + 1.
Projekcijska karakterizacija kaze da je R = ∃∗ P za neku Kazemo da relacija Rk+1 ima funkcijsko svojstvo
rekurzivnu relaciju Pk+2 . Iz P̂ ⪯ P slijedi da je P̂ takoder ako R(⃗x, y1) i R(⃗x, y2) povlace y1 = y2 .
rekurzivna, te je po prethodnoj lemi S = ∃∗ R = ∃∗ ∃∗ P = ∃∗ P̂,
sto je rekurzivno prebrojivo po projekcijskoj karakterizaciji. Otprije znamo ( vertikalni test") da je relacija
"
graf neke funkcije ako i samo ako ima funkcijsko svojstvo.
Korolar Lema
Neka je k ∈ N+ te Rk+1 rekurzivno prebrojiva relacija. Tada je
Za svaku brojevnu funkciju f vrijedi ∃∗ Gf = Df i µ Gf = f.
i relacija zadana s Q(y) ∶⇔ ∃⃗xk R(⃗x, y), rekurzivno prebrojiva.

Teorem o grafu za totalne funkcije Selekcija | intuitivno

Teorem Kljucni korak u dokazu prethodnog teorema bila je


primjena minimizacije, sto smo mogli jer je graf bio rekurzivan.
Neka je k ∈ N+ te F totalna funkcija.
k

Tada je F rekurzivna ako i samo ako joj je graf GF rekurzivan. Opcenito, minimizacija poluizracunljivog skupa S
nece biti izracunljiva (razmislite!), ali u specijalnom slucaju,
Dokaz. kad S ima funkcijsko svojstvo, zapravo hoce.
To cemo dokazati tako da dokazemo slabiju tvrdnju pod
(⇒) Jer je F totalna, vrijedi GF (⃗x, y) ⇔ F(⃗x) = y, dakle GF ⪯ (=)
opcenitijim uvjetom: dopustamo da ima vise y za koje vrijedi
[χGF (⃗x, y) = χ= (F(⃗x), y)], a jednakost je rekurzivna relacija.
x, y), ali ne zelimo najmanji, nego jednostavno neki takav y.
S(⃗
(⇐) F = µ GF je parcijalno rekurzivna kao minimizacija
Tada, ako je y jedinstven, dobit cemo upravo njega.
rekurzivne relacije, pa je rekurzivna zbog totalnosti.
Tu operaciju" (pod navodnicima jer nije deterministicna)
"
Napomena zovemo selekcija, a (bilo koju) funkciju f koja je obavlja
(preslikava x⃗ u neki y takav da je S(⃗x, y)) zovemo selektor.
Ovdje ne mozemo staviti primitivno" u zagrade!
" Naravno, kao ni minimizacija, ni selekcija nije de nirana
 za detalje.
GA32 je primitivno rekurzivan, ali A2 nije | Vukovic
za one x⃗ koji nisu u projekciji (za koje takav y ne postoji).

Selektor (funkcija izbora) Teorem o selektoru


De nicija Lema
Neka je k ∈ N+ , te Rk+1 relacija i fk funkcija. Za svaku rekurzivno prebrojivu relaciju mjesnosti barem 2
Kazemo da je f selektor za R ako vrijedi Df = ∃∗ R i Gf ⊆ R. postoji parcijalno rekurzivni selektor.

Opcenito, naravno, selektor nije jedinstven | ali za grafove jest. Dokaz.


Propozicija Neka je k ∈ N+ , te Rk+1 rekurzivno prebrojiva relacija (k + 1 ≥ 2).
Po projekcijskoj karakterizaciji, R = ∃∗ P za neku rekurzivnu
Neka je k ∈ N+ , te fk funkcija. Jedini selektor za Gf je upravo f. relaciju Pk+2 . Iz P̂ ⪯ P slijedi da je i P̂ rekurzivna, pa je funkcija
f ∶= fst ○ µP̂ parcijalno rekurzivna. Tvrdimo da je f selektor za R.
Dokaz.
▸ ∃∗ R = ∃∗ ∃∗ P = ∃∗ P̂ = DµP̂ = Dfst ○ µP̂ = Df .
(∃) Znamo Df = ∃∗ Gf , ocito je Gf ⊆ Gf , pa f jest selektor za Gf . ▸ x, y) znaci Df (⃗
Gf (⃗ x) i y = f(⃗ x, t)), dakle
x) = fst(µ t P̂(⃗
(!) Neka je g bilo koji selektor za Gf . Tada Dg = ∃∗ Gf = Df postoji [najmanji] t takav da vrijedi P̂(⃗x, t), te je y = fst(t).
te za svaki x⃗ iz tog skupa vrijedi (⃗x, g(⃗x)) ∈ Gg ⊆ Gf , Uvrstivsi to u de niciju kontrakcije, imamo P(⃗x, y, snd(t)),
sto po de niciji grafa znaci g(⃗x) ≃ f(⃗x). Dakle g = f. pa je (⃗x, y) ∈ ∃∗ P = R. Dakle Gf ⊆ R.

Primjena selektora: univerzalnost Visedretvenost


Relacija M(x, e, y, n) ∶⇔ Step(x, e, n) ∧ result(Reg(x, e, n)) = y Teorem o selektoru ima jednu zanimljivu interpretaciju.
je primitivno rekurzivna kao presjek dvije takve. Ako zamislimo da su nam (dvije) neogranicene kvanti kacije
Njena (rekurzivno prebrojiva) projekcija ∃∗ M je graf nad P ugnijezdene beskonacne petlje (po y i z),
univerzalne funkcije univ(⟨⃗x⟩, e) ∶≃ {e}k (⃗x). univ = fst ○ µM̂ kontrakcija kvanti katora zapravo kaze da ih mozemo
je parcijalno rekurzivna kao (jedini) selektor za vlastiti graf. ispreplesti": izvrsavati tako da svaki par (y, z) dode na red.
Domena joj je halting problem, HALT ∶= Duniv = ∃∗ ∃∗ M. "
Ukratko, imamo izracunljivi dokaz" da je N2 prebrojiv.
Njenim kompiliranjem dobijemo program PU za univerzalni "
RAM-stroj SU , koji u registru R2 dobije RAM-program P, a u Ali to nije sve. Ako detaljnije pogledamo dokaz projekcijske
R1 ulaz x ⃗ za njega, te u R0 vraca rezultat P-izracunavanja s x⃗, karakterizacije, vidjet cemo da petlja po z trazi upravo kod
ako i samo ako to izracunavanje stane (inace ni PU ne stane). izracunavanja cija vrijednost U je χR (⃗x, y): zbog ∃∗ Step = ∃∗ Ť
Transpiliranjem PU dobijemo univerzalni Turingov stroj TU , mozemo zamisliti da racuna inkrementalno korak po korak tog
koji racuna βuniv: na traci dobije •2P7 /•⟨w⟩ (gdje P racuna izracunavanja, dok ne dobije 1 (ili zauvijek ako je rezultat 0).
parcijalno rekurzivnu Nϕ), i vraca •ϕ(w) , ako i samo ako je 
Stovise, zbog prvog odlomka, ti koraci su isprepleteni
w ∈ Dϕ . Za ksnu Σ, lako mozemo postici ( nasarafljujuci" s istim takvim koracima za neke druge y.
"
drugi i cetvrti fragment transpiliranja) da w prima u nativnom Zakljucujemo da selektor paralelno racuna χR (⃗x, y) za sve y,

formatu Σ , a parsiranjem (ip; teze) moze tako primati i T . prekidajuci rad kad/ako nade jedan y takav da je rezultat 1.
Teorem o grafu za parcijalne funkcije Teorem o grananju, rekurzivno prebrojiva verzija
Sada napokon mozemo dokazati pravi" teorem o grafu.
" Teorem
Teorem Neka su k, l ∈ N+ , neka su Gk1 , . . . , Gkl parcijalno rekurzivne
Neka je k ∈ N+ te f funkcija. Tada je f parcijalno rekurzivna
k
funkcije te Rk1 , . . . , Rkl u parovima disjunktne rekurzivno
ako i samo ako joj je graf Gf rekurzivno prebrojiv. prebrojive relacije. Tada je funkcija Fk ∶= if{R1 ∶ G1 , . . . , Rl ∶ Gl }
takoder parcijalno rekurzivna.
Dokaz.
Dokaz.
(⇒) Oznacimo s e neki indeks za f k . Kleenejev teorem kaze:
Za svaki i ∈ [1  l], oznacimo Hi ∶= Gi ∣Ri
Gf (⃗ x, e, z) ∧ U(z) = y),
x, y) ⇐⇒ ∃z (Tk (⃗ | po lemi o restrikciji, to su parcijalno rekurzivne funkcije.
Sada tvrdnja slijedi iz teorema o grafu, jer je (dokazite!)
pa tvrdnja slijedi po projekcijskoj karakterizaciji.
GF = ⋃i=1 GHi ,
l
(⇐) Po teoremu o selektoru Gf ima parcijalno rekurzivni
selektor. No dokazali smo da je jedini selektor za Gf a unija l rekurzivno prebrojivih skupova
upravo f, pa to znaci da je f parcijalno rekurzivna. je opet rekurzivno prebrojiva.

Editiranje (konacna promjena) parcijalnih funkcija O default nim slucajevima u grananju


Zadatak Pogledajmo detaljnije dosadasnje verzije teorema o grananju,
Dokazite: skup rekurzivno prebrojivih relacija zatvoren je na s obzirom na prisutnost rijeci inace" u de niciji funkcije.
"
▸ desne razlike s rekurzivnim relacijama (iste mjesnosti), i Kod (primitivno) rekurzivne verzije, slucaj inace" je obavezan,
"
▸ simetricne razlike s konacnim relacijama (iste mjesnosti). jer bez nje nemamo osiguranu totalnost de nirane funkcije.
Mozemo nekako drugacije osigurati da Ri cine particiju od Nk ,
no to samo znaci da jednu od njih mozemo zamijeniti s inace".
Propozicija "
Kod parcijalno rekurzivne verzije, slucaj inace" je dozvoljen:
Neka je k ∈ N+ , neka je Gk parcijalno rekurzivna funkcija, "
imamo dvije funkcije, F1 i F2 , i obje su parcijalno rekurzivne.
te Fk funkcija dobivena iz G konacnim brojem promjena
Naravno, F2 je specijalni slucaj od F1 , gdje stavimo G0 ∶= ⊗k .
vrijednosti, uklanjanja ili dodavanja tocaka u domenu
(s bilo kojom vrijednoscu). Tada je i F parcijalno rekurzivna. Kod rekurzivno prebrojive verzije, slucaj inace" je zabranjen,
"
jer s njime bismo mogli dobiti da je R̃ ussell = if{K ∶ Russell, Z}
Dokaz. parcijalno rekurzivna, sto smo vidjeli da ne vrijedi.
Direktno iz teorema o grafu, gornjeg zadatka, Opcenito, skup rekurzivno prebrojivih relacija nije zatvoren na
i cinjenice da je di GF △ GG konacan. Raspisite! 
komplementiranje. Stovise, vrijedi . . .

Postov teorem Veza sa slikama


Teorem
Teorem o grafu daje dobru vizualizaciju poluizracunljivih
Neka je k ∈ N+ te Rk relacija. Tada vrijedi:
relacija, barem onih s funkcijskim svojstvom:
R je rekurzivna ako i samo ako su R i R∁ rekurzivno prebrojive.
to su grafovi izracunljivih funkcija.
Dokaz. No ta vizualizacija je beskorisna za jednomjesne relacije
(skupove brojeva), kakve se najcesce proucavaju.
(⇒) Ako je R rekurzivna, dokazali smo da je i R∁ rekurzivna,
Povijesno, rekurzivno prebrojivi skupovi bili su promatrani
a svaka rekurzivna relacija je rekurzivno prebrojiva. kao slike izracunljivih (jednomjesnih) funkcija | otud dolazi
(⇐) Ako su R i Rc rekurzivno prebrojive, tada je po upravo i naziv, jer se radi o skupovima koji se mogu rekurzivno
dokazanom teoremu o grananju, χR = if{R ∶ Ck1 , R∁ ∶ Ck0 } nanizati/nabrojiti (a0 , a1 , a2 , . . . , gdje je n ↦ an rekurzivna).
parcijalno rekurzivna. Ali χR je uvijek totalna funkcija, Uz problem mjesnosti (slike su jednomjesne) imamo probleme
pa je zapravo rekurzivna, dakle R je rekurzivna relacija. totalnosti (∅ ocito nije slika nijedne rekurzivne funkcije), i
injektivnosti (konacne skupove danas ne zovemo prebrojivima).
Korolar Ipak, mnogi rezultati se mogu dokazati.
Skup K∁ nije rekurzivno prebrojiv. (Dokazite!)

Teorem enumeracije Veza s kolegijem Interpretacija programa

Teorem
Neka je S ⊆ N (jednomjesna relacija). Tada je ekvivalentno: Analogno rekurzivnim relacijama odnosno jezicima,
mozemo gledati rekurzivno prebrojive jezike, na tri nacina.
1. S je rekurzivno prebrojiv.
2. S je slika neke parcijalno rekurzivne funkcije. Gledanje na njih kao na domene Turing-izracunljivih funkcija
prirodno vodi na ideju Turingovih prepoznavaca,
3. S je slika neke primitivno rekurzivne funkcije ili S = ∅. dok gledanje na njih kao na slike takvih funkcija
prirodno vodi na ideju Turingovih enumeratora.
Dokaz. ⎧ Na ip ste dokazali da je to dvoje ekvivalentno.
⎪ x, T1 (x, e, t)

(1 ⇒ 3) Iz s ∈ S = D{e}1 slijedi S = IF za F(x, t) ∶= ⎨ . Trece, mozemo de nirati da je jezik L ⊆ Σ∗ rekurzivno prebrojiv
⎩ s, inace


Naime, s ∈ S ∩ IF , a za x ≠ s po Kleenejevom teoremu imamo ako je skup kodova ⟨L⟩ ∶= {⟨w⟩ ∣ w ∈ L} rekurzivno prebrojiv.
x ∈ S = D{e}1 ⇔ ∃t T1 (x, e, t) ⇔ ∃t (F(x, t) = x) ⇔ x ∈ IF . Moze se pokazati da je i ta de nicija ekvivalentna gornjima.
(2 ⇒ 1) If (y) ⇔ ∃⃗x Gf (⃗x, y) je projekcija rekurzivno prebrojivog Gf . ZZ: 7.2, 7.3 (i sve ostalo)
(3 ⇒ 2) Primitivna rekurzivnost povlaci parcijalnu, a ∅1 = I⊗1 .

You might also like