Upoznavanje sa Lambda racunom

89
Upoznavanje s λ raˇ cunom Kultura komunikacije Februar 2014.

description

Kultura komunikacije

Transcript of Upoznavanje sa Lambda racunom

  • Upoznavanje s racunom

    Kultura komunikacije

    Februar 2014.

  • Size

    Ovaj tekst je plod saradnje profesora, asistenta i grupe studenata koji su po-hadali kurs iz predmeta Kultura komunikacije na Odseku za informatiku, Ma-tematickog fakulteta u Beogradu tokom jesenjeg semestra 2013. Svake nedeljeod kraja septembra pa do kraja decembra 2013. je odrzan jedan blok od dvacasa predavanja. Prva i druga nedelja su bile posvecene Halmosevim tekstovima[4] i [3]. Posle tih uvodnih casova sledila su predavanja koja su se odnosila naelementarne pojmove iz teorije kategorija i srodnih oblasti. Svaki polaznik kursaimao je zadatak da prikuplja beleske sa jednog predavanja i da ih pretoci u jedanodeljak ovog teksta. Dogovor je bio da se predavac drzi Halmosevih saveta kakotreba predavati matematiku a da onaj koji sakuplja beleske, organizuje tekst,koliko god je to moguce, po ugledu na Halmoseve sugestije kako treba pisatiknjigu iz matematike.

    Zahvalnica

    Zahvaljujem se profesoru Kosti Dosenu na sugestijama kako da zapocnemo ovajkurs.

    U Beogradu, Zoran [email protected]

    v

  • SADRZAJ

    Size v

    Odeljak 1. Uvod 1

    1.1. O autorima 11.2. Osnovni pojmovi i notacija 2

    Odeljak 2. Smalijanovi zadaci 3

    2.1. Biografija Rejmonda Smalijana 32.2. Kratak istorijat 32.3. Logicki problemi 42.4. Program 122.5. Dogovori o brisanju zagrada 122.6. Kombinator B i njegovi derivati 142.7. Dupliranje i permutovanje 182.8. Asociranje i dupliranje zajedno 202.9. Razlicite baze programa 23

    Odeljak 3. Fiksna tacka 28

    3.1. Kombinatorni programi 283.2. Jos o programu 283.3. Tjuringov program 303.4. Program O 31

    Odeljak 4. Kombinatorna logika 33

    4.1. Cista kombinatorna logika 334.2. Apstrakcija 344.3. Teorema o fiksnoj tacki 36

    Odeljak 5. Iskazna logika i aritmetika 40

    5.1. Iskazna logika 405.2. Aritmetika u kombinatornoj logici 455.3. Rekurzivne funkcije 48

    Odeljak 6. Konfluencija i -racun 51

    6.1. Konfluencija za CL 516.2. -racun 536.3. Konfluencija za -racun 56

    Odeljak 7. Prosti tipovi 58

    7.1. -racun s tipovima 58

    vii

  • viii Sadrzaj

    7.2. CL s tipovima 61

    Odeljak 8. Uvod u Haskel 66

    8.1. Funkcionalno programiranje 668.2. Haskel 668.3. Izvodenje aritmetickih operacija 668.4. Liste 668.5. Funkcije viseg reda 66

    Odeljak 9. Neodlucivost 74

    9.1. Gedelovo kodiranje 749.2. Dokaz neodlucivosti za CL 77

    Bibliografija 81

    Indeks 83

  • 1. Uvod1.1. O autorima

    1

  • 2 ODELjAK 2. SMALIJANOVI ZADACI

    1.2. Osnovni pojmovi i notacija

    prazan skupN skup prirodnih brojeva: {0, 1, 2, . . .}Q skup racionalnih brojeva

    R skup realnih brojeva

    (a, b) ureden par; (a, b) = (c, d) (a = c b = d)AB Dekartov proizvod skupova A i B: {(a, b) | a A, b B}P(X) partitivni skup (skup svih podskupova) od X

    {x1, . . . , xn} konacan skup; xi 6= xj za i 6= j|X| broj elemenata konacnog skupa X

    X X refleksivna (x X)(x, x) X X simetricna (x, y X)((x, y) (y, x) ) X X tranzitivna (x, y, z X)(((x, y) (y, z) ) (x, z) )

    X X rel. ekvivalencije refleksivna, simetricna i tranzitivnaf : X Y je 1-1 (x1, x2 X)(f(x1) = f(x2) x1 = x2)f : X Y je na (y Y )(x X)(y = f(x))

    f : X Y je bijekcija 1-1 i nakombinatori: M Mx = xx

    K Kxy = x

    I Ix = x

    L Lxy = x(yy)

  • 2. Smalijanovi zadaci2.1. Biografija Rejmonda SmalijanaNenad Lazic

    Rejmond Smalijan je Americki matematicar, koncertni pijanista, logicar, filozof

    i madionicar. Roden je 25. maja 1919. u Far Rokveju, Njujork. Sa dvanaest

    godina pokazao je muzicki talenat osvojivsi zlatnu medalju na pijanistickom

    takmicenju. Naredne godine, njegova porodica se preselila na Menhetn i on je

    isao u skolu za muzicke talente ,,Teodor Ruzvelt ali s obzirom da ova skola

    nije nudila slicne kurseve iz matematike on je pohadao jos jednu skolu. Ucio je

    matematiku i muziku. Diplomirao je na Univerzitetu u Cikagu 1955. Objavio

    je 1957. rad u casopisu ,,Journal of Symbolic Logic u kome je dao savremeno

    shvatanje Gedelove teoreme. Doktorirao je na Univerzitetu Prinston 1959.

    2.2. Kratak istorijatLogici su ime dali Grci. Ono potice od grcke reci oo, sto se prevodi kao rec

    a znaci puno toga u vezi sa jezikom, mislju, razumom, naukom. Za hriscane to

    je jedno od Bozijih imena. Logika je smatrana granom filozofije veoma dugo,

    pocevsi od starogrckog filozofa Aristotela pa sve do XX veka kada je naziv

    matematicka logika obuhvatio citavu logiku ali se pridev iz imena matematicka

    logika vremenom gubi i ostaje samo naziv logika. Logika zasnovana na Aris-

    totelovoj izucavana je na zapadnoevropskim univerzitetima u srednjem veku u

    prvom delu studija. Grcke matematicare tada nisu zanimala ucenja tadasnjih

    logicara niti su se sami bavili izucavanjem dedukcije iako su je i oni koristili u

    matematici. Sa tacke gledista savremene logike znacajnije otkrice nego bilo koje

    od Aristotelovih jeste veznik materijalne implikacije Filona iz Megare. Pocetkom

    druge polovine XIX veka, logika dakle prelazi iz filozofije u matematiku po uzoru

    na fiziku koja se od filozofije odvojila u XVII veku.

    Matematicka logika

    Naziv matematicka logika u XX veku obuhvata citavu logiku. Jedan deo ma-

    tematicke logike, koji bi trebalo da bude posebno zanimljiv filozofima ponekad

    se naziva filozofskom logikom. Prelazak logike u matematiku nagovestio je Laj-

    bnic u spisima koji su sve do XX veka ostali neobjavljeni, i zato nisu imali

    mnogo uticaja na razvoj savremene logike. Ono sto je kod Lajbnica najblize

    savremenoj logici je zelja da se prirodni jezik zameni jednim savrseno pre-

    ciznim, matematickim jezikom. U takvom jeziku bi sagovornici koji se spore

    mogli da izracunaju ko je u pravu. Lajbnic, koji je izmislio i jednu masinu za

    racunanje i bavio se binarnim sistemom za brojeve, gde se kao kod danasnjih

    3

  • 4 ODELjAK 2. SMALIJANOVI ZADACI

    racunara sve pise samo sa 0 i 1, u velikoj meri je bio prorok informatickog

    doba. Matematicka logika se sastoji od matematickog proucavanja logike i

    primene ovog proucavnja na druge oblasti matematike. Matematicka logika

    ima bliske veze sa racunarstvom. Medu osnovnim temama koje se provlace

    kroz matematicku logiku su izrazajna moc formalnih logika i deduktivna moc

    dokazivackih sistema. Od svog nastanka, matematicka logika je doprinela i njen

    razvoj je bio motivisan proucavanjem osnova matematike. Ovo proucavanje je

    pocelo krajem XIX veka a pocetkom XX veka ju je oblikovao David Hilbert u

    svom programu za dokazivanje konzistentnosti osnovnih teorija.

    Kombinatorna logika

    Kombinatorna logika je notacija koju su uveli Mozes Senfinkl i Haskel Kari kako

    bi eliminisali potrebu za promenljivim u matematickoj logici. Sada se koristi

    u racunarstvu kao teorijski model izracunljivosti i kao osnova za funkcionalno

    programiranje. Zasnovan je na kombinatornim objektima, koji su funkcije viseg

    reda i koji koriste samo primenu (aplikaciju) funkcije na neku drugu funkciju i

    kao rezultat opet daju funkciju. U racunarstvu, kombinatorna logika se koristi

    kao pojednostavljeni model racunanja, koriscen u teoriji izracunljivosti i teoriji

    dokaza. Kombinatorna logika obuhvata mnoga esencijalna svojstva racunanja.

    Kombinatorna logika se moze shvatiti kao varijanta racuna, u kojoj su izrazi

    (koji predstavljaju funkcijsku apstrakciju) zamenjeni skupom kombinatornih

    objekata, primitivnih funkcija koje nemaju slobodnih promenljivih. Lako je

    transformirati izraz u kombinatorni izraz, i kombinatorna redukcija je mnogo

    jednostavnija od redukcije. Zato je kombinatorna logika koriscena za mod-

    eliranje nekih nestriktnih funkcijskih programskih jezika. Najcesci oblik ovoga

    pogleda jeste programski jezik Unlambda. Iako nije praktican programski jezik,

    Unlambda ima teoretsku vaznost. Kombinatornoj logici moze biti dodeljeno

    mnogo interpretacija. Mnogi raniji radovi Karija su pokazali kako prevesti skup

    aksioma konvencionalne logike u jednakosne kombinatorne logike (videti [5]).

    Dejna Skot je sezdesetih i sedamdesetih godina proslog veka pokazao kako usa-

    glasiti teoriju modela i kombinatornu logiku.

    2.3. Logicki problemiMnogi od Smalijanovih logickih problema su nastavci klasicnih slagalica. U

    ovom tekstu Smalijanove logicke probleme cemo razmatrati nad skupom pro-

    grama. Pretpostavka je da postoji ,,svet programa koji za neki ulaz proizvode

    odgovarajuci izlaz. U tom svetu vaze neka pravila koja cemo definisati pre nego

    sto pocnemo razmatranje problema.

    Komutativnost primene programa ne vazi uvekAko posmatramo programe A i B i ukoliko je program B ulaz za program

  • 2.3. Logicki problemi 5

    A, tada ce program A na izlazu dati rezultat program AB. Program

    AB se dobija kao rezultat primene programa A na program B. Rezultat

    primene programa A na program B (program B je ulaz za program A) i

    programa B na program A (program A je ulaz za program B) ne mora

    da bude isti. Dakle AB ne mora da bude isto sto i BA. Slicno ako bismo

    imali tri programa A, B i C, rezultat primene programa A na BC, gde

    je BC rezultat primene programa B na program C, ne mora da bude isti

    kao rezultat primene programa AB na program C, gde je AB rezultat

    primene programa A na program B. Dakle A(BC) ne mora biti isto sto i

    (AB)C.

    C1 Kompozicija programa

    Pravilo kompozicije kaze da za svaka dva programa A i B postoji program

    C, koji je kompozicija programa A i B, tj. program C je takav da za svako

    x vazi

    A(Bx) = Cx.

    Drugim recima rezultat primene programa C na program x je isti kao i

    rezultat primene programa A na rezultat primene programa B na pro-

    gram x.

    C2 Program rugalica

    Pretpostavka je da postoji program rugalica M koji za ulaz ima program x,

    a kao rezultat svog rada daje program xx, drugim recima daje isti rezultat

    kao kada bi program x imao za ulaz program x. Simbolicki zapisano:

    x Mx = xx

    Drugim recima program M ,,imitira program x sve dok je ulaz u program

    M program x. To znaci da ukoliko pozovemo program x programu M ili

    programu x pozovemo program x u svakom slucaju ce se dobiti isti izlaz.

    Definicija 2.3.1. Program A voli program B kada je rezultat primene

    programa A na program B jednak B.

    AB = B

    Sledi nekoliko zadatak od kojih neki pretpostavljaju da u svetu programa vaze

    uslovi C1 i C2.

    1. Spekulise se da u svetu programa svaki program voli bar jedan program.

    Druga spekulacija je da postoji barem jedan program koji ne voli nijedan

    program. Zanimljivo je da ovaj problem moze da se resi ako uslovi C1 i

  • 6 ODELjAK 2. SMALIJANOVI ZADACI

    C2 vaze.

    Pitanje: Koja od ove dve glasine je istinita?

    Resenje:

    Prva glasina je tacna. Svaki program A voli makar jedan program. Ovo

    dokazujemo na sledeci nacin: Uzmite bilo koji program. Po uslovu C1

    postoji program C koji komponuje program A sa programom rugalicom

    M, zato sto za bilo koji program B postoji program C koji komponuje pro-

    gram A sa programom B. To je takode tacno u slucaju da je B program

    rugalica. Ovo mozemo simbolicki zapisati na sledeci nacin: Cx = A(Mx).

    Posto jednakost vazi za svaki program x mozemo da zamenimo x sa C

    cime dobijamo jednakost A(MC) = CC. Posto je M program rugal-

    ica, to mozemo zameniti MC sa CC u prethodnoj jednakosti i dobijamo

    A(CC) = CC. Ovo znaci da A voli program CC. Dakle ukoliko je C bilo

    koji program koji komponuje program A sa programom M, onda program

    A voli program CC. Takode program A voli MC zato sto je MC isti

    program kao i program CC.

    2. Problem ,,egocentricnosti programa je sledeci: Program x se naziva ego-

    centricnim ako voli samog sebe odnosno ako je rezultat primene programa

    x na samog sebe, bas program x. Simbolicki zapisano: xx = x. Treba

    dokazati da ako vaze uslovi C1 i C2, onda postoji bar jedan program x

    koji je egocentrican.

    Resenje:

    Videli smo da uslovi C1 i C2 ukazuju na to da svaki program voli barem

    jedan program. Ovo znaci da program M voli barem jedan program E.

    Sada pokazujemo da program E mora da bude egocentrican. Program

    ME jednak je programu E jer M voli E ali takode je ME = EE zato sto

    je M program rugalica. Iz ovoga sledi da je EE = E cime smo pokazali

    da je program E egocentrican.

    3. Dva programa A i B su saglasna oko programa x ukoliko su rezultati

    njihove primene na program x isti, to jest Ax = Bx. Program A je sklon

    saglasnosti ukoliko za svaki program B postoji barem jedan program x

    oko koga su programi A i B saglasni. Sada razmatramo sledecu varijantu

    problema 1 u kojoj vazi uslov C1 ali ne i uslov C2. Umesto toga dato je

    da postoji program A koji je sklon saglasnosti. Da li je to dovoljno da se

    garantuje da je svaki program voli barem jedan program?

    Resenje:

    Dato nam je da vazi uslov C1 i postoji program A koji je sklon saglasnosti.

  • 2.3. Logicki problemi 7

    Uzmimo bilo koji program x. Po uslovu C1 postoji program H koji kom-

    ponuje program x sa programom A. Posto je A program sklon saglasnosti,

    A i H su saglasni oko nekog programa y. Pokazacemo da program x mora

    da voli Ay. Posto su A i H saglasni oko y to znaci da je Ay = Hy. Posto

    H komponuje x sa A, vazi Hy = x(Ay). Dakle, Ay = Hy = x(Ay) pa

    onda Ay = x(Ay) ili, sto je isto sto i x(Ay) = Ay. Ovo znaci da x voli

    Ay.

    4. Pitanje o programima sklonim saglasnosti. Pretpostavicemo da vaze uslovi

    iz problema 1 i da su programi A, B i C takvi da C komponuje A sa B

    kao i da je program C sklon saglasnosti. Dokazati da je program A takode

    program sklon saglasnosti.

    Resenje:

    Dato nam je da program C komponuje programe A i B i da je C program

    sklon saglasnosti, vazi i uslov C1. Uzmimo bilo koji program D, moramo

    da pokazemo da su program A i program D saglasni oko nekog programa.

    Posto vazi uslov C1 vazi da postoji program E koji komponuje program

    D sa programom B. Takode C i E su saglasni oko nekog x, posto je

    C program sklon saglasnosti. Znaci da vazi Cx = Ex, Ex = D(Bx) i

    Cx = A(Bx), jer C komponuje A sa B. Dakle, posto je Ex = D(Bx),

    imamo da je A(Bx) = D(Bx) pa su programi A i D saglasni oko Bx. Ovo

    dokazuje da za bilo koji program D postoji program oko koga su A i D

    saglasni, znaci A je program sklon saglasnosti.

    5. Vezba kompozicije. Opet pretpostavimo da uslov C1 vazi. Dokazati da za

    bilo koje programe A, B i C postoji program D takav da

    x Dx = A(B(Cx))

    Resenje:

    Dakle uslov C1 vazi. Uzmimo bilo koje programe A, B i C. Neka je E

    program koji komponuje B sa C, tj. za bilo koji program x vazi Ex =

    B(Cx), pa je i A(Ex) = A(B(Cx)). Koriscenjem uslova C1 opet postoji

    program D koji komponuje program A sa programom E. Ako u jednakosti

    Dx = A(Ex) zamenimo Ex = B(Cx) dobijamo da je Dx = A(B(Cx)).

    6. Kompatibilni programi. Dva programa A i B, bilo isti ili razliciti, se

    nazivaju kompatibilnim ako postoje programi x i y, bilo isti ili razliciti,

    takvi da vazi Ax = y i By = x. Dokazati da ako vaze uslovi C1 i C2, onda

    su bilo koja dva programa A i B kompatibilna.

  • 8 ODELjAK 2. SMALIJANOVI ZADACI

    Resenje:

    Posto vaze uslovi C1 i C2, svaki program voli barem jedan program po

    problemu 1. Uzimamo bilo koje programe A i B. Po uslovu C1 postoji

    program C koji komponuje A sa B. Program C voli neki program, npr.

    program y. Odavde sledi Cy = y i Cy = A(By), zato sto program C

    komponuje programe A i B. Dakle vazi A(By) = y. Ako uzmemo da je

    x = By onda je Ax = y i By = x. Ovo je dokaz da su programi A i B

    kompatibilni.

    Dusica Radojevic

    7. Beznadezni egocentrik. Videli smo ranije da je program B egocentrican

    ako je BB = B. Program B nazivamo beznadeznim egocentrikom ako za

    svaki program x vazi Bx = B. To znaci da kada B primenimo na bilo koji

    program x dobijamo uvek program B. Kazemo da je program A fiksiran

    na programu B ako za bilo koji program x vazi da je Ax = B. To znaci da

    program A za bilo koji ulaz daje program B pa je program A beznadezni

    egocentrik ako je fiksiran na samom sebi.

    Neka je program K takav da za sve programe x i y vazi da je (Kx)y =

    x. Ako u svetu programa postoji program K, onda za svaki pogram x

    program Kx je fiksiran na x. Ako vaze uslovi C1 i C2 i postoji program

    K, dokazati da postoji barem jedan program koji je beznadezni egocentrik.

    Resenje:

    Dati su nam uslovi C1 i C2. Iz toga sledi da svaki program voli bar jedan

    program. Neka je A program koji je voljen od strane programa K, dakle

    KA = A pa za svaki program x vazi da je (KA)x = Ax. Zbog svojstava

    programa K vazi i (KA)x = A pa je Ax = A. Kako za svaki program x

    vazi da je Ax = A, to je A beznadezni egocentrik.

    8. Ako je program K egocentrican onda je beznadezno egocentrican. Dokazati.

    Resenje:

    Ako je program K egocentrican onda program K voli program K. Dokazali

    smo u prethodnom zadatku da svaki program koji je voljen od strane

    programa K mora biti beznadezni egocentrik. Dakle, K je beznadezno

    egocentrican.

    9. Ako postoji program K i za neki program x vazi da je program Kx ego-

    centrican, onda program K voli program x.

    Resenje:

    Pretpostavimo da je program Kx egocentrican. To znaci da je (Kx)(Kx) =

    Kx. Takode (Kx)(Kx) = x, jer za svaki program y, pa i za y = Kx, vazi

  • 2.3. Logicki problemi 9

    da je (Kx)y = x. Iz ovoga vidimo da su programi Kx i x identicni. To

    znaci da program K voli program x.

    10. Generalno, nije tacno da ako su programi Ax i Ay jednaki da su onda

    i programi x i y jednaki. Ipak, ovo je tacno ako pretpostavimo da je

    program A isto sto i program K. Dokazati da ako je program Kx jednak

    programu Ky, onda je program x jednak programu y.

    Resenje:

    Ako postoji program K i jos pretpostavimo da je program Kx jednak

    programu Ky, tada za svaki program z program (Kx)z jednak je programu

    (Ky)z. Kako je (Kx)z = x i (Ky)z = y, to je x = (Kx)z = (Ky)z = y.

    11. Dokazati da ako za proizvoljni program x, program K voli program Kx,

    onda program K voli program x.

    Resenje:

    Pretpostavimo da program K voli program Kx, tj. K(Kx) = Kx. Po

    prethodnom zadatku odavde sledi da je Kx = x, sto zaci da program K

    voli program x.

    12. Zasto je egocentrican program K izuzetno usamljen?

    Resenje:

    Pokazacem da jedini nacin da program K bude egocentrican jeste da bude

    jedini program u svetu programa. Pretpostavimo da je program K egocen-

    trican. Tada je program K beznadezni egocentrik na osnovu problema 8.

    Neka su x i y bilo koji programi u svetu programa. Pokazacemo da je

    program x jednak programu y. S obzirom da je program K beznadezni

    egocentrik, tada je Kx = K i Ky = K, odakle sledi da je Kx = Ky.

    Na osnovu zadatka 10, sledi da je x = y. Za bilo koja dva programa x i

    y iz sveta programa vazi da su medusobno jednaki, pa su zbog toga svi

    programi u svetu programa jednaki programu K koji se po pretpostavci

    nalazi u tom svetu. Iz toga zakljucujemo da je K jedini program u svetu

    programa.

    13. Pretpostavimo da postoji program I (identitet) sa svojstvom da za svaki

    program x vazi Ix = x. Pretpostavimo jos da svaki program voli barem

    jedan program. Da li to znaci da je program I sklon saglasnosti?

    Resenje:

    Da, znaci. Neka je x proizvoljan program i neka je y voljen od strane

    programa x, tj. xy = y. Takode je i Iy = y, pa su I i x saglasni oko

    programa y.

  • 10 ODELjAK 2. SMALIJANOVI ZADACI

    14. Pretpostavimo da postoji program I koji voli svaki program, ali ne znamo

    da li je on sklon saglasnosti ili ne. Pretpostavimo da je svaki par programa

    kompatibilan u smislu definicije iz zadatka 6. Koji od sledecih zakljucaka

    se moze valjano izvesti?

    (a) Svaki program je normalan, tj. voli bar jedan program.

    (b) Program I je sklon saglasnosti.

    Resenje:

    Zakljucak (a): Neka je I program identitet i neka su bilo koja dva pro-

    grama kompatibilna. Neka je B proizvoljan program. Iz toga sto su B i I

    kompatibilni sledi da postoje programi x i y takvi da je Bx = y i Iy = x.

    Kako zbog svojstava programa I vazi Iy = y, to je x = y. Posto je i

    Bx = y, odatle je Bx = x iz cega sledi da program B voli program x.

    Zaklucak(b): Sledi iz zakljucka (a) i zadatka 13.

    Nemanja Ilic

    Neka je program L takav da za sve programe x i y vazi da je (Lx)y = x(yy).

    15. Dokazati da ako postoje programi L i I, onda mora da postoji i program

    M, rugalica.

    Resenje:

    Ako za bilo koji program x uzmemo program I, tada iz Ix = x i (Lx)y =

    x(yy) sledi da je (LI)x = I(xx) = xx. Odavde vidimo da M mozemo da

    definisemo kao LI.

    16. Ako postoji L, treba dokazati da svaki program voli bar jedan program.

    Resenje:

    Ako je A proizvoljan program, treba naci B takav da je AB = B. Znamo

    da vazi

    x (LA)x = A(xx).Uzmimo da je x = LA. Dobijamo da je (LA)(LA) = A((LA)(LA)) sto

    znaci da A voli (LA)(LA), pa za B mozemo uzeti program (LA)(LA).

    17. Pokazati zasto je beznadezno egocentrican L ,,neobicno atraktivan.

    Resenje:

    Hocemo da pokazemo da ako za svaki program x vazi da je Lx = L,

    onda za svaki program y vazi da je yL = L. Ukoliko za x uzmemo L

  • 2.3. Logicki problemi 11

    dobijamo da je LL = L pa je i yL = y(LL). Po osnovnim svojstvima

    programa L imamo da je y(LL) = (Ly)L i jos iz pretpostavke da je L

    beznadezno egocentrican sledi da je Ly = L i LL = L, pa na kraju

    dobijamo yL = y(LL) = (Ly)L = LL = L.

    18. Ako pretpostavimo da je program L razlicit od programa K, onda je

    nemoguce da L voli K, tj. nemoguce je da je LK = K.

    Resenje:

    Pretpostavimo suprotno, tj. da je LK = K. Stoga je (LK)K = KK. Po

    osnovnim svojstvima programa L imamo da je (LK)K = K(KK), pa je

    i KK = K(KK). Po svojstvu leve kancelacije za K (videti problem 10)

    odavde zakljucujemo da je K = KK, pa bi to znacilo da je K egocentrican.

    Pomocu problema 12 bismo onda zakljucili da je K jedini program u svetu

    programa a samim tim je i L = K, sto je suprotno pretpostavci.

    19. Potrebno je dokazati da ako program K voli program L onda i svaki drugi

    program voli program L.

    Pomoc:

    Za bilo koji program x, ako vazi da je Kx = x, onda mozemo da zakljucimo

    da je xx = x, sta vise za svaki program y je xy = x. Ovo se lako pokazuje

    jer je onda xy = (Kx)y = x po pretpostavci da je Kx = x i osnovnom

    svojstvu programa K.

    Resenje:

    Treba dokazati da za svaki program x vazi da je xL = L. Po pomocnom

    tvrdenju imamo da je LL = L, pa je i xL = x(LL). Po osnovnom svojstvu

    programa L imamo da je x(LL) = (Lx)L, pa je znaci xL = (Lx)L. Po

    pomocnom tvrdenju je Lx = L pa zakljucujemo da je xL = LL sto smo

    videli da je jednako L. Dakle, xL = L.

    20. Pretpostavimo da imamo program L u svetu programa. Samo iz ove

    cinjenice mozemo dokazati da je bar jedan program egocentrican.

    Resenje:

    Treba da pokazemo da postoji program N takav da je NN = N . Po

    problemu 16, uz L svaki program voli neki program. Neka LL voli program

    y, tj. (LL)y = y. Iz resenja problema 16 vidimo da y mozemo definisati

    kao (L(LL))(L(LL)). Po osnovnom svojstvu programa L imamo da je

    onda i L(yy) = y. Odavde zakljucujemo da je (L(yy))y = yy a takode

  • je i (L(yy))y = (yy)(yy) sto zajedno daje (yy)(yy) = yy. Znaci da za N

    mozemo uzeti yy, tj. ((L(LL))(L(LL)))((L(LL))(L(LL))).

    2.4. Program Marko Adam

    1. Potraga za mudracem. Pretpostavimo da u svetu programa vaze uslovi C1

    i C2. Takode, pretpostavimo da postoji program A takav da za svako x

    program Ax komponuje x sa M. Treba pokazati da tada postoji program

    koji kada se primeni na proizvoljno x daje onaj program koji x voli. Takav

    program oznacavamo sa i zovemo ga mudrac. Drugim recima vazi

    x(x) = x.

    Resenje:

    Po pretpostavkama Ax je program koji komponuje x sa M, to jest, za sve

    programe z vazi

    Axz = x(Mz) = x(zz).

    Kada umesto z zamenimo Ax dobijamo

    Ax(Ax) = x((Ax)(Ax)),

    sto pokazuje da x voli Ax(Ax), to jest M(Ax). Sada iskoristimo uslov

    C1 i neka je program koji komponuje M sa A. Dakle, za proizvoljno x

    vazi

    x = M(Ax) = x(M(Ax)) = x(x),

    pa je trazeni program.

    Program ima veze s teoremom o fiksnoj tacki (videti odeljak 4.3). Naime,

    on za dati program x trazi njegovu fiksnu tacku.

    2.5. Dogovori o brisanju zagradaMladen Lazic

    1. Izostavljanje zagrada. Zamislimo da za neke programe x, y i z napisemo

    izraz xyz. Bez daljeg objasnjenja on je za nas dvosmislen jer ne mozemo

    znati da li mislimo na (xy)z ili z(yz). Po konvenciji koja vlada u zajednici

    koja se bavi kombinatornom logikom i -racunom, kad napisemo xyz,

    mislimo na (xy)z. Znaci, kad su zagrade izostavljene, smatramo da su

    asocirane ulevo. Ovo je tradicija kombinatorne logike koja, posle malo

    prakse, omogucava da se kompleksni izraz lakse zapise. Kako bismo onda

    protumacili izraz xyzw?

    12

  • 2.5. Dogovori o brisanju zagrada 13

    Resenje:

    Prvo cemo vratiti zagrade na poslednji levi deo, koji je xy, tako da je

    xyzw zapravo (xy)zw, koji ispada da je ((xy)z)w. Zakljucujemo da je

    xyzw jednostavno skracenica za ((xy)z)w.

    Ukoliko se zagrade nalaze na sredini ili kraju izraza, konvencija se primen-

    juje na sledeci nacin:

    (a) x(yz)w = (x(yz))w

    (b) x(yzw) = x((yz)w)

    2. U svakom od sledecih primera, primenjuje se konvencija vracanja zagrada

    ulevo:

    (a) xy(zwy)v = ?

    (b) (xyz)(wvx) = ?

    (c) xy(zwv)(xz) = ?

    (d) xy(zwv)xz = ? Uputstvo: Odgovor je razlicit od (c)!

    (e) x(y(zwv))xz = ?

    (f) Da li je tacno: xyz(AB) = (xyz)(AB) ?

    (g) Pretpostavimo da je A1 = A2. Mozemo li zakljuciti da je BA1 =

    BA2? Mozemo li zakljuciti da je A1B = A2B?

    (h) Pretpostavimo da je xy = z, koji od sledecih slucajeva je tacan?

    i. xyw = zw

    ii. wxy = wz

    Resenje:

    (a) xy(zwy)v = ((xy)((zw)y))v

    (b) (xyz)(wvx) = ((xy)z)((wv)x)

    (c) xy(zwv)(xz) = ((xy)((zw)v))(xz)

    (d) xy(zwv)xz = (((xy)((zw)v))x)z

    (e) x(y(zwv))xz = ((x(y((zw)v)))x)z

    (f) Tacno. Obe strane su ispravne, odnosno iste kao ((xy)z)(AB).

    (g) Oba zakljucka su tacna.

    (h) Pretpostavili smo da je xy = z, sledi:

    i. xyw = zw? Po konvenciji je xyw = (xy)w a (xy)w = zw, pa je

    ovo tacno.

    ii. wxy = wz? Po konvenciji je wxy = (wx)y, pa ne mozemo za-

    kljuciti wxy = wz.

  • 14 ODELjAK 2. SMALIJANOVI ZADACI

    2.6. Kombinator B i njegovi derivatiJana Protic i -Dorde Todorovic

    U ovom poglavlju se upoznajemo s kombinatorom B. Za njega vazi formula

    Bxyz = x(yz),

    sto znaci da B prakticno spaja druga dva programa, pa zatim onda njihov

    rezultat stavlja kao argument prvog.

    1. Zasto je kombinator B vazan? Ako u svetu programa imamo B, onda

    u njemu vazi osnovni zakon kompozicije, tj. pravilo C1 (videti prethodni

    odeljak). Kombinator B nam omogucava da za bilo koja dva programa A

    i B mozemo naci program C takav da za svaki program x vazi

    A(Bx) = Cx.

    Definisimo program C kao BAB. Za bilo koji program x ce vaziti

    Cx = BABx = A(Bx)

    i onda vidimo da BAB komponuje A sa B, sto je i trebalo pokazati.

    2. Pretpostavimo da imamo na raspolaganju kombinatore B i M. Po prethod-

    nom, vazi C1 a druga pretpostavka nam daje C2, pa rezonujuci kao u

    problemu 1 iz prethodnog odeljka dobijamo da svaki program voli neki

    program. Napisati izraz pomocu B, M i x koji opisuje program koji x

    voli.

    Poznato je da ako je y bilo koji program koji komponuje x sa M, onda x

    voli yy. Sada, BxM komponuje x sa M i x mora voleti (BxM)(BxM).

    To proveravamo na slede nacin :

    (BxM)(BxM) = BxM(BxM) = x(M(BxM)) = x((BxM)(BxM)),

    onda je

    (BxM)(BxM) = x((BxM)(BxM))

    sto je isto sto i

    x((BxM)(BxM)) = (BxM)(BxM),

    sto znaci da x voli (BxM)(BxM). Izraz (BxM)(BxM) mozemo krace

    zapisati i kao M(BxM). Tako da zakljucujemo da x voli M(BxM).

  • 2.6. Kombinator B i njegovi derivati 15

    3. Ako imamo na raspolaganju kombinator B i rugalicu M mozemo zapisati

    izraz za egocentrika.

    Kao sto znamo za svako x vazi da x voli M(BxM), ako uzmemo da je x

    program M, onda M voli M(BMM). To jest, M(BMM) nam je kandidat

    za egocentrican program.

    M(BMM) = (BMM)(BMM) = BMM(BMM) = M(M(BMM))

    sto je onda jednako (M(BMM))(M(BMM)), pa iz toga zakljucujemo da

    je M(BMM) egocentrik.

    4. Ako imamo kombinator B, rugalicu M i kancelator K, napisati izraz

    pomocu B, M i K za beznadezno egocentrican program.

    Posto za bilo koji program x, x voli M(BxM), sto zakljucujemo iz prob-

    lema 2, onda kancelator K voli M(BKM). Uz pomocni dokaz koji smo

    dali za problem 19 iz prethodnog odeljka, dobijamo da je M(BKM) bez-

    nadezno egocentrican zbog toga sto svaki program koji kancelator K voli

    mora biti beznadezni egocentrik.

    Zaboravicemo nakratko sve ostale kombinatore i fokusirati se samo na kombi-

    nator B. Samo od ovog jednog kombinatora mozemo izvesti mnoge druge, koje

    nazivamo njegovim derivatima. Nisu svi oni od velikog znacaja, ali neke od njih

    cemo koristiti s vremena na vreme.

    5. Jedan od veoma vaznih derivata kombinatora B je D takav da za bilo koje

    programe x, y, z, w, vazi sledece :

    Dxyzw = xy(zw).

    Kombinator D se moze dobiti iz kombinatora B na sledeci nacin. Krecemo

    od onoga sto treba da dobijemo:

    Dxyzw = xy(zw)

    Prema pravilu vracanja izostavljenih zagrada to je isto sto i

    Dxyzw = (xy)(zw).

    Ako sada (xy) posmatramo kao A, tj.

    (xy)(zw) = A(zw) = BAzw

    i kada vratimo (xy) umesto A, dobijamo

    BAzw = B(xy)zw = BBxyzw.

    Dakle, D mozemo definisati kao BB.

  • 16 ODELjAK 2. SMALIJANOVI ZADACI

    6. Definisimo pomocu B kombinator B1 takav da za bilo koje programe x,

    y, z i w vazi sledeci uslov:

    B1xyzw = x(yzw).

    Posto smo vec nasli derivat D od B, sada mozemo slobodno da ga koris-

    timo. Drugim recima svako D mozemo u resenju zameniti sa BB i dobiti

    resenje koristeci samo B. Krenucemo sa resavanjem problema unazad

    x(yzw) = x((yz)w) = Bx(yz)w.

    Prepoznajemo da je Bx(yz) isto sto i DBxyz i onda je

    Bx(yz)w = DBxyzw.

    Odavde imamo da je

    x(yzw) = DBxyzw

    ili zbog simetrije jednakosti

    DBxyzw = x(yzw).

    Dakle, B1 mozemo definisati kao DB. Koristeci samo B, imamo da je

    B1 = BBB.

    7. Iz gornjih derivata kombinatora B mozemo dobiti kombinator E takav da

    za bilo koje programe x, y, z, w, v, vazi

    Exyzwv = xy(zwv).

    Kao i malopre, E se moze dobiti samo pomocu B, ali nam je lakse kada

    koristimo i prethodno definisane derivate od B. Konkretno, sad cemo ko-

    ristiti kombinator B1, iz prethodnog zadatka.

    Ponovo cemo problem resavati unatrag.

    xy(zwv) = (xy)(zwv) = B1(xy)zwv.

    Primecujemo da je

    B1(xy) = BB1xy,

    sto znaci da je

    B1(xy)zwv = BB1xyzwv.

    Znaci da E mozemo da definisemo kao BB1 = B(BBB).

  • 2.6. Kombinator B i njegovi derivati 17

    8. Definisimo derivat B2, koji zadovoljava sledeci uslov:

    B2xyzwv = x(yzwv).

    Pocevsi iz pocetka koristeci samo B dobijanje B2 se moze dosta zakomp-

    likovati, ali koristeci E iz prethodnog zadatka vrlo je lako:

    x(yzwv) = x((yzw)v) = Bx(yzw)v = EBxyzwv.

    Znaci B2 mozemo definisati kao EB ili koristeci samo B kao B(BBB)B.

    9. Definisimo derivat D1 koji zadovoljava sledeci uslov:

    D1xyzwv = xyz(wv).

    Sada koristimo derivat D.

    xyz(wv) = (xy)z(wv) = D(xy)zwv

    Primetimo da je

    D(xy) = BDxy,

    pa je onda

    D(xy)zwv = BDxyzwv,

    Znaci D1 mozemo definisati kao BD, odnosno samo pomocu B kao B(BB).

    10. Definisimo derivat B3, koji zadovoljava sledeci uslov:

    B3xyzw = x(y(zw)).

    Koristimo derivat D1 iz prethodnog problema. Gledajuci na (zw) kao na

    zasebnu jedinicu imamo

    x(y(zw)) = Bxy(zw) = D1Bxyzw.

    Znaci B3 mozemo definisati kao D1B, odnosno samo pomocu B kao

    B(BB)B.

    11. Definisimo derivat D2 koji zadovoljava sledeci uslov:

    D2xyzwv = x(yz)(wv).

    Gledajuci na (yz) kao zasebnu jedinicu imamo

    x(yz)(wv) = Dx(yz)wv = DDxyzwv.

    Znaci D2 mozemo definisati kao DD, odnosno samo pomocu B kao BB(BB).

  • 18 ODELjAK 2. SMALIJANOVI ZADACI

    S obzirom da smo pomocu kombinatora B dobili sedam novih kombinatora,

    vidimo da je njegova uloga u kombinatornoj logici velika. Mogli smo ih dobiti i

    vise, ali je ovo sasvim dovoljno da shvatimo njegov znacaj. Svi ovi kombinatori,

    ukljucujuci i B spadaju u grupu kompozitora. Oni sluze da uvedu zagrade.

    Jedina dva koja treba zapamtiti su kombinator B i njegov derivat D, oni se

    cesto koriste u kombinatornoj logici.

    2.7. Dupliranje i permutovanjeRelja Paunovic i Pavle Stepanic

    Sada uvodimo program W koji je izuzetno bitan u kombinatornoj logici. Defi-

    nisan je kao:

    Wxy = xyy.

    Ovaj program ne treba mesati s programom L koji je definisan kao:

    Lxy = x(yy).

    Ta dva programa imaju potpuno razlicitu ulogu! Sada cemo se baviti nekim

    osobinama programa W.

    1. Pokazati da se program M moze dobiti samo koriscenjem programa I i W.

    Resenje:

    Vidi se da je WI program rugalica zato sto vazi: WIx = Ixx = xx, za

    bilo koji program x.

    2. Pokazati da se program I moze dobiti samo koriscenjem programa K i W.

    Resenje:

    Program WK je program identitet posto vazi: WKx = Kxx = x, za

    svaki program x.

    3. Pokazati da ako postoji W i K mora postojati i M.

    Resenje:

    Koriscenjem znanja stecenog u prethodna dva zadatka program W(WK)

    je rugalica. Hajde da to i proverimo: W(WK)x = WKxx = (WKx)x =

    (Kxx)x = xx. Ovo vazi za bilo koje x.

    Sledeci na redu su programi C, T, R, F i V. Oni spadaju u grupu permu-

    tujucih programa. Definisani su na sledeci nacin:

    Cxyz = xzy

    Txy = yx

    Rxyz = yzx

  • 2.7. Dupliranje i permutovanje 19

    Fxyz = zyx

    Vxyz = zxy

    Sada cemo se pozabaviti problemima vezanim za ove programe.

    4. Pokazati da ako postoje C i K postoji i I.

    Resenje:

    Pokazacemo da je za proizvoljan program A, program CKA program iden-

    titet. To je zato sto za proizvoljno x vazi CKAx = KxA = x. Ako

    hocemo da budemo konkretni, mozemo A da zamenimo sa C ili K. Dakle,

    I mozemo da definisemo kao CKC ili kao CKK.

    5. Ako postoje C i I pokazati da se od njih moze dobiti program T.

    Resenje:

    Program CI je T zato sto za bilo koja dva programa x i y vazi, CIxy =

    Iyx = yx.

    6. Za dva programa x i y se kaze da komutiraju ako vazi xy = yx. Pokazati da

    ako postoji T i ako svaki program voli neki program, onda mora postojati

    bar jedan program A koji komutira sa svim programima.

    Resenje:

    Iz teksta zadatka zakljucujemo da program T voli neki program. Neka je

    to program A (TA = A). Odatle vidimo da za bilo koji program x vazi,

    TAx = Ax. Takode, iz definicije programa T, vazi TAx = xA, pa za

    svako x vazi Ax = xA.

    7. Pokazati da je R derivat B i T.

    Resenje:

    Ovaj problem resicemo unazad: yzx = Tx(yz). Znamo da je Tx(yz) =

    BBTxyz, odakle zakljucujemo da je R = BBT.

    8. Koriscenjem samo programa R mozemo dobiti C, kako?

    Resenje:

    Ovaj problem takode resavamo unazad. Zelimo da xzy vratimo u poziciju

    xyz. Primenjivanjemo R vise puta i dobijamo xzy = Ryxz = RxRyz =

    RRRxyz, iz cega zakljucujemo da je C = RRR.

    9. (a) Pokazati da je Cx = RxR.

    Resenje:

    Cx = RRRx = RxR.

  • 20 ODELjAK 2. SMALIJANOVI ZADACI

    (b) Pokazati da je Cx = B(Tx)R.

    Resenje:

    Posto je Cx = RxR i R = BBT, onda je Cx = BBTxR =

    B(Tx)R.

    10. Pokazati da se F moze dobiti kao derivat B, R i C a takode i samo pomocu

    B i R.

    Resenje:

    Problem cemo resiti unazad: zyx = Rxzy = (Rx)zy = C(Rx)yz =

    BCRxyz, pa mozemo da definisemo F kao BCR. Za drugi deo zadatka

    iskoristimo zadatak 8.

    11. Pokazati da se F moze dobiti koriscenjem samo T i E

    Resenje:

    Problem resavamo unazad: zyx = Tx(zy) = Tx(Tyz) = ETxTyz =

    (ETx)Tyz = TT(ETx)yz = ETTETxyz, pa F mozemo definisati kao

    ETTET.

    12. Pokazati da se V moze dobiti kao derivat C i F.

    Resenje:

    Problem resavamo unazad: zxy = Fyxz = CFxyz. Iz ovoga se vidi da se

    V moze definisati kao CF.

    2.8. Asociranje i dupliranje zajednoIva Milic i Anda Lilic

    Sada se okrecemo novoj interesantnoj familiji programa koji nam omogucuju da

    ujedno i stavljamo u zagradu i permutujemo redosled programa. Videcemo da

    se svi mogu prikazati preko programa B i T.

    1. Program Q, sa kojim se sada srecemo, je najbitniji i on ce kasnije definisati

    neke nove programe iz ove familije. On zadovoljava sledeci uslov:

    Qxyz = y(xz).

    Kao sto mozemo primetiti Q prouzrokuje i permutovanje, tj. zamenu re-

    dosleda x i y, i stavljanje u zagradu. Za razliku od kombinatora B kod

    koga je Bxy kompozicija x sa y, ovde je Qxy kompozicija y sa x.

    Kombinator Q mozemo prikazati preko kombinatora B i kombinatora C

    na sledeci nacin:

    y(xz) = Byxz = CBxyz,

  • 2.8. Asociranje i dupliranje zajedno 21

    tako da ga mozemo definisati kao Q = CB. Ako bismo ga prikazali samo

    preko kombinatora B i T, tada bi bilo

    Q = CB = RRRB = RBR = BBTBR = B(TB)R = B(TB)(BBT).

    2. Sledeci program je jedan od bitnijih iz ove familije. Obelezava se sa Q1 a

    zadovoljava sledeci uslov:

    Q1xyz = x(zy).

    Program Q1 je takode derivat od B i T, i to mozemo pokazati kao:

    x(zy) = Bxzy = CBxyz = BCBxyz.

    Dakle, Q1 mozemo da definisemo kao BCB.

    3. Program Q2 je jos jedan iz ove familije. On zadovoljava sledeci uslov:

    Q2xyz = y(zx).

    Mozemo napisati da je

    y(zx) = Byzx = RBxyz,

    odatle sledi da je

    Q2 = RB = BC(BC)B = C(BCB).

    4. Pretpostavimo da u svetu programa imamo kombinator C, ali nemamo

    kombinatore B i T. Pokazimo da ukoliko postoji kombinator Q1 onda

    postoji i Q2 i obrnuto.

    Resenje:

    Ako pretpostavimo da u svetu postoji kombinator C i:

    (a) ako postoji kombinator Q1, tada CQ1 radi isto sto i kombinator Q2:

    CQ1xyz = Q1yxz = y(zx).

    (b) ako postoji kombinator Q2, tada CQ2 radi isto sto i kombinator Q1:

    CQ2xyz = Q2yxz = x(zy).

  • 22 ODELjAK 2. SMALIJANOVI ZADACI

    5. Kombinator Q3 je sledeci iz ove familije. On zadovoljava sledeci uslov:

    Q3xyz = z(xy).

    Lako je pokazati da je Q3 derivat kombinatora B i T

    z(xy) = T(xy)z = BTxyz.

    Dakle, mozemo ga definisati kao BT, ali ako iskoristimo:

    z(xy) = Bzxy = VBxyz,

    onda ga mozemo definisati i kao VB.

    6. Kombinator Q4 je poslednji iz ove familije kojeg cemo spomenuti. On

    zadovoljava sledeci uslov:

    Q4xyz = z(yx).

    Ukoliko hocemo da ga dobijem kao derivat kombinatora B i T iskoristicemo:

    z(yx) = Bzyx = FBxyz,

    pa ga mozemo definisati kao FB.

    7. Ukoliko u svetu programa postoji kombinator C, tada ne mozemo imati

    kombinator Q3 ako nemamo kombinatora Q4 i obrnuto.

    Resenje:

    Ako pretpostavimo da kombinator C postoji i:

    (a) ako je kombinator Q3 postoji, tada CQ3 ima svojstva kobinatora Q4:

    CQ3xyz = Q3yxz = z(yx).

    (b) ako je kombinator Q4 postoji, tada CQ4 ima svojstva kobinatora Q3:

    CQ4xyz = Q4yxz = z(xy).

    8. Da li se kombinator Q4 moze zapisati pomocu kombinatora Q1 i T?

    Resenje:

    Da, moguce je jer imamo

    Q1Txyz = T(yx)z = z(yx).

    Dakle, Q4 mozemo zapisati kao Q1T.

  • 9. Kombinator B se moze zapisati pomocu kombinatora Q i T.

    Resenje:

    x(yz) = Qyxz = Tx(Qy)z = QQ(Tx)yz = QT(QQ)xyz,

    pa se B moze zapisati kao QT(QQ).

    10. Na slican nacin mozemo izvesti da je kombinator C derivat kombinatora

    Q i T.

    Resenje:

    xzy = (xz)y = Ty(xz) = Qx(Ty)z = QT(Qx)yz = QQ(QT)xyz,

    odakle je

    C = QQ(QT).

    11. Pokazati da je kombinator G koji zadovoljava sledeci uslov:

    Gxyzw = xw(yz),

    jos jedan derivat kombinatora B i C.

    Resenje:

    xw(yz) = Cx(yz)w = B(Cx)yzw = BBCxyzw,

    odakle je jasno da je G moguce definisati kao BBC.

    2.9. Razlicite baze programaMilos Mitrovic

    Znamo da se ni program M, kao ni bilo koji duplikativni program, ne moze

    dobiti uz pomoc programa B i T, tacnije programi B, T i M su nezavisni.

    Hocemo da pokazemo da uz pomoc baze B, T, M mozemo izraziti razne druge,

    bitne programe.

    1. Dokazati da se program L moze izraziti uz pomoc programa B, C i M.

    Resenje:

    Ako krenemo postupkom unazad, odnosno od Lxy = x(yy), mozemo da

    primetimo da je x(yy) = x(Mx), a zatim x(Mx) = BxMy i konacno

    BxMy = CBMxy. Odavde vidimo da je L = CBM.

    23

  • 24 ODELjAK 2. SMALIJANOVI ZADACI

    Dokazati da se program L moze izraziti uz pomoc programa B, R i M.

    Resenje:

    Istim postupkom i koristeci dokazanu jednakost x(yy) = BxMy, mozemo

    da primetimo BxMy = RMBxy. Time smo dokazali da je L = RMB.

    Dokazati da se program L moze izraziti uz pomoc programa B, T i M.

    Resenje:

    Koristeci jednakost R = BBT na osnovu prethodnog primera vidimo da

    je L = BBTMB, odnosno, ako primenimo prvi operator B, dobijamo

    L = B(TM)B.

    2. Dokazati da ako postoje programi B i W, mora postojati i program L.

    Resenje:

    Postupkom unazad polazimo od x(yy). Mozemo da primetimo da je

    x(yy) = Bxyy, zatim da je Bxyy = W(Bx)y, i konacno W(Bx)y =

    BWBxy. Ovim smo dokazali da je L = BWB.

    3. Dokazati da ako postoje programi M i Q, mora postojati i program L.

    Resenje:

    Istim postupkom, polazimo od x(yy). Vec znamo da je x(yy) = x(My)

    a mozemo da primetimo da je x(My) = QMx. Odavde vidimo da je

    L = QM.

    4. Pokazati se program W moze izraziti preko baze B, T i M. U dokazuse moze koristiti pomocni program M2xy = xy(xy), za koji se zna da je

    M2 = BM.

    Resenje:

    Lakse nam je da dokazemo da se W moze izraziti preko baze R, M i B, azatim koristeci R = BBT, lako prelazimo na bazu B, M i T. Postupkom

    unazad polazimo od Wxy = yxx. Mozemo da primetimo da je yxx =Rxyx. Posmatrajuci Rx kao jedan argument mozemo da zakljucimo da

    je (Rx)yx = RxRxy a na osnovu definicije M2 mozemo da vidimo da je

    RxRxy = M2Rxy. Kada zamenimo M2 dobijamo W = BMR, odnosno

    kada zamenimo R dobijamo W = BM(BBT).

    5. Dokazati da se uz pomoc programa R, M, B i C moze izraziti program W.

  • 2.9. Razlicite baze programa 25

    Resenje:

    Postupkom unazad polazimo od Wxy = xyy. Koristeci pomocni program

    W, mozemo da primetimo da je xyy = Wyx, a zatim da je Wyx =CWxy. Odavde vidimo da je W = CW, odnosno na osnovu prethodnogprimera W = C(BMR).

    6. Dokazati da se program W moze izraziti uz pomoc baze B, T i M.

    Resenje:

    Iz prethodnog primera smo videli da je W = CW. Koristeci jednakostCx = B(Tx)R kada x zamenimo sa W dobijamo Cx = B(TW)R. Izprethodnih primera znamo da je W = BM(BBT) i da je R = BBT,tako da zakljucujemo W = B(T(BM(BBT)))(BBT).

    7. Dokazati da se program M moze izraziti uz pomoc baze B, T i W.

    Resenje:

    Postupkom unazad polazimo od M = xx. Mozemo da primetimo da

    je xx = Txx, a zatim da je Txx = WTx. Ovim smo dokazali da je

    M = WT.

    Na osnovu ovoga mozemo da zakljucimo da se klase programa koje se

    mogu dobiti uz pomoc baze B, T i W i baze B, T i M poklapaju.

    Bojana Simic

    Kako bismo lakse resavali zadatke koristicemo programe W i W. Oni imajuistu funkciju kao i W, da udvostruce krajnji argument. Jedina razlika je u tome

    sto imaju vise argumenata. Za W vazi Wxyz = xyzz, a Wxyzw = xyzww.Neka je program H takav da za sve programe x, y i z vazi da je Hxyz = xyzy.

    8. Dokazati da se program H moze izraziti uz pomoc programa B, W i C.

    Resenje:

    Za pocetak krenucemo od xyzy. Primetimo da je bas xyzy = Cxyyz(podsetnik: C radi tako sto menja mesta poslednja dva argumenta a C

    ima istu funkciju samo sto koristi cetiri argumenta). Kako bismo ud-

    vostrucili y, koristicemo W i njim delovati na prva tri argumenta. Znaci,Cxyyz = WCxyz. Od ranije znamo da je W = BW i C = BC, pacemo to primeniti u nasem dokazu. Dakle, H = BW(BC).

    9. Treba pokazati da se W moze izraziti pomocu baze H, C, odnosno pomocu

    baze H, R.

  • 26 ODELjAK 2. SMALIJANOVI ZADACI

    Resenje:

    Kako bismo ovo lakse pokazali, koristicemo Wxy = yxx. Postupkomunazad yxx = Rxyx = HRxy, pa je W = HR. Kako je W = CW,dobijamo da je W = C(HR). Slicno, W = RWR, tako da je W =R(HR)R.

    Od sad pa nadalje, pored vec poznatih programa, koristicemo i novi pro-

    gram S. Program S je takav da za x, y i z vazi da je Sxyz = xz(yz).

    10. Treba dokazati da S mozemo izraziti pomocu baze B, M, T kao i pomocu

    baze B, C, W.

    Resenje:

    Dokaz da se S moze dobiti pomocu ovih baza je jako slozen i zahteva

    upotrebu sedam slova. Pokazacemo ovo za bazu B, C, W koristeci sest

    slova pomocu programa G. Dakle, krecemo od xzyz i pomocu G dobijamo

    da je xzyz = Gxyzz. Primetimo da je z udvostruceno, pa treba primeniti

    W. Imamo cetiri argumenta G, x, y, z pa koristimo W i dobijamo daje Gxyzz = WGxyz. Kako je W = B(BW) i G = BBC, dobijamoda je S = B(BW)(BBC).

    11. Treba pokazati da pomocu S i R mozemo dobiti H.

    Resenje:

    Kako je Hxyz = xyzy, pocinjemo sa xyzy = (xy)zy = Ry(xy)z. Prime-

    timo da je y na drugom i cetvrtom mestu, sto nam govori da Ry(xy)

    mozemo dobiti primenom S na sledeci nacin Ry(xy) = SRxy. Time smo

    pokazali da je H = SR.

    12. Pokazati da pomocu S i R odnosno pomocu S i C mozemo izraziti W.

    Resenje:

    Pokazali smo da je W = R(HR)R i u prethodnom zadatku H = SR.

    Zamenom H dobijamo W = R(SRR)R. Ovim smo pokazali da W moze

    da se izrazi pomocu S i R.

    Da bismo pokazali da se W moze dobiti pomocu S i C koristicemo da

    je W = C(HR), sto smo ranije pokazali. Prvo cemo zameniti H, cime

    dobijamo W = C(SRR). Kako je R = CC, zamenom u prethodnom

    izrazu dobijamo C(SRR) = C(S(CC)(CC)).

    13. Pokazali smo da je W izraziv pomocu S i C, a C je izraziv pomocu B i T.

  • right-head 27

    Dakle, W je izraziv pomocu B, T i S. Pokazati da B tu nije neophodan,

    to jest da se W moze izraziti pomocu T i S.

    Resenje:

    Dokaz da se W moze izraziti pomocu B, T i S mozemo dobiti kada u W =

    C(S(CC)(CC)), zamenimo C sa B(T(BBT))(BBT). Ovim dobijamo

    izraz od cetrdeset jednog slova.

    Neocekivano, pokazacemo da se W moze izraziti pomocu samo T i S na

    jednostavniji nacin. Kako je Wxy = xyy krenucemo od xyy. Pomocu T

    imamo da je xyy = Ty(xy) a pomocu S imamo da je Ty(xy) = STxy.

    Dakle, mozemo uzeti da je W = ST.

    14. Imamo T i S, treba pokazati da M mozemo izvesti pomocu njih.

    Resenje:

    Ranije smo pokazali da je M = WT, a u prethodnom zadatku smo dobili

    da je W = ST, zamenom dobijamo da je M = STT.

  • 3. Fiksna tacka3.1. Kombinatorni programiNemanja Subotic

    Pre no sto se osvrnemo na mudre programe, recicemo nesto o kombinatornim

    programima uopste. Pod programom reda 1 podrazumevamo program A takav

    da se za svaki program x, program Ax moze izraziti samo preko programa x.

    Na primer, program M je reda 1 posto je Mx = xx. Drugi primer je program

    I, posto je Ix = x. Programi M i I su jedini programi reda 1 koje smo do sada

    radili.

    Naravno, mogli bismo izgraditi od programa koje smo do sada radili mnogo

    programa reda 1. Na primer, ako bismo hteli da napravimo program A takav

    da je Ax = x(xx), onda bi to bio program WL. Takode, mozemo napraviti

    program A takav da je Ax = (x(xx))((xxx)x) i on bi takodje bio reda 1.

    Pod programom reda 2 podrazumevamo program A takav da se Axy moze

    izraziti samo preko programa x i y. Primeri program drugog reda su W, T i L.

    Program reda 3 je program A cija definicija ukljucuje tri promenjivex, y i

    z. Tako da se program Axyz moze izraziti samo preko programa x, y i z. Vecina

    programa koje smo do sada radili su reda 3, na primer programi B, C, R, F,

    V i Q. Na slican nacin definisemo programe reda 4, 5, 6, 7, 8 i tako dalje.

    Program koji ima neki red naziva se pravi kombinatorni program ili krace,

    pravi kombinator. Pod kombinatornim programom ili samo kombinatorom po-

    drazumeva se program koji se moze izraziti preko pravih kombinatora. Nije

    svaki kombinatorni program pravi kombinator. Na primer programi T i I su

    pravi kombinatori, stoga je TI je kombinator, ali nije pravi. Ako bi bio pravi,

    kog reda bi bio? Nije reda 1, jer TIx mozemo svesti na xI, ali ne mozemo dalje.

    Program TIxy mozemo izraziti kao xIy, ali se nismo oslobodili prisustva I, tako

    da TI nije reda 2. Najbolje sto mozemo uciniti s TIxyz je da ga izrazimo kao

    xIyz. Dakle, bez obzira koliko promenljivih dodajemo zdesna uz TI, nikako se

    ne mozemo otarasiti I, pa program TI nije nijednog reda. Sledi da to nije pravi

    kombinator. S druge strane, program IT jeste pravi kombinator jer je IT = T,

    pa je on drugog reda kao i kombinator T.

    3.2. Jos o programu O programu smo govorili u odeljku 2.4. On je takav da za bilo koji program

    x, ako x primenimo na x dobijamo x. Znaci da on pronalazi program

    koji x voli. Programi nije pravi kombinator! Medutim, on se na razlicite

    nacine moze izraziti pomocu pravih kombinatora. U odeljku 2.4 nismo napravili

    program , vec smo samo pokazali da pod odredenim uslovima on mora da

    28

  • 3.2. Jos o programu 29

    postoji. Sada cemo videti kako ga mozemo definisati u odnosu na razlicite baze

    pravih kombinatora.

    1. Izvesti program pomocu programa B, M i R.

    Resenje:

    U resenju zadatka iz odeljka 2.4 smo videli da ako je program y kompozicija

    programa x i M, onda program x voli yy. Posto je BxM kompozicija x sa

    M, jer je BxMy = x(My), to znamo da x voli BxM(BxM), odnosno x

    voli M(BxM). Dakle, ako nademo tako da je x = M(BxM), zadatak

    je resen.

    Posto je

    M(BxM) = M(RMBx) = BM(RMB)x,

    to za mozemo uzeti BM(RMB).

    2. Mozete li pronaci jednostavnu definiciju programa pomocu programa

    B,M i L?

    Resenje:

    U sesnaestom zadatku iz odeljka 2.3 smo pokazali da za svako x vazi da x

    voli Lx(Lx). Posto je

    Lx(Lx) = M(Lx) = BMLx,

    to se moze definisati kao BML.

    3. Pokazati da se program moze izvesti pomocu programa Q, W i L.

    Resenje:

    Opet koristimo cinjenicu da x voli Lx(Lx). Sada imamo

    Lx(Lx) = QL(Lx)x = QL(QL)xx = W(QL(QL))x,

    pa mozemo definisati kao W(QL(QL)).

    4. Posebno uredna konstrukcija programa koristi samo programe Q i M.

    Diskusija: Pod regularnim kombinatorom podrazumevamo pravi kombi-

    nator takav da, po svojoj definiciji, najlevlja promenljiva, recimo x, na

    levoj strani jednakosti je takode najlevlja na desnoj strani, i pojavljuje

    se samo jednom na desnoj strani. Na primer, program C je regularan;

    Cxyz = xyz, i x je najlevlja promenljiva i javlja se samo jednom u izrazu

    xyz. S druge strane, program R nije regularan; Rxyz = yzx, i x nije

    najlevlja promenljiva izraza yzx. Takode M nije regularan, zato sto se

    x pojavljuje dvaput u xx. Kombinatori B, C, W, L, S, I i K su svi

    regularni; kombinatori T, R, F, V, i Q nisu.

  • 30 ODELjAK 3. FIKSNA TACKA

    Resenje:

    Koristimo cinjenicu da x voli Lx(Lx), i zato x voli M(Lx). Sada imamo

    da je

    M(Lx) = QLMx,

    pa x voli QLMx, sto znaci da mozemo definisati kao QLM. Po trecem

    zadatku iz odeljka 2.9 imamo da se L moze definisati kao QM pa dobijamo

    izraz Q(QM)M koji definise kombinator .

    5. Pokazati da program moze biti izveden iz programa S i L.

    Resenje:

    Posto je Lx(Lx) = SLLx, to mozemo definisati kao SLL.

    6. Pokazati da program moze biti izveden iz programa B, W i S.

    Resenje:

    Pokazali smo da SLL definise program . Takode vazi SLL = WSL,

    pa i WSL definise . Po drugom zadatku iz odeljka 2.9 imamo da se L

    moze definisati kao BWB, odakle dobijamo da se moze definisati kao

    WS(BWB).

    3.3. Tjuringov programNikola Gujanicic

    Uvodimo novi program U koji cemo zvati Tjuringov program i koji za sve pro-

    grame x i y zadovoljava

    Uxy = y(xxy).

    7. Dokazati da ako postoje programi B, M i T, onda mora da postoji i

    program U.

    Resenje:

    Posto postoje programi B, M i T, onda po rezultatima iz odeljka 2.9

    postoje i programi W, L i Q. Kako je

    y(xxy) = Q(xx)yy = LQxyy = W(LQx)y = BW(LQ)xy,

    mozemo uzeti da je BW(LQ) trazeni program U.

    8. Dokazati da je sam U dovoljan da se izvede mudrac .

    Resenje:

    Za sve x i y vazi Uyx = x(yyx). Ako zamenimo y sa U dobijamo

    UUx = x(UUx).

    Dakle, mozemo definisati kao UU.

  • 3.4. Program O 31

    Neki otvoreni problemi: Videli smo da se kombinator , koji nije

    pravi, moze izvesti iz samo jednog pravog kombinatoraTjuringovog pro-

    grama U. Znamo da U nije regularan. Pitanje je da li se moze izvesti

    iz samo jednog regularnog kombinatora? Da li se moze izvesti iz B i

    jos samo jednog regularnog kombinatora?

    3.4. Program OProgram O je novi pravi kombinator koji zadovoljava za sve x i y

    Oxy = y(xy).

    9. Potrebno je pokazati da program O moze biti izveden iz B, C i W.

    Tacnije, dovoljno je da postoje Q i W.

    Resenje:

    Prvi deo mozemo pokazati na sledeci nacin:

    y(xy) = Bxyy = CBxyy = W(CBx)y = BW(CB)xy,

    pa O mozemo definisati kao BW(CB). Za drugi deo posmatrajmo

    y(xy) = Qxyy = W(Qx)y = QQWxy,

    pa O mozemo definisati kao QQW.

    10. Potrebno je pokazati da ako program x voli program y, tada x voli i

    program xy.

    Resenje:

    Pretpostavimo da x voli y. Tada je xy = y. Posto x voli y i y = xy, onda

    je x(xy) = xy = y sto znaci da x voli xy.

    11. Zanimljiva cinjenica o programu O je ta da ako primenimo program O na

    program , dobijamo mudraca ali to jos ne mora da znaci da je on isto sto i

    program . Drugim recima, za bilo koji program x vazi x(Ox) = Ox.

    Dokazimo ovo.

    Resenje:

    Posto je mudrac, to za bilo koji program x vazi da x voli x. Po

    prethodnom zadatku imamo da onda x voli i x(x). Posto je x(x) =

    Ox dobili smo da je x(Ox) = Ox.

    12. Podjednako interesantna cinjenica je da program O voli samo mudrace.

    Drugim recima, za bilo koji program A, ako je OA = A, onda A mora biti

    neki mudrac. Dokazati.

  • 32 ODELjAK 4. KOMBINATORNA LOGIKA

    Resenje:

    Pretpostavimo da je OA = A. Tada za bilo koji program x vazi

    Ax = OAx = x(Ax),

    pa je A mudrac.

  • 4. Kombinatorna logika4.1. Cista kombinatorna logikaAleksandra -Duric i Ana -Dordevic

    Matematicki cemo formalizovati pravila koja smo dosad primenjivali. Uvescemo

    cistu kombinatornu logiku CL (na engleskom Combinatory Logic). Postoje ra-

    zliciti nacini zadavanja a mi je uvodimo kao jednakosni racun. Pocinjemo od

    alfabeta koji se sastoji od:

    Konstanti: K,S

    Promenljivih: x, y, z . . .

    Zagrada: ( , )

    Simbola jednakosti: =

    Da bismo formulisali jezik induktivno cemo uvesti terme jezika:

    1. Konstante i promenljive su CL-termi

    2. Ako su reci X i Y nad ovim alfabetom CL-termi, onda je i rec (XY )

    takode CL-term.

    3. Nista vise nije CL-term.

    Za oznacavanje CL-terama najcesce koristimo simbole X, Y , Z . . . i zadrzavamo

    pravila brisanja zagrada uvedena u odeljku 2.5. Kombinator je CL-term bez

    promenljivih.

    Formule kojima se bavimo u kombinatornoj logici su oblika X = Y , gde su

    X i Y neki CL-termi. Racun je zadat sledecim aksiomama

    X = X, KXY = X, SXY Z = XZ(Y Z)

    i pravilima izvodenja

    X = Y

    Y = X

    X = Y Y = Z

    X = Z

    X = Y

    XZ = Y Z

    X = Y

    ZX = ZY

    Kombinator I nije primitivan u jeziku vec ga definisemo kao I =df SKK i

    nadalje ga koristimo kao da nam je dat u alfabetu.

    33

  • 34 ODELjAK 4. KOMBINATORNA LOGIKA

    4.2. ApstrakcijaApstrakcija je operacija koju mozemo primeniti nad termima kombinatorne

    logike i koja nam mehanicki izvodi sve ostale prave kombinatore preko kom-

    binatora S i K. Ona je unarna operacija, sto znaci da radi na jednom termu.

    Ukoliko zelimo apsrakciju svih promenljivih, operaciju moramo primeniti ono-

    liko puta koliko imamo razlicitih promenljivih.

    Za promenljivu i term X, induktivno cemo uvesti term [].X u kome se

    ne pojavljuje i za koji cemo pokazati da vazi ([].X) = X:

    (p1) []. =df I,

    (p2) [].X =df KX, ako se ne pojavljuje u X,

    (p3) [].Y =df Y , ako se ne pojavljuje u Y ,

    (p4) [].Y Z =df S([].Y )([].Z), ako se ni (p2) ni (p3) ne moze primeniti.

    Teorema 4.2.1. Za svaku promenljivu i svaki CL-term X vazi:

    ([].X) = X.

    dokaz. Indukcijom po slozenosti X.

    (baza indukcije) Ako je X bas promenljiva , onda je [].X = I pa je

    ([].X) = I = = X.

    Ako je X atom ali nije , onda je [].X = KX, pa je

    ([].X) = KX = X.

    (induktivni korak) Neka je X oblika Y Z. Ako se ne pojavljuje u Y i Z,

    onda postupamo kao u drugom slucaju baze indukcije.

    Ako je Z isto sto i i se ne pojavljuje u Y , onda je [].Y Z = Y , pa je

    ([].X) = Y = Y Z = X.

    Ako se na [].X ne mogu primeniti ni (p2) ni (p3), onda je [].Y Z =

    S([].Y )([].Z), pa je

    ([].X) = S([].Y )([].Z) = ([].Y )(([].Z))i.h.= Y Z = X.

    aKoristeci ovu teoremu, pomocu kombinatora I, K i S definisacemo u CL

    kombinatore koji imaju istu ulogu kao ranije pomenuti pravi kombinatori B, C,

    W, U kao i jedan novi pravi kombinator A.

  • 4.2. Apstrakcija 35

    1. Definisanje kombinatora A takvog da je Ax = x(xxx)x. Krecemo od

    terma x(xxx)x i trazimo sta je [x].x(xxx)x

    [x].x(xxx)x = S([x].x(xxx))([x].x) = S(S([x].x)([x].xxx))I =

    = S(SI(S([x].xx)([x].xx)))I = S(SI(S(S([x].x)([x].x))I))I =

    = S(SI(S(SII)I))I.

    Dakle, A u CL mozemo definisati kao S(SI(S(SII)I))I. Sledi provera:

    S(SI(S(SII)I))Ix = SI(S(SII)I)x(Ix) = Ix(S(SII)Ix)x = x(SIIx(Ix))x =

    = x(Ix(Ix)x)x = x(xxx)x.

    2. Definisanje kombinatora B. Posto je Bxyz = x(yz), krecemo od terma

    x(yz) i trazimo sta je [z].x(yz)

    [z].x(yz) = S([z].x)([z].yz) = S(Kx)y.

    Zatim racunamo

    [y].S(Kx)y = S(Kx).

    Zatim racunamo

    [x].S(Kx) = S([x].S)([x].Kx) = S(KS)K.

    Dakle, B u CL mozemo definisati kao S(KS)K. Provera:

    S(KS)Kxyz = KSx(Kx)yz = S(Kx)yz = (Kx)z(yz) = x(yz)

    3. Definisanje kombinatora C. Posto je Cxyz = xzy, krecemo od terma xzy

    i trazimo sta je [z].xzy

    [z].xzy = S([z].xz)([z].y) = Sx(Ky).

    Zatim racunamo

    [y].Sx(Ky) = S([y].Sx)([y].Ky) = S(K(Sx))K.

    Zatim racunamo

    [x].S(K(Sx))K = S([x].S(K(Sx)))([x].K) = S(S([x].S)([x].K(Sx)))(KK) =

    = S(S(KS)(S([x].K)([x].Sx)))(KK) = S(S(KS)(S(KK)S))(KK).

    Dakle, C u CL mozemo definisati kao S(S(KS)(S(KK)S))(KK). Provera:

    S(S(KS)(S(KK)S))(KK)xyz = S(KS)(S(KK)S)x)(KKx)yz =

  • 36 ODELjAK 4. KOMBINATORNA LOGIKA

    = S(KS)(S(KK)S)x)K)yz = KSx(S(KK)Sx)Kyz = S(S(KK)Sx)Kyz =

    = S(KKx(Sx))Kyz = S(K(Sx))Kyz = K(Sx)y(Ky)z = Sx(Ky)z =

    = xz(Kyz) = xzy.

    4. Definisanje kombinatora W. Posto je Wxy = xyy, krecemo od terma xyy

    i trazimo sta je [y].xyy

    [y].xyy = S([y].xy)([y].y) = SxI.

    Zatim racunamo

    [x].SxI = S([x].Sx)([x].I) = SS(KI).

    Dakle, W u CL mozemo definisati kao SS(KI). Provera:

    SS(KI)xy = Sx((KIx)y = SxIy = xy(Iy) = xyy.

    5. Definisanje kombinatora U. Posto je Uxy = y(xxy), krecemo od terma

    y(xxy) i trazimo sta je [y].xyy

    [y].y(xxy) = S([y].y)([y].(xx)y) = SI(xx).

    Zatim racunamo

    [x].SI(xx) = S([x].SI)([x].xx) = S(K(SI))(S([x].x)([x].x)) = S(K(SI))(SII).

    Dakle, U u CL mozemo definisati kao S(K(SI))(SII). Provera:

    S(K(SI))(SII)xy = K(SI)x(SIIx)y = K(SI)x(Ix(Ix))y = SI(xx)y =

    = Iy(xxy) = y(xxy)

    4.3. Teorema o fiksnoj tackiKatarina Smiljanic i Dusan Badza

    Operacija supstitucije CL-terma A na mesto promenljive x u CL-termu Y je

    meta-operacija u CL i oznacavamo je sa Y xA . Na primer

    (y(xz)(zyx))xtt = y(ttz)(zy(tt)).

    Indukcijom po duzini dokaza za Y = Z u CL, lako pokazujemo da vazi

    sledeca teorema.

    Teorema 4.3.1. Ako je Y = Z u CL, onda je i Y xA = ZxA u CL.

  • 4.3. Teorema o fiksnoj tacki 37

    Kao posledicu ove teoreme i teoreme 4.2.1, posto se promenljiva ne po-

    javljuje u [].X imamo sledecu teoremu.

    Teorema 4.3.2. Za svaku promenljivu i CL-terme X i A vazi:

    ([].X)A = XA.

    Posto je u kombinatornoj logici moguce definisati kombinatore B i M, to je

    tacno da svaki CL-term X voli bar jedan CL-term Y , to jest vazi

    XY = Y.

    Stavise, u kombinatornoj logici za bilo koji CL-term X vazi

    X(X) = X,

    gde je definisano kao kombinator UU i to dokazuje sledecu teoremu.

    Teorema o fiksnoj tacki. CL-term UUX je fiksna tacka za X, to jest

    X(UUX) = UUX.

    Posledica. Jednacinu oblika

    xx1x2...xn = Z

    uvek mozemo resiti po promenljivoj x.

    dokaz. Kao prvo cemo odrediti apstrakciju desne strane ove jednacine po

    promenljivim x, x1, . . . , xn i to oznaciti sa A. Dakle, A = [xx1x2...xn].Z.

    Zatim cemo pokazati da je A = UUA resenje jednacine po promenljivoj x.

    Ax1 . . . xn = UUAx1 . . . xn,

    = AAx1 . . . xn, po teoremi o fiksnoj tacki,

    = ZxA, po teoremi 4.3.2. aRadi lakseg zapisa i razumevanja resenja zadataka prvo cemo traziti kombi-

    nator A apstrakcijom primenjenom na desnu stranu polazne jednacine a zatimcemo dobijeni rezultat zameniti u formulu A = UUA.

    1. Naci kombinator A koji zadovoljava jednakost Ax = x(Ax).

    Resenje:

    Prvo se u jednacinu Ax = x(Ax) upisuje y umesto A tako da se dobije:

    yx = x(yx). Zatim treba izvrsiti apstrakciju desne strane kako bi se

  • 38 ODELjAK 4. KOMBINATORNA LOGIKA

    dobio kombinator A. Prilikom apstrakcije prvo se eliminise x iz x(yx):[x].x(yx) = S([x].x)([x].yx) = SIy, a zatim y iz dobijenog rezultata, to

    jest iz SIy: [y].SIy = SI.

    Eliminisanjem x i y dobija se kombinator A pa je krajnje resenje jednacineA = UU(SI).

    2. Naci kombinator A koji zadovoljava jednakost Ax = xA.

    Resenje:

    Prvo se u jednacinu Ax = xA upisuje y umesto A pa se dobija: yx = xy.

    Zatim se vrsi apstrakcija desne strane kako bi se dobio kombinator A.Prilikom apstrakcije se prvo eliminise x iz xy:

    [x].xy= S([x].x)([x].y)

    = SI(Ky)

    a zatim y iz dobijenog rezultata:

    [y].SI(Ky) = S([y].SI)([y].Ky)

    = S(K(SI))K.

    Na kraju S(K(SI))K treba upisati u formulu A = UUA umesto A pa jekrajnje resenje jednacine A = UU(S(K(SI))K).

    3. Naci kombinator A koji zadovoljava jednakost Ax = Axx.

    Resenje:

    U jednacinu Ax = Axx se umesto A upisuje y na sledeci nacin: yx =

    yxx. Zatim se vrsi apstrakcija desne strane da bi se dobio kombinator A.Prilikom apstrakcije treba prvo eliminisati x iz yxx:

    [x].yxx = S([x].yx)([x].x)

    = SyI

    pa onda y treba eliminisati iz SyI:

    [y].SyI = S([y].Sy)([y].I)

    = SS(KI).

    Na kraju SS(KI) treba ubaciti u formulu A = UUA umesto A pa jekrajnje resenje jednacine A = UU(SS(KI)).

  • right-head 39

    4. Naci kombinator A koji zadovoljava jednakost Ax = AA.

    Resenje:

    Jednacinu oblika Ax = AA treba zapisati na sledeci nacin: yx = yy.

    Zatim se vrsi apstrakcija desne strane kako bismo dobili kombinator A.Prilikom apstrakcije se prvo eliminise x iz yy:

    [x].yy = K(yy)

    A zatim y iz dobijenog rezultata:

    [y].K(yy) = S([y].K)([y].yy)

    = S(KK)(SII).

    Dakle, krajnje resenje je A = UU(S(KK)(SII)).

  • 5. Iskazna logika i aritmetika5.1. Iskazna logikaJelena Crnogorac, Stefan Vrankovic i Filip Novovic

    U ovom odeljku cemo govoriti o klasicnoj iskaznoj logici, njenoj sintaksi i se-

    mantici. Opisacemo prirodno-deduktivni sistem pomocu koga cemo formulisati

    pojam teoreme ove logike. Dacemo tablice za logicke veznike i formulisacemo

    pojam tautologije. Spomenucemo i teoremu potpunosti. U CL cemo definisati

    kombinatore koji odgovaraju logickim konstantama > i a zatim i kombinatorekoji odgovaraju veznicima , ,, i . Pocinjemo od alfabeta koji se sastojiod:

    iskaznih slova p, q, r, . . .

    konstante

    veznika , i

    zagrada ( , )

    Zatim induktivno definisemo pojam iskazne formule.

    1. Iskazna slova i konstanta su iskazne formule.

    2. Ako su reci A i B nad datim alfabetom iskazne formule, onda su (AB),(A B) i (A B) takode iskazne formule.

    3. Nista vise nije iskazna formula.

    Po dogovoru, nikad ne pisemo najspoljasnjije zagrade. Unarni veznik, negaciju,

    definisemo kao A =df A a binarni veznik, ekvivalenciju, definisemo kaoA B =df (A B) (B A). Ovime smo definisali jezik iskazne logike.

    U prirodnoj dedukciji su nam data pravila koja su podeljena u dve grupe:

    ona koja uvode veznik i ona koja eliminisu veznik.

    A B

    A BA BA

    A BB

    A

    A BB

    A BA B

    [A]

    C

    [B]

    C

    C

    40

  • 5.1. Iskazna logika 41

    [A]

    B

    A BA B A

    B

    [A]A

    Pretpostavke u uglastim zagradama nakon primene pravila vise nisu aktivne

    one su obrisane u tom trenutku. Izvodenje u prirodnoj dedukciji je drvo koje u

    svakom cvoru ima neku formulu, po vertikali su formule povezane datim pravili-

    ma izvodjenja, na vrhu drveta su pretpostavke a u korenu je zakljucak izvodenja.

    Ukoliko su u nekom izvodenju sve pretpostavke precrtane onda je formula A koja

    je zakljucak tog izvodenja teorema. To oznacavamo sa ` A. Sledece izvodenjenam pokazuje da je

    (q r) ((p q) (p r))

    teorema klasicne iskazne logike.

    (3) [q r](2) [p q] [p] (1)

    q

    r

    p r(1)

    (p q) (p r)(2)

    (q r) ((p q) (p r))(3)

    Kada govorimo o semantici klasicne iskazne logike obavezno navodimo sledece

    istinosne tablice u kojima slovo ,,t znaci istinu (tacno), dok slovo ,,f znaci laz

    (netacno).

    p pt ff t

    p q p qf f ff t ft f ft t t

    p q p qf f ff t tt f tt t t

    Table 5.1: Tablice za negaciju, konjunkciju i disjunkciju

  • 42 ODELjAK 5. Iskazna logika i aritmetika

    p q p qf f tf t tt f ft t t

    p q p qf f tf t ft f ft t t

    Table 5.2: Tablice za implikaciju i ekvivalenciju

    Za iskaznu formulu A kazemo da je tautologija kada je ona tacna (ima vred-

    nost t) za sve vrednosti svojih iskaznih slova. To oznacavamo sa |= A.

    Teorema potpunosti. Formula A je teorema (` A) akko je A tautologija(|= A).

    U ovom odeljku cemo videti kako kombinatorna logika moze da posluzi za

    racunanje vrednosti iskazne formule za konkretnu valuaciju njenih iskaznih slova.

    Dakle, CL nam moze pomoci za semantiku iskazne logike. To kako nam CL moze

    pomoci za sintaksnu stranu iskazne logike, to jest kako u CL mozemo kodirati

    jedan fragment prirodne dedukcije, videcemo u odeljku 7.1.

    Za pocetak cemo definisati dva kombinatora t i f koje interpretiramo kao

    istinu i laz. Postoji vise mogucnosti kako se to moze uraditi a mi se drzimo

    definicije date u [8]:

    t =df K f =df KI.

    Osnovno svojstvo ovako definisanih kombinaora t i f je da za proizvoljne CL-

    terme X i Y vazi

    tXY = X fXY = Y.

    1. Objasniti zasto resenje jednacine Nx = xft po nepoznatoj N predstavlja

    kombinator za koji ce vaziti Nt = f i N f = t.

    Resenje:

    Prvo cemo za N koje zadovoljava gornju jednacinu ,,izracunati vrednost

    terma Nt

    Nt = tft = Kft = f

    a zatim vrednost terma N f

    N f = fft = KIft = It = t.

    U narednim zadacima cemo uvesti kombinatore koji ce se redom interpre-

    tirati kao negacija, konjunkcija, disjunkcija, implikacija i ekvivalencija u

    smislu da kad ih primenimo na odgovarajuci niz kombinatora t i f, kao

    rezultat dobijamo onu vrednost koju bi nam dale gornje istinosne tablice.

  • 5.1. Iskazna logika 43

    2. Prvi kombinator koji uvodimo je N, koji predstavlja negaciju. Dakle,

    N radi sledece Nt = f i Nf = t. Po prethodnom primeru N dobijamo

    kao resenje jednacine Nx = xft po nepoznatoj N . Koristeci tehniku iz

    odeljka 4.2, kombinator N dobijamo kada apstrahujemo desnu stranu ove

    jednacine po x:

    N = [x].xft = S([x].xf)([x].t)

    = S(S([x].x)([x].f))(Kt)

    = S(SI(Kf))(Kt)

    Dakle, N mozemo definisati kao

    N =df S(SI(Kf))(Kt).

    Provera:

    Nt = S(SI(Kf))(Kt)t

    = SI(Kf)t(Ktt)

    = It(Kft)(Ktt)

    = tft = f (t = K i KfK = f)

    Nf = S(SI(Kf))(Kt)f

    = SI(Kf)f(Ktf)

    = If(Kff)(Ktf) = fft = t (f = KI i KI(KI)t = It = t).

    3. Drugi kombinator koji uvodimo je c. On racuna vrednost konjunkcije.

    Dakle, treba da vazi ctt = t; ctf = f; cft = f; cff = f.

    Koristeci osnovna svojstva kombinatora t i f vidimo da nam je dovoljno

    da c zadovoljava jednacinu

    cxy = x(ytf)f.

    Tu jednacinu resavamo, kao i u prethodnom slucaju, apstrakcijom desne

    strane. Prvo apstrahujemo po y

    [y].x(ytf)f = S([y].x(ytf))([y].f)

    = S(S([y].x)([y].ytf))(Kf)

    = S(S(Kx)(S([y].yt)([y].f)))(Kf)

    = S(S(Kx)(S(S([y].y)([y].t))(Kf))(Kf)

    = S(S(Kx)(S(SI(Kt))(Kf)))(Kf)

  • 44 ODELjAK 5. Iskazna logika i aritmetika

    a zatim po x

    [x].S(S(Kx)(S(SI(Kt))(Kf)))(Kf)

    = S(S(KS)(S(S(KS)K)(K(S(SI(Kt))(Kf)))))(K(Kt))

    i tako dobijamo definiciju kombinatora c.

    4. Kombinator d treba da racuna vrednost disjunkcije. Dakle, treba da vazi

    dtt = t; dtf = t; dft = t; dff = f.

    Analogno prethodnom zadatku vidimo da nam je dovoljno da kombinator

    d zadovoljava jednacinu

    dxy = xt(ytf),

    pa ga mozemo definisati kao

    d =df [xy].x(ytf)t = S(S(KS)(S(KK)(SI(Kt))))(K(S(SI(Kt))(Kf))).

    5. Kombinator i treba da racuna vrednost implikacije. Dakle, treba da vazi

    itt = t; itf = f; ift = t; iff = t.

    Jednacina cijim se resavanjem on dobija je

    ixy = x(ytf)t,

    pa ga mozemo definisati kao

    i =df [xy].x(ytf)t

    = S(S(KS)(S(S(KS)K)(K(S(SI(Kt))(Kf)))))(K(Kt)).

    6. Kombinator e treba da racuna vrednost ekvivalencije. Dakle, treba da

    vazi ett = t; etf = f; eft = f; eff = t.

    Jednacina cijim se resavanjem on dobija je

    exy = x(ytf)yft,

    pa ga mozemo definisati kao

    e =df [x, y].x(ytf)yft

    = S(S(KS)(S(S(KS)(S(S(KS)(S(S(KS)K)(K(S(SI(Kt))(Kf)))))

    (KI)))(K(Kf))))(K(Kt)).

  • 5.2. Aritmetika u kombinatornoj logici 45

    5.2. Aritmetika u kombinatornoj logiciDarko Losic i Petar Vukmirovic

    U ovom odeljku cemo govoriti o predstavljanju aritmetickih funkcija u kombi-

    natornoj logici i tu ce znacajnu ulogu imati pravi kombinator V koji za sve x,

    y i z zadovoljava

    Vxyz = zxy.

    Napominjemo da pod aritmetikom smatramo samo aritmetiku na prirodnim

    brojevima, to jest nenegativnim celim brojevima 0, 1, 2, . . ., tako da kad god

    se u tekstu pomene broj, misli se na neki od nenegativnih celih brojeva. Pod

    pojmom sledbenik nekog broja n (u oznaci n+) smatramo broj n uvecan za 1

    (primera radi sledbenik broja 0 je 1, sledbenik 1 je 2, sledbenik 2 je 3 i tako

    daljesledbenik n je n+ = n + 1). Analogno se definise prethodnik broja n

    u oznaci n (0 nema prethodnika, prethodnik 1 je 0, . . . , prethodnik n + 1 jen). Svaki broj n je predstavljen odgovarajucim kombinatorom. Kombinator

    oznacavamo sa n, a broj je oznacen samo sa n kako bi se izbegla zabuna u

    daljem tekstu.

    Kombinator sledbenik se oznacava sa i definisan je kao Vf, gde je f defin-

    isano u prethodnom odeljku kao KI. Za kombinator 0 uzimamo kombinator

    identitet I. Onda vazi sledece

    1 = 0 = VfI, 2 = 1 = Vf(VfI), 3 = 2 = Vf(Vf(VfI)), . . . ,

    odnosno

    0 = I, 1 = 0, 2 = (0), . . .

    Kombinatori oblika n se nazivaju numerickim kombinatorima ili prosto numer-

    alima.

    Za kombinator A kazemo da je aritmeticki kombinator tipa 1 kada za svaki

    numericki kombinator n, kombinator An je numericki. Neformalno govereci, ovo

    znaci da primenjen na broj kombinator A daje broj. Slicno mozemo definisati

    aritmeticke kombinatore viseg redaza kombinator A kazemo da je aritmeticki

    kombinator tipa 2 kada za svaka dva numericka kombinatora n i m, kombinator

    An m je numericki, ili ekvivalentno, kombinator An je aritmeticki kombinator

    tipa 1.

    U zadacima koji slede objasnicemo zasto u CL postoje kombinatori koji

    izvrsavaju sledece tri osnovne aritmeticke operacije:- kombinator sabiranja je kombinator za koji vazi da za bilo koja dva ne-

    negativna cela broja n,m imamo da je kombinatorn m zbir n i m,

    odnosno kombinator koja predstavlja taj zbir. Drugim reciman m =

    n+m. Na primer

    2 3 = 5,

    5 0 = 5,

    1 2 = 3 i tako dalje.

  • 46 ODELjAK 5. Iskazna logika i aritmetika

    - kombinator mnozenja je kombinator za koji vazi da za bilo koja dva

    nenegativna cela broja n,m imamo da je kombinatorn m proizvod n

    i m, odnosno kombinator koja predstavlja taj proizvod. Drugim recimanm = n m. Na primer 2 3 = 6, 1 4 = 4, 3 7 = 21 i tako dalje.

    - kombinator stepenovanja je kombinator za koji vazi da za bilo koja dva

    nenegativna cela broja n,m imamo da je kombinatorn m broj n po-

    mnozen m puta sam sa sobom, odnosno kombinator koji predstavlja taj

    proizvod. Drugim recimanm = nm. Na primer

    2 4 = 16,

    4 3 =

    64,

    5 2 = 25 i tako dalje.

    U uvodu smo definisali prehodnika svakog pozitivnog broja n. Ono sto nam

    je sada potrebno je kombinator prethodnik P koji racuna prethodnike. For-

    malno govoreci treba nam kombinator P takav da za svaki prirodan broj n vazi

    Pn+ = n.

    Koristicemo i kombinator koji proverava da li je numericki kombinator jed-

    nak 0. Ovaj kombinator cemo oznaciti sa Z i za njega ce vaziti sledece

    Z0 = t, Zn+ = f,

    gde su t i f kombinatori definisani u prethodnom odeljku kao

    t = K, f = KI.

    Ovakav izbor je napravljen zato sto za proizvoljne CL-terme x i y vazi txy = x

    jer Kxy = x a fxy = KIxy = Iy = y.

    Kombinator Z mozemo dobiti kao resenje jednacine Zx = xt, sto daje Z =

    SI(Kt) ili ga prosto mozemo definisati kao Tt, gde je kombinator T uveden u

    odeljku 2.7. Razlog tome je sto ce ovako definisan kombinator Z primenjen na

    0 davati t, dok ce primenjen na bilo koji drugi numericki kombinator davati f :

    Z0 = TtI = It = t,

    Zn+ = Ttn+ = n+t = Vfnt = tfn = f .

    Ono sto koristimo je zgodno svojstvo kombinatora Zkombinator koji je

    rezultat primene kombinatora Z i na n pa na m je n kada je i = 0, inace je m.

    1. Zadatak je da se pronade kombinator

    . Za to ce nam pomoci rekurzivna

    definicija sabiranja. Znamo da za svaka dva nenegativna cela broja n i m

    vazi:

    n+ 0 = n i n+ (m+) = (n+m)+

    Neformalno govoreci, 0 je neutral za sabiranje, a sabiranje broja n sa

    sledbenikom broja m mozemo svesti na trazenje sledbenika broja koji je

    zbir n i m. Ovo poslednje je isto sto i reci da za m > 0, zbir n i m je jednak

  • 5.2. Aritmetika u kombinatornoj logici 47

    sledbeniku zbira n i prethodnika od m, sto je zgodnije zbog konteksta u

    kome se nalazimo. Prelazeci na termine kombinatorne logike, mi u stvari

    trazimo kombinator

    za koji vazi:n 0 = n i za m > 0

    n m = (

    n (Pm)).

    Stoga,

    mora da zadovolji da za svako n i m, bilo da su 0 ili pozitivni,n m = Zm n((

    n(Pm))).

    Do kombinatora

    dolazimo resavajuci jednacinu

    zxy = Zyx((zx(Py))).

    po z. Radi toga se prvo izvrsi apstrakcija

    [zxy].Zyx((zx(Py)))

    a zatim se UU primeni na dobijeni kombinator. U svakom slucaju se

    primenjuje tehnika uvedena u odeljku 4.3.

    2. Zadatak je da se pronade kombinator

    uz pomoc kombinatora

    iz

    prethodnog zadatka. Koristimo rekurzivnu definiciju mnozenja preko sabi-

    ranja:

    n 0 = 0, n m = n (m+) = (n m) + n.Stoga,

    mora da zadovolji da za svako n i m:

    n m = Zm0(

    (

    n(Pm))n).

    Do kombinatora

    dolazimo resavajuci jednacinu

    zxy = Zy0(

    (zx(Py))x)

    po nepoznatoj z. Resenje postoji po teoremi o fiksnoj tacki.

    3. Zadatak je da se pronade kombinator

    uz pomoc kombinatora

    iz

    prethodnog zadatka. Koristimo rekurzivnu definiciju stepenovanja preko

    mnozenja.

    n0 = 1, n(m+) = nm n.

    Stoga,

    mora da zadovolji da za svako n i m:n m = Zm1(

    (

    n (Pm))n).

    Do kombinatora

    dolazimo resavajuci jednacinu

    zxy = Zy1(

    (zx(Py))x)

    po nepoznatoj z. Postojanje resenja nam opet garantuje teorema o fiksnoj

    tacki.

  • 48 ODELjAK 5. Iskazna logika i aritmetika

    5.3. Rekurzivne funkcijePetar Simovic i Nikola Nikolov

    U ovom odeljku cemo govoriti o rekurzivnim funkcijama i mogucnosti njihovog

    predstavljanja u CL. Sve rekurzivne funkcije su aritmeticke, to jest, imaju

    domen oblika Nn za n 1 a kodomen im je N. To je klasa (parcijalnih)funkcija koja je induktivno definisana na sledeci nacin:

    Osnovne rekurzivne funkcije su:

    konstantna nula funkcija

    z : N N, z(n) = 0,funkcija sledbenik

    s : N N, s(x) = x+ 1,funkcija i-te projekcije

    uni : Nn N, uni (x1, . . . , xn) = xi.

    Operacije s rekurzivnim funkcijama (uvodimo skracenicu ~x = (x1, . . . , xn)):

    supstitucija

    Ako su funkcije f : Nk N i g1, . . . , gk : Nn N u klasi, onda je ifunkcija h : Nn N definisana sa

    h(~x) = f(g1(~x), . . . , gk(~x))

    takodje u klasi.

    rekurzija

    Ako su funkcije f : Nn N i g : Nn+2 N u klasi, onda je i funkcijah : Nn+1 N definisana sa:

    h(~x, 0) = f(~x),

    h(~x, y + 1) = g(~x, y, h(~x, y))

    takodje u klasi.

    minimizacija

    Ako je funkcija f : Nn+1 N u klasi, onda je i funkcija h : Nn Ndefinisana sa:

    h(~x) = y(f(~x, y) = 0) =

    najmanje y takvo da je f(~x, z) definisanoza sve z y i f(~x, y) = 0,

    nedefinisano, ako takvo y ne postoji,

    takodje u klasi.

  • 5.3. Rekurzivne funkcije 49

    Kao i u prethodnom odeljku, kombinator F predstavlja funkciju f : Nn Nkada za svaku n-torku prirodnih brojeva (m1, . . . ,mn) vazi da je

    F m1 . . .mn = f(m1, . . . ,mn).

    U slucaju kada funkcija f nije totalna i njena vrednost u (m1, . . . ,mn) nije de-

    finisana, onda CL-term F m1 . . .mn nema normalnu formu (videti odeljak 6.1).

    Sasvim lako dolazimo do kombinatora koji predstavljaju osnovne rekurzivne

    funkcije. Funkcija z je predstavljena kombinatorom KI, funkcija s je predsta-

    vljena kombinatorom Vf, dok je funkcija uni predstavljena kombinatorom koji

    se dobija apstrakcijom

    [x1 . . . xn].xi.

    Na primer, neka je n = i = 2. Dobijamo

    [x1x2].x2 = [x1].([x2].x2) = [x1].I = KI,

    to jest isti kombinator koji je predstavljao konstantnu nula funkciju. Razlika

    je sto ovaj kombinator primenjujemo na dva numerala i on stvarno daje drugu

    projekciju jer

    KIm1m2 = Im2 = m2.

    Ukoliko uzmemo da je n = 2 a i = 1, onda dobijamo

    [x1x2].x1 = [x1].([x2].x1) = [x1].Kx1 = K

    i proveravamo da je to stvarno prva projekcija, to jest

    Km1m2 = m1.

    Sto se tice kombinatora koji predstavljaju rekurzivne funkcije dobijene od

    rekurzivnih funkcija (za koje induktivno pretpostavljamo da su predstavive u

    CL) primenom gorenavedenih operacija, njih dobijamo na sledeci nacin:

    sup Ako su F,G1, . . . ,Gk kombinatori koji predstavljaju redom rekurzivne

    funkcije f, g1, . . . , gk, onda je funkcija h(~x) = f(g1(~x), . . . , gk(~x)) pred-

    stavljena kombinatorom H dobijenim apstrakcijom

    [x1 . . . xn].F(G1x1 . . . xn) . . . (Gkx1 . . . xn).

    rek Ako su F i G kombinatori koji predstavljaju redom funkcije f : Nn Ni g : Nn+2 N, onda je funkcija h : Nn+1 N dobijena rekurzijom

    h(~x, 0) = f(~x),

    h(~x, y + 1) = g(~x, y, h(~x, y))

  • 50 ODELjAK 6. KONFLUENCIJA, -RACUN

    predstavljena resenjem sledece jednacine po nepoznatoj H

    Hx1 . . . xny = Zy(Fx1 . . . xn)(Gx1 . . . xn(Py)(Hx1 . . . xn(Py)).

    min Ako kombinator F predstavlja funkciju f : Nn+1 N, onda je funkcijay(f(~x, y) = 0) predstavljena kombinatorom A0 AI, gde je A resenjejednacine

    Ayx1 . . . xn = Z(Fx1 . . . xny)y(A(Vfy)x1 . . . xn).

  • 6. Konfluencija, -racun6.1. Konfluencija za CLFALI Tamara Baralic i Milica Sudar

    U ovom odeljku cemo govoriti o relaciji redukcije na CL-termima. Formulisacemo

    Cerc-Roserovu teoremu i neke njene posledice. Da bismo razumeli tu teoremu,

    najpre moramo definisati odredene pojmove.

    Podterm nekog CL-terma definisemo kao njegovu podrec koja je i sama CL-

    term. Svaki CL-term oblika KXY i SXY Z se naziva redeksom, a njihovi kon-

    traktumi su redom X i XZ(Y Z). Ako zamena jednog podterma oblika redeksa

    u CL-termu P odgovarajucim kontraktumom daje CL-term P , onda kazemoda se P kontrahuje na P (u oznaci P 1 P ). Ako se CL-term V dobija odCL-terma U nizom (mozda i praznim) ovakvih kontrakcija, onda kazemo da se

    U redukuje na V (u oznaci U V ). Na primer S(KKy)KS S jer

    S(KKy)KS1 SKKS1 KS(KS)1 S

    Relacija je refleksivno i tranzitivno zatvorenje od 1, dok je jednakost u CL

    refleksivno, simetricno i tranzitivno zatvorenje od 1. Ako su CL-termi X i Y

    identicni (kao reci) to cemo oznazavati sa X Y . U suprotnom cemo pisatiX 6 Y .

    Za CL-term kazemo da je u normalnoj formi kada on ne sadrzi podterme

    oblika redeksa. Ako U V i V je u normalnoj formi, onda kazemo da je V

    normalna forma za U .

    Cerc-Roserova teorema. Ako se CL-term U redukuje na X i na Y , onda

    postoji CL-term Z takav da se X i Y redukuju na Z.

    Ovo najbolje ilustrujemo sledecim dijagramom

    Z

    X Y

    U

    @@Rp p p p p p p p p pR

    ppppppppppPosledica 1. Svaki CL-term ima najvise jednu normalnu formu.

    Posledica 2. Ako X i Y imaju razlicite (neidenticne) normalne forme, onda

    u CL ne vazi X = Y .

    Posledica 3. Jednakosni racun CL nije trivijalan.

    51

  • 52 ODELjAK 6. KONFLUENCIJA, -RACUN

    Posledica 3 kaze da nije tacno da se u CL moze pokazati svaka jednakost.

    Ona se dobija iz posledice 2 kada posmatramo CL-terme K i S koji nisu identicni

    a nalaze se u normalnoj formi. Sada cemo koristeci Cerc-Roserovu teoremu i

    njene posledice resiti nekoliko zadataka.

    1. Dokazati da ako su prirodni brojevi m i n razliciti, onda u CL ne vazi

    jednakost m = n.

    Resenje:

    Dokaz se sastoji iz dva dela. U prvom cemo pokazati da je za svaki priro-

    dan broj n, term n u normalnoj formi. Zatim cemo pokazati da ako su m

    i n razliciti prirodni brojevi onda CL-termi m i n nisu identicni.

    Prvi deo pokazujemo indukcijom po n.

    (baza indukcije) Neka je n = 0. Po definiciji imamo da je 0 = I = SKK

    i posto ovaj CL-term ne sadrzi redekse, on je u normalnoj formi.

    (induktivni korak) Za svaki prirodan broj n+1, vazi da je n+ 1 = Vfn.

    Po induktivnoj pretpostavci n ne sadrzi redekse pa onda ni Vfn ne sadrzi

    redekse te je u normalnoj formi.

    Drugi deo pokazujemo indukcijom po min(n,m).

    (baza indukcije) Ako pretpostavimo da je n = 0, onda m mora biti vece

    od nule, jer su oni razliciti prirodni brojevi. Dovoljno je zakljuciti da tada

    SKK 6 Vfm 1. Analogno postupamo kada je m = 0.(induktivni korak) Po induktivnoj pretpostavci vazi n 1 6 m 1odakle odmah zakljucujemo

    n Vf n 1 6 Vfm 1 m.

    Iz ovoga, po posledici 2 sledi tvrdenje.

    2. Na primeru terama Sxyz i xz(yz), koji su jednaki u CL, treba pokazati

    da u opstem slucaju ne vazi:

    X = Y [x].X = [x].Y

    Resenje:

    FALI Ovo dalje srediti u stilu prethodnog. Tekst koji ste mi poslali se nije

    mogao procesirati. Prvo proverite da li ga WinEdt prihvata.

    Ovo cemo dokazati

    FALI Kad smo spominjali aproksimaciju?

  • 6.2. -racun 53

    aproksimacijom. Pomocu dva primera pokazacemo da iako naizgled oni

    deluju jednaki zbog cinjenice da su Sxyz i xz(yz) u CL-u jednaki, daju

    razlicita resenja. Koristimo to da se Sxyz redukuje na XZ(Y Z), kao i

    KXY na X.

    FALI Koristite tabbing za dugacke formule.

    [x].(SXY )z = S([x].Sxy)([x].z) = S(S([x].Sx)(xy))([x].z) = S(SS(Ky))(Kz)[x].xz(yz) = S([x].xz)([x]yz) = S(S([x].x))([x].z)) = (S([x].y)([x].z)) = S(SI(Kz))(S(K(yz)))

    3. Dati primer CL-terma koji nema normalnu formu.

    Resenje:

    FALI Kombinatori K, S i I su masni! Sve dobro procitajte. Prethodna

    verzija je sadrzala besmislene recenice i dokaze koji ne pokazuju ono sto

    ste najavili.

    Jedan od primera CL-terma koji nema normalnu formu je SII(SII). Ovaj

    term sadrzi redeks SXY Z, gde su X = Y = I, a Z = SII. Term se kon-

    trahuje u XZ(Y Z), odnosno u I(SII)(I(SII)). Ovde imamo dva redeksa,

    oba oblika IX za X = SII i oni se kontrahuju u X, odnosno u SII pa se

    ceo term redukuje u polazni term SII(SII) i dobijamo isti term kao i na

    pocetku, sto znaci da ovaj term sadrzi redekse, ali nije u normalnoj formi.

    U ovom slucaju treba napomenuti da je I definisano kao SKK, pa zbog

    toga vazi da je IX jednako SKKX, sto se dalje kontrahuje u KX(KX),

    i na kraju se KX(KX) kontrahuje u X.

    6.2. -racunAleksandar Predic, Dragana Radojevic i Marija Zivkovic

    Racun predstavlja skup nekoliko formalnih sistema, baziranih na notaciji

    Alonza Cerca iz tridesetih godina proslog veka. Oni su dizajnirani tako da opisu

    najosnovnije nacine kombinovanja operatora ili funkcija radi formiranja novih

    operatora. U ovom odeljku cemo se baviti -racunom bez ekstenzionalnosti koji

    se cesto oznacava kao -racun.

    Alfabet -racuna cine:

    beskonacan skup promenljivih x, y ,z, . . .

    pomocni simboli , ., (, ), =.

    -termi se definisu na sledeci nacin:

    1. promenljive su -termi;

  • 54 ODELjAK 6. KONFLUENCIJA, -RACUN

    2. (aplikacija) ako su reci X i Y nad datim alfabetom -termi, onda je (XY )

    takode -term;

    3. (apstrakcija) ako je rec Y nad datim alfabetom -term, onda je x.Y

    takode -term;

    4. nista vise nije -term.

    Zagrade vezane za primenu asocirane su ulevo. Takode, x.(y.Z) skraceno

    zapisujemo kao xy.Z.

    Podterm -terma je njegova podrec koja sama predstavlja -term. Pri zapisu

    x.M , za M kazemo da je ,,u oblasti x. Promenljiva x je vezana u termu M

    ako je u oblasti x u M , inace, promenljiva x je slobodna u M .

    Supstitucija u -racunu je nesto slozenija od one u CL zato sto ovde imamo

    primitivnu operaciju apstrakcije. Za bilo kojeM,N i x definisemoMxN kao rezul-

    tat supstitucije N za svako slobodno pojavljivanje x u M , pri cemu po potrebi

    preimenujemo vezane promenljive u M tako da nijedna slobodna promenljva iz

    N ne postaje vezana posle supstitucije. Na primer,

    (y.(yx))xz.y = u.(u(z.y)).

    Formule kojima se bavimo u -racunu su oblika X = Y , gde su X i Y neki

    -termi. Racun je zadat sledecim aksiomama

    X = X, x.M = y.Mxy y 6 FV (M), (x.M)N = MxN

    i pravilima izvodenja

    X