You are on page 1of 87

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 nedelje
od kraja septembra pa do kraja decembra 2013. je odrzan jedan blok od dva
casa predavanja. Prva i druga nedelja su bile posvecene Halmosevim tekstovima
[?] i [?]. Posle tih uvodnih casova sledila su predavanja koja su se odnosila na
elementarne pojmove iz teorije kategorija i srodnih oblasti. Svaki polaznik kursa
imao je zadatak da prikuplja beleske sa jednog predavanja i da ih pretoci u jedan
odeljak ovog teksta. Dogovor je bio da se predavac drzi Halmosevih saveta kako
treba predavati matematiku a da onaj koji sakuplja beleske, organizuje tekst,
koliko god je to moguce, po ugledu na Halmoseve sugestije kako treba pisati
knjigu iz matematike.
Zahvalnica
Zahvaljujem se profesoru Kosti Dosenu na sugestijama kako da zapocnemo ovaj
kurs.
U Beogradu, Zoran Petric
zpetric@mi.sanu.ac.rs
v
SADR

ZAJ
Size ??
Odeljak 1. Uvod ??
1.1. O autorima ??
1.2. Osnovni pojmovi i notacija ??
Odeljak 2. Smalijanovi zadaci ??
2.1. Biograja Rejmonda Smalijana ??
2.2. Kratak istorijat ??
2.3. Logicki problemi ??
2.4. Program ??
2.5. Dogovori o brisanju zagrada ??
2.6. Kombinator B i njegovi derivati ??
2.7. Dupliranje i permutovanje ??
2.8. Asociranje i dupliranje zajedno ??
2.9. Razlicite baze programa ??
Odeljak 3. Fiksna tacka ??
3.1. Kombinatorni programi ??
3.2. Jos o programu ??
3.3. Tjuringov program ??
3.4. Program O ??
Odeljak 4. Kombinatorna logika ??
4.1.

Cista kombinatorna logika ??
4.2. Apstrakcija ??
4.3. Teorema o ksnoj tacki ??
Odeljak 5. Iskazna logika i aritmetika ??
5.1. Iskazna logika ??
5.2. Aritmetika u kombinatornoj logici ??
5.3. Rekurzivne funkcije ??
Odeljak 6. Konuencija i -racun ??
6.1. Konuencija za CL ??
6.2. -racun ??
6.3. Konuencija za -racun ??
Odeljak 7. Prosti tipovi ??
7.1. -racun s tipovima ??
vii
viii Sadrzaj
7.2. CL s tipovima ??
Odeljak 8. Uvod u Haskel ??
8.1. Funkcionalno programiranje ??
8.2. Haskel ??
8.3. Izvodenje aritmetickih operacija ??
8.4. Liste ??
8.5. Funkcije viseg reda ??
Odeljak 9. Neodlucivost ??
9.1. Gedelovo kodiranje ??
9.2. Dokaz neodlucivosti za CL ??
Bibliograja ??
Indeks ??
1. Uvod
1.1. O autorima
Marko Adam, roden 20.11.1993. u Kninu u Hrvatskoj.
Obrazovanje:
O

S ,,Adi Endre Mali Idos i O

S ,,Aleksa

Santic, Kaluderica, Beograd;
Osma beogradska gimnazija, prirodno-matematicki smer, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Zanimam se racunarima od svoje 8. godine. U pocetku samo kako masinom za
video igre i zabavu, a tokom godina sam se vise i vise poceo baviti i programi-
ranjem.

Citanje mi je hobi. Ljudi tvrde da sam duhovit.
e-mail: adamarko@gmail.com
Nikola Ajzenhamer, roden 12.6.1994. u Beogradu.
Obrazovanje:
Osnovna skola Zaga Malivuk, Beograd;
Prva beogradska gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Ja sam komunikativan i druzeljubiv. Volim da slusam i izucavam muziku, sviram
klavir, pisem knjige i izlazim sa svojim najboljim prijateljima.

Zelja mi je oduvek
bila da se profesionalno bavim racunarstvom i informatikom, pa sam se zato i
odlucio za ovaj smer/fakultet.
e-mail: n.ajzenham@yahoo.com
Dusan Badza, roden 31.12.1994. godine u Beogradu.
Obrazovanje:
Osnovna skola ,,20. oktobar, Beograd;
Prva beogradska gimnazija, Beograd;
Matematicki fakultet univerziteta u Beogradu, smer Informatika.
Jos od malena su me zanimali kompjuteri i sport, narocito fudbal koji sam
trenirao punih 9 godina. Veoma sam komunikativna i druzeljubiva osoba. Slo-
bodno vreme provodim sa drustvom, igram igrice, sviram gitaru ili popravljam
drugovima i drugaricama kompjutere.
e-mail: dusan.badza@yahoo.com
1
2 ODELjAK 1. UVOD
Tamara Baralic, rodena 29.12.1993. u Gornjem Milanovcu.
Obrazovanje:
Osnovna skola Desanka Maksimovic, Gornji Milanovac;
Gimnazija Takovski ustanak, Gornji Milanovac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Komunikativna, druzeljubiva, ambiciozna i uporna osoba. Volim sport, puto-
vanja, jezike, dobro pivo u dobrom drustvu. Imam sirok spektar interesovanja.
e-mail: tammarra6@gmail.com
Andrej Besti c, roden
e-mail: mi11187@alas.matf.bg.ac.rs
Nikola Blagojevic, roden 4.12.1993. u Peci.
Obrazovanje:
Osnovna skola Despot Stefan Lazarevic, Beograd

Sesta beogradska gimnazija, prirodno-matematicki smer, Beograd;


Matematicki fakultet, Univerzitet u Beogradu, smer Informatika.
Ja sam komunikativna i druzeljubiva osoba. U slobodno vreme slusam muziku
i izlazim sa prijateljima. Volim da putujem, upoznajem nove ljude i mesta.
Studiram informatiku jer su me od malena zanimali racunari i sve vezano za
njih.
e-mail: nikolaos93@hotmail.com
Milos Cerovic, roden 10.2.1993. u Beogradu.
Obrazovanje:
Osnovna skola Ilija Bircanin, Zemun Polje;
Elektrotehnicka skola Zemun, Zemun;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
U slobodno vreme volim da slusam muziku, i pogledam po koji lm. Volim da
se druzim, da budem napolju.
e-mail: milos.cera@gmail.com
Nikola Cimbaljevic, roden 26.12.1991. u Krusevcu.
Obrazovanje:
Osnovna skola Jovan Popovic, Krusevac.
Srednja skola Gimnazija, Krusevac.
1.1. O autorima 3
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Moje najvece interesovanje su igrice i kreiranje istih. To je razlog zasto sam
upisao Matematicki fakultet. Druzeljubiv sam i volim da sam okruzen meni
dragim ljudima. Imam dva omiljena pisca i uzivam u citanju njihovih knjiga.
Omiljeni casopis mi je Politikin Zabavnik.
e-mail: cimbaman@yahoo.com
Marko Crnobrnja, roden 9.5.1993. u Beogradu.
Obrazovanje:
Osnovna skola Djura Danicic, Beograd;
Matematicka gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Pristupacna i druzeljubiva osoba. Pored informatike interesujem se za jezike i
matematiku, volim gledati lmove i citati.
e-mail: mi12024@alas.matf.bg.ac.rs
Jelena Crnogorac, rodena 25.12.1993. Beogradu.
Obrazovanje:
Osnovna skola Kosta Djukic, Mladenovac;
Gimnazija Mladenovac, Mladenovac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Najvise se opustam kada pevam i slusam muziku, takode volim da provodim
vreme sa drustvom i gledam lmove.
e-mail: egorac@yahoo.com
Nikola Dragojlovic, roden 24.10.1992. u Beogradu.
Obrazovanje:
Osnovna skola Dragica Pravica, Beograd;
Elektrotehnicka

Skola Nikola Tesla, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Slobodnog vremena imam jako malo zbog posla I fakulteta. Bavim se spasilastvom.
Ono vremena sto mi ostaje slobodno provodim sa mojom devojkom. Na fakul-
tetu se trudim da budem redovan mada mi to ponekad ne uspeva ali i dalje
istrajam i redovno zavsavam 2 godinu studija. Hobi mi je stolarstvo.
e-mail: mi11260@alas.matf.bg.ac.rs
4 ODELjAK 1. UVOD
Ana - Dordevic, rodena 11.10.1993. u Arandelovcu.
Obrazovanje:
Osnovna skola Milan Ilic

Cica, Arandelovac;
Gimnazija Milos Savkovic, prirodno-matematicki smer, Arandelovac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Zanima me programiranje, volim da putujem, slusam muziku i izlazim sa drustvom.
e-mail: djordjevicana93@gmail.com
Aleksandra - Duric, rodena 20.02.1993. u Uzicu.
Obrazovanje:
Osnovna skola Aleksa Dejovic, Sevojno;
Tehnicka skola, Uzice, smer Elektrotehnicar telekomunikacija;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Nasmejana sam, druzeljubiva i pouzdana osoba . Smatram da je u zivotu veoma
vazno baviti se onim sto volis. Zato sam i izabrala ovaj smer.
e-mail: aleksandradjuric@mail.ru
Nikola Gujanicic, roden 19.09.1993. u Prijepolju.
Obrazovanje:
Osnovna skola Momir Pucarevic, Akmacici;
Gimnazija Pivo Karamatijevic, Nova Varos;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Introvertna sam osoba.
e-mail: johnnyng.bre@gmail.com
Nemanja Ilic, roden 25.06.1993. u Valjevu.
Obrazovanje:
Osnovna skola Nada Puric, Valjevo
Valjevska gimanzija, smer: Prirodno matematicki, Valjevo
Matematicki fakultet Univerziteta u Beogradu, smer: Informatika
Veoma sam iskrena i komunikativna osoba. U slobodno vreme se bavim stand
up komedijom. Volim da pogledam dobar lm ili predstavu, procitam dobru
knjigu i sviram gitaru.
e-mail: nemanjailic.va@gmail.com
Nikola Ilic, roden 10.7.1993. u Vranju.
1.1. O autorima 5
Obrazovanje:
Osnovna skola Predrag Devedzic, Vranjska Banja;
Gimnazija Bora Stankovic, smer Matematika, Vranje;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Zanimaju me racunari od malena, slobodno vreme provodim baveci se sportom,
eventualno gledam neki dobar lm ili sam za racunarom. Matematika mi je isla
od ruke od malena pa sam je zato i zavoleo.
e-mail: allmightyazlan@gmail.com
Danilo Jovanovic, roden 19.12.1993. u Beogradu.
Obrazovanje:
Osnovna skola Kralj Petar Prvi, Beograd;
Matematicka gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Interesuje me: arhitektura, sviranje, slusanje muzike, istorija, lingvistika...naravno,
i programiranje.
e-mail: mi12022@alas.matf.bg.ac.rs
Vladimir Jovanovic, roden 8.2..1993. u Beogradu.
Obrazovanje:
Osnovna skola Branko

Copic, Beograd;
XV Beogradska gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Osim kompjutera, koji su mi najveca opsesija, moji hobiji su crtanje i muzicka
produkcija.
e-mail: vladimir.weskor@gmail.com
Milica Kojicic, rodena 19.02.1993. u

Sapcu.
Obrazovanje:
Osnovna skola

Zika Popovic, Vladimirci;

Sabacka gimnazija,

Sabac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Vrlo sam komunikativna, ozbiljna i odgvorna. Stalno sam okruzena pozitivnim
ljudima i zivot ne bih mogla da zamislim bez svojih mnogobrojnih prijatelja i
porodice. Volim da putujem i uzivam u sitnicama. Oduvek sam umela dobro
da se organizujem i ne volim kada vreme ne koristim produktivno.
e-mail: mi12085@alas.matf.bg.ac.rs
6 ODELjAK 1. UVOD
Anamarija Krstic, rodena 05.03.1994. u Beogradu.
Obrazovanje:
Osnovna skola Majka Jugovica, Zemun;
Prva Beogradska Gimnazija, prirodno matematicki smer, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
U slobodno vreme igram igrice i jedem i odlazem ucenje analize. Citat koji bi
me najbolje opisao je:Gi me mana.
e-mail: ana4991@gmail.com
Mladen Lazic, roden 05.01.1993. u Bijeljini.
Obrazovanje:
Osnovna skola Aleksa

Santic, Ugljevik;
Srednja Tehnicka skola Mihailo Petrovic Alas smer elektrotehnicar racunara,
Ugljevik;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Ono cime bih voleo u zivotu da se bavim jeste programiranje. Inace hobi su mi
automobili. Kao mali igrao sam se sa automobilima i video igricama.
e-mail: blackmaster 1993@hotmail.com
Nenad Lazic, roden 13.02.1993. u Loznici.
Obrazovanje:
Osnovna skola Dositej Obradovic, Ljubovija;
Srednja skola Tehnicka skola smer elektrotehnicar racunara, Valjevo;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Ono sto me najvise interesuje jeste pre svega programiranje i digitalna elektron-
ika.

Zelim da steknem sto vise znanja u ovoj oblasti i zbog toga sam i upisao
Matematicki fakultet Univerziteta u Beogradu. Hobi su mi sport i automobili.
e-mail: nenadlazic13@gmail.com
Anda Lilic, rodena 11.9.1993. u Zajecaru.
Obrazovanje:
Osnovna skola - Dura Jaksic, Zajecar;
Gumnazija u Zajecaru, smer informaticki;
Matematicki fakultet Univerziteta u Beogradu, smer Astronomija i astrozika,
odsek astroinformatika.
Veoma sam komunikativna, volim da izlazim i slusam muziku. Programiranjem
sam pocela da se bavim u srednoj skoli i izgledalo je vrlo interesantno, pa sam
1.1. O autorima 7
odlucila da nastavim time da se bavim.
e-mail:andjica93@gmail.com
Darko Losic, roden 18.09.1993. u Beogradu Obrazovanje:
Osnovna skola Rade Koncar u Beogradu
Elektrotehnicka skola Nikola Tesla
Matematicki fakultet Univerziteta u Beogradu, smer Informatika
Racunarstvo i informatika je oblast koja me interesuje jos od osnovne skole.
Volim biciklizam, drustvene mreze, muziku i lmove.
e-mail: mi12192@alas.matf.bg.ac.rs
Darja Lovrenski, rodena 17.1.1992. u Beogradu.
Obrazovanje:
Osnovna skola Josif Pancic u Beogradu;
Srednja skola ET

S Nikola Tesla u Beogradu, smer elektrotehnicar racunara,


Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim muziku, putovanja, zavrsila sam nizu muzicku skolu u Beogradu, odsek
violoncelo, volim da gledam trilere i uvek sam raspolozena za druzenje. Zan-
imaju me racunarske mreze i volela bih to da proucim detaljno i da se time
bavim. Uvek su me zanimali racunari, vise hardver, ali sam u poslednje vreme
zavolela i softver.
e-mail: darja.lovrenski@gmail.com
Stefan Maksimovic, roden 24.1.1993. u Loznici.
Obrazovanje:
Osnovna skola Milica Pavlovic,

Cacak;
Gimnazija u

Cacku;
Matematicki fakultet univerziteta u Beogradu, smer informatika.
Oduvek sam bio zainteresovan za masine, njihovu sustinu i principi po kojima
rade.
e-mail: mi12078@alas.matf.bg.ac.rs
Petar Manojlovic, roden 12.04.1992. u Beogradu.
Obrazovanje:
Osnovna skola Petar Petrovic Njegos, Beograd;
8 ODELjAK 1. UVOD
Gimnazija Sveti Sava, prirodno-matematicki smer, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim da citam knjige Stephen King-a, H.P.Lovecraft-a i slicnih, volim da sa
drustvom igram kosarku i fudbal. Slobodno vreme provodim sa devojkom ili sa
prijateljima.
e-mail: petar.man@live.com
Kosta Maric, roden 27.8.1993. u Beogradu.
Obrazovanje:
Osnovna skola Borislav Pekic, Beograd;
Deseta beogradska gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.

Matematicki fakultet sam upisao zato sto me zanima programiranje i zeleo bih
time da se bavim.U slobodno vreme volim da vezbam u parku,vozim bicikl,
gledam lmove, sportske utakmice i volim da slusam muziku.
e-mail: stikona1@gmail.com
Nikola Maric, roden 20.10.1993. u Uzicu.
Obrazovanje:
Osnovna skola Aleksa Dejovic, Sevojno.
Uzicka gimnazija, prirodno-matematicki smer, Uzice.
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim sportove, pogotovu plivanje za koje zbog obaveza prema fakultetu nemam
puno vremena. Veseo sam, volim da se druzim, izlazim. Kazu da sam bekrija,
doduse rado posecujem kafane i klubove.
e-mail: vrhstra@gmail.com
Marko Micic, roden 20.9.1993. u Uzicu.
Obrazovanje:
Osnovna skola Andrija Durovic, Uzice;
Tehnicka skola, Uzice;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Zanima me programiranje i razvoj programa, u slobodno vreme gledam lmove
i slusam muziku.
e-mail:marko93ue@gmail.com
1.1. O autorima 9
Iva Milic, rodena 19.5.1993. u Beogradu.
Obrazovanje:
Osnovna skola Zaga Malivuk, Beograd;
Peta beogradska gimnazija, smer prirodno-matematicki, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Astronomija i astrozika,
odsek astroinformatika.
Uglavnom pozitivna, i zeljna timskog rada. Volim muziku, pesmu, igru, druzenje,
putovanja i jos mnogo toga, tako da je jedna od stvari bez koje ne bih mogla da
zamislim svoj zivot folklor.
e-mail: ai12310@alas.matf.bg.ac.rs
Aleksandar Milosavljevic, roden 3.2.1993. u Beogradu.
Obrazovanje:
Osnovna skola Jovan Jovanovic Zmaj, Obrenovac;
Elektrotehnicka skola Nikola Tesla, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Filmol, zaljubljenik u gitare i kompjutere. Najcesce sarkatsican, cinican i
neprijatan. U slobodno vreme pisem kratke satiricne price.
e-mail: lordcojs@gmail.com
Jana Milutinovic, rodena 29.06.1993. u Krusevcu.
Obrazovanje:
Osnovna skola Nada Popovic, Krusevac.
Osnovna muzicka skola Stevan Hristic , Krusevac.
Krusevacka gimnazija, prirodno-matematicki smer, Krusevac.
Matematicki fakultet Univerziteta u Beogradu, smer Inforamtika.
Treniram odbojku i clan sam tima Matematickog fakulteta. Generalno volim
sportove. Uzivam u skijanju i planinarenju. Vesela sam, brzopleta, tvrdoglava,
cesto puna energije. Volim zivotinje, knjige, kafane.
e-mail: janamilutinovic@yahoo.com
Srdan Miljevic, roden 30.9.1988. u Beogradu.
Obrazovanje:
Osnovna skola Jelena

Cetkovic, Beograd;

Sesta beogradska gimnazija, Beograd;


Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
10 ODELjAK 1. UVOD
Volim racunarske nauke, horor lmove, plivanje i ronjenje. Ne volim matematicku
analizu, beskonacnosti i da pisem o tome sta volim a sta ne.
e-mail: mi12303@alas.matf.bg.ac.rs
Milos Mitrovic, roden 21.4.1993. u Beogradu.
Obrazovanje:
Osnovna skola Nikola Tesla, Beograd;
Prva beogradska gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Imam dosta interesovanja koja ukljucuju razne oblasti racunarstva, kinematograju,
gracki dizajn, muziku, pop kulturu i jos mnoga druga. Takode sam veliki
zagovornik ljudskih prava kao i zivotinjskih prava zbog cega sam vegetarijanac
od svoje petnaeste godine. Uvek sam otvoren da probam nove stvari.
e-mail: mi12106@alas.matf.bg.ac.rs
Petar Mladenovic, roden 2.4.1994. u

Sapcu.
Obrazovanje:
Osnovna skola Nikolaj Velimirovic,

Sabac;
Medicinska skola Dr Andra Jovanovic,

Sabac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Madionicar programerskih navika.
e-mail: petar@madjionicarskitrikovi.com
Nikola Nikolov, roden 15.01.1993. u Pozarevcu.
Obrazovanje:
Osnovna skola Kralj Aleksandar I, Pozarevac;
Pozarevacka gimnazija, Pozarevac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Ne volim da pisem o sebi.
e-mail: nikola93nikolov@gmail.com
Filip Novovic, roden 12.10.1993. u Beogradu.
Obrazovanje:
Osnovna skola Josif Pancic, Beograd;
Racunarska gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
1.1. O autorima 11
Moj primarni cilj je da na fakultetu sakupim dovoljno znanja da bih mogao da
se bavim racunarskom grakom i razvojem racunarskih igara. Pored programi-
ranja, strast su mi i perkusije, najvise bubnjevi.
e-mail: novke93@gmail.com
Relja Paunovic, roden 2.1.1993. u Beogradu.
Obrazovanje:
Osnovna skola Stefan Nemanja, Beograd;
Peta Beogradska Gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Sviram klavir i bubanj, veliki sam lmol, volim matu i racunarstvo.
e-mail:ReljaTheGreat@gmail.com
Nikola Pavlovic, roden 15.04.1993. u Uzicu.
Obrazovanje:
Osnovna skola Dusan Jerkovic, Uzice;
Uzicka gimnazija, Uzice;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Interesuje me sve u vezi racunarstva i informatike. Ljubiitelj sam sporta, lma,
muzike
e-mail: nikolapavlovic93@gmail.com
Ljubica Peleksic, rodena 18.11.1993. u Beogradu.
Obrazovanje:
Osnovna skola Ivo Andric, Beograd;

Cetvrta gimnazija u Beogradu;


Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Ljubav prema matematici sam nasledila od roditelja. Bavim se konjickim
sportom vec godinama.

Cesto putujem i tesko mi je da budem na jednom
mestu dugo. Planiram da zivim i radim u inostranstvu.
e-mail:peleksic.ljubica@gmail.com
Branko Petkovic, roden 30.7.1993. u Beogradu.
Obrazovanje:
Osnovna skola Rade Koncar, Zemun;
2006-2008 SystemPro, skola programiranja za talentovanu decu;
12 ODELjAK 1. UVOD
Zemunska Gimnazija, drustveno jezicki smer
Matematicki fakultet Univerziteta u Beogradu, Smer Informatika.
Vrlo sam motivisan, dobro radim pod pritiskom i dobro radim u timu. Treniram
ragbi vec 7 godina. Bio sam kapiten reprezentacije u vise navrata, tako da imam
iskustvo u organizovanju ljudi. Prvi put sam poceo da programiram u skoli
programiranja za talentovanu decu SystemPro sa 13 godina. Ubrzo sam shvatio
da bas time zelim da se bavim.
e-mail: mi12180@alas.matf.bg.ac.rs
Andrea Pilipovic, rodena 11.8.1993. u Beogradu.
Obrazovanje:
Osnovna skola Ujedinjene Nacije, Beograd;
XV Beogradska gimnazija u Beogradu, prirodni smer;
Matematicki fakultet Univerziteta u Beogradu, smer informatika.
Volim da izlazim, slusam muziku i da svoje slobodno vreme provodim sa porod-
icom i prijateljima. Obozavam da putujem i vidim nesto novo. Sa programi-
ranjem sam se upoznala u srednjoj skoli, ali sam ga iskreno zavolela tek na
fakultetu.
e-mail: andrea.pilipovic@yahoo.com
Aleksandar Predic, roden 3.9.1993. u Beogradu.
Obrazovanje:
Osnovna skola Branko

Copic, Beograd;
XV beogradska gimnazija, Prirodno-matematicki smer, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Veoma sam vedra i komunikativna osoba. Hobiji su mi skijanje, airsoft, capoeira
i sviranje gitare. U slobodno vreme volim da izadjem sa prijateljima, opustim
se uz neki dobar lm ili da slusam muziku.
e-mail: apredic@ymail.com
Aleksandar Preocanin, roden 07.08.1993. u Beogradu.
Obrazovanje:
O

S Majka Jugovica, Zemun, Beograd;


ET

S Nikola Tesla , smer elektrotehnicar racunara, Beograd;


Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Veoma sam zainteresovan za programiranje i matematiku zbog cega sam i upisao
ovaj fakultet. U slobodno vreme sviram gitaru, treniram i gledam lmove.
1.1. O autorima 13
e-mail: preocanin.aleksandar@gmail.com
Jana Protic, rodena 9.1.1994. u Uzicu.
Obrazovanje:
Osnovna skola Emilija Ostojic, Pozega;
Gimnazija Sveti Sava, smer Informatika, Pozega;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Veoma sam opustena, pozitivna i uvek spremna za akciju. Volim rad u timu, ali
se takodje lepo snalazim i u pojedinacnim aktivnostima. Racunari i softver su
mi oduvek bili jako zanimljivi. Slobodno vreme volim da provodim u drustvu
uz neku dobru muziku, lm ili pricu.
e-mail: proticjana@gmail.com
Mirjana Pusicic, rodena 17.12.1992.u Uzicu.
Obrazovanje:
Osnovna skola

Zivko Ljujic, Nova Varos;
Gimnazija Pivo Karamatijevic, Nova Varos;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim da putujem, i da sam stalno okruzena prijateljima i poznanicima.
e-mail: mirapusicic@gmail.com
Jovan Radoicic, rodjen 13.2.1993. u Krusevcu.
Obrazovanje:
Osnovna skola Dragomir Markovic, Krusevac;
Masinsko-elektrotehnicka skola, smer Automatika, Krusevac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Student.
e-mail: jovan.radoicic@yahoo.com
Dragana Radojevic, rodena 10.8.1993. u Beogradu.
Obrazovanje:
Osnovna skola Rade Drainac, Beograd;
Sedma beogradska gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim rad na racunaru zbog cega sam i izabrala Informatiku. U slobodno vreme
volim da slusam muziku,izadjem sa prijateljima, procitam neku dobru knjigu.
14 ODELjAK 1. UVOD
e-mail: dragana9393@live.com
Dusica Radojevic, rodena 22.01.1993. u Jagodini.
Obrazovanje:
Osnovna skola Rada Miljkovic, Jagodina;
Gimnazija Svetozar Markovic, Jagodina;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Ne volim da pisem o sebi.
e-mail: ducabamboocha@gmail.com
Milomir Radojevic, roden 28.10.1993. u Uzicu.
Obrazovanje:
Osnovna skola Mito Igumanovic, Kosjeric;
Tehnicka skola, Kosjeric;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim informatiku i sve sto je vezano za programiranje. U slobodno vreme
gledam lmove i slusam muziku.
e-mail:milomir993@gmail.com
Milos Radosavljevic, rodjen 09.12.1993. u Krusevcu.
Obrazovanje:
Osnovna skola Vuk Karadzic, Krusevcu;
Krusevacka gimnazija, Krusevac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
U slobodno vreme najvise volim da igram kompjuterske igrice. Iako nisam
sportski tip omiljeni sport mi je fudbal i rado ga igram. Ponekad se cini da
trosim svoje vreme uzaludno i da provedem sate i sate u dosadi, medjutim kad
treba organizujem svoje vreme, sve svoje obaveze zavrsim u roku. Svestan sam
svojih sposobnosti i mana, pa se ne opeterecujem previse stvarima za koje znam
da ne mogu da uticem na njih ili ako znam da mi ne idu, ali kad nadjem nesto
sto me interesuje trudim se da naucim i istrazim sto vise o tome. Nisam od
onih koji vole da uce napamet, ucim tako sto stvari logicki povezujem i tako sto
shvatim sustinu stvari.
e-mail: mi12183@alas.matf.bg.ac.rs
Bojana Simic, rodena 9.4.1993. u Brusu.
1.1. O autorima 15
Obrazovanje:
Osnovna skola Jovan Jovanovic Zmaj, Brus;
Srednja skola, Brus;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Interesuje me programiranje, ali sam jos uvek na pocetnom nivou. Volim da
putujem, planinarenje, zivotinje, sve sto ima veze sa prirodom. Takolje, veliki
sam zaljubljenik u lmove, muziku, knjige.
e-mail: bojanasimic93@gmail.com
Petar Simovic, roden 14.4.1993. u Beogradu.
Obrazovanje:
Osnovna skola Oslobodioci Beograda, Beograd;

Cetrnaesta beogradska gimnazija, Beograd;


Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Upisao sam ovaj fakultet prvenstveno radi sticanja znanja u razli citim oblastima
racunarstva. U slobodno vreme eksperimenti sem sa hardverom svojih starijih
racunara.
e-mail: petar93simovic@gmail.com
Vlado Skoko, roden 19.4.1993. u Beogradu.
Obrazovanje:
Osnovna skola Sonja Marinkovic, Zemun;
Elektrotehnicka skola Rade Koncar, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Jo u sestom razredu osnovne skole sam odlucio cime hocu da se bavim. Napravio
sam izbor izmedu informatike i medicine i upisao elektrotehnicku skolu, racunarski
smer. Nakon tri godine ucenja programiranja, upisao sam Matematicki fakultet,
kako bih nastavio obrazovanje u ovoj oblasti. Moja druga ljubav su jezici i cilj
mi je da do kraja studija govorim cetiri. Veliki sam fan tenisa od 12. godine.
e-mail:v.d.skoko@gmail.com
Katarina Smiljanic, rodena 14.5.1994. godine u

Cacku.
Obrazovanje:
Osnovna skola Tanasko Rajic,

Cacak;

Cacanska gimnazija,

Cacak;
Matematicki fakultet univerziteta u Beogradu, smer Informatika.
Volim da izlazim, da se druzim sa ljudima i da ucestvujem u drustvenim desavanjima.
16 ODELjAK 1. UVOD
Ovaj smer sam upisala jer volim da programiram i razmisljam o nacinu resavanja
nekog problema. Programiranje je pocelo da me interesuje u trecoj godini sred-
nje skole. Takode sam ucestvovala na republickom takmicenju iz programiranja.
e-mail: kacasmiljanic3@gmail.com
Nikola Spasojevic, roden 26.4.1993. u Beogradu.
Obrazovanje:
Osnovna skola - Dura Jaksic, Beograd;

Cetvrta gimnazija, Beograd;


Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
U slobodno vreme volim da sviram, slusam muziku, citam, izlazim... Smer Infor-
matika sam izabrao jer volim programiranje kao sredstvo za resavanje problema,
volim izazove, a u informatici ce uvek biti neceg novog.
e-mail: mi12007@alas.matf.bg.ac.rs
Pavle Stepanic, roden 28.08.1993. u Krusevcu.
Obrazovanje:
Osnovna skola ,,Vuk Karadzic, Krusevac;
Gimnazija Krusevac , prirodno-matematicki smer, Krusevac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Od malih nogu sam znao da su prirodne nauke moja sfera interesovanja. Oduvek
sam znao da cu pohadati PMF, ali sam pre tri godine shvatio da je informatika
najzanimljivija prirodna nauka. Drustvena sam osoba. Volim sve sto vole mladi,
volim da radim na sebi. Hobi su mi: Skijanje, planinarenje, biciklizam, stoni-
tenis.
e-mail: paychos@live.com
- Dorde Srdic, roden 18.1.1993. u Beogradu.
Obrazovanje:
Osnovna skola 14. Oktobar, Beograd;
Elektrotehnicka skola Nikola Tesla, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Matematicki fakultet sam upisao kako bih unapredio znanje steceno u srednjoj
skoli u nadi da cu se jednog dana baviti informatikom. Ljubitelj sam elektronske
muzike i tibetanske kulture. U slobodno vreme rekreativno treniram, citam i
izlazim s prijateljima.
e-mail: djordje srdic@hotmail.com
1.1. O autorima 17
Sibin Stojkovic, roden 13.9.1993. u Beogradu.
Obrazovanje:
Osnovna skola Milan - D. Milicevic, Beograd;
Matematicka Gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.

Zelim da se bavim medicinom, ali sam prespavao tri godine hemije,


pa sam se ipak odlucio za programiranje, koje mi je oduvek islo i bilo zanimljivo.
U slobodno vreme ucim hemiju i druzim se sa prijateljima.
e-mail: mi12021@alas.matf.bg.ac.rs
Nemanja Subotic, roden 4.9.1993. u Uzicu.
Obrazovanje:
Osnovna skola

Zivko Ljujic , Nova Varos;
Gimnazija Pivo Karamatijevic, Nova Varos;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Druzeljubiv i komunikativan. U slobodno vreme izlazim sa drustvom idem na
plivanje, igram basket, igrice...
e-mail: mi12042@alas.matf.bg.ac.rs
Milica Sudar, rodena 31.12.1993. u Somboru.
Obrazovanje:
Osnovna skola Nikola Vukicevic, Sombor;
Gimnazija Veljko Petrovic, Sombor;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Otvorena osoba sirokih interesovanja. Ne mogu da zamislim zivot bez dobre
muzike, rolera i sporta. Trenutno se bavim orijentalnim plesom. Najveca zelja
mi je da proputujem svet.
e-mail: micajas93@gmail.com
Milan Teodorovic, roden 20.9.1993. u Beogradu.
Obrazovanje:
Osnovna skola Stevan Dukic, Beograd;
Elektrotehnicka skola Nikola Tesla, smer Elektrotehnicar racunara, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Jos od osnovne skole sam bio zainteresovan za kompjutere i tehnologiju,zato
sam i upisao ovaj fakultet. Naravno provodio sam dosta vremena igrajuci igrice
18 ODELjAK 1. UVOD
tako da sam pozeleo da i programiram iste, doduse kada sam video kako pro-
gramiranje zaista izgleda nisam bas bio odusevljen, ali sam ipak nastavio sa
skolovanjem u tom smeru. Volim lmove, knjige, muziku, druzenje,izlaske.
Takodje sam fan istorije, epske i naucne fantastike, i naravno veoma volim da
provodim vreme igrajuci se na kompjuteru.
e-mail:frosty11060@gmail.com
-
Dorde Todorovic, roden 12.8.1993. u Uzicu.
Obrazovanje:
Osnovna skola Petar Lekovic, Pozega;
Gimnazija Sveti Sava, smer Informatika, Pozega;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim da igram fudbal. U slobodno vreme idem u teretanu.
e-mail: djole93gp@yahoo.com
- Dorde Urosevic, roden 16.4.1993. u Beogradu.
Obrazovanje:
Osnovna skola Vladislav Ribnikar, Beograd;
Treca beogradska gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.

Zelim da se bavim programiranjem i zato sam upisao Matematicki fakultet. U


slobodno vreme, kada ne vozim bicikl i ne sviram gitaru, volim da se opustim
uz dobar lm, zanimljiv bend ili fudbalsku utakmicu.
e-mail: urosevic93@hotmail.com
Nikola Vidic, roden 9.7.1992. u Beogradu.
Obrazovanje:
Osnovna skola ,,Laza Kostic, Beograd;
Srednja elektrotehnicka skola Nikola Tesla, smer Elektrotehnicar racunara,
Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
U slobodno vreme volim da gledam lmove, citam knjige, bavim se sportom...
e-mail: ai11295@alas.matf.bg.ac.rs
Stefan Virag, rodjen 08.02.1993. u Vrscu.
Obrazovanje:
1.1. O autorima 19
Osnovna skola Mladost, Vrsac;
Gimnazija Borislav Petrov Braca, Vrsac;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
U slobodno vreme volim da se bavim programiranjem, najvise pravljenjem
igrica. Volim da pomazem i da budem u dobrom drustvu. Volim izlaske, lmove
i igrice..
e-mail: mi12055@alas.matf.bg.ac.rs
Marija Vlaskovic, rodena 20.11.1993. u Uzicu.
Obrazovanje:
Osnovna skola Emilija Ostojic, Pozega;
Gimnazija Sveti Sava, smer Informatika, Pozega;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Volim da radim u timu, ali i samostalno. Racunari su mi oduvek bili intere-
santni. Pozitivna osoba, uvek sam za akciju. Slobodno vreme volim da provodim
druzeci se, ili uz dobru knjigu. Takodje obozavam da putujem.
e-mail: mi12295@alas.matf.bg.ac.rs
Aleksandar Vranesevic, roden 23.11.1993. u Uzicu.
Obrazovanje:
Osnovna skola Stari grad, Uzice;
Uzicka gimnazija, Uzice;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
,,Do... or do not. There is no try.
e-mail: zdju@rocketmail.com
Stefan Vrankovic, roden 3.6.1993. u Benkovcu.
Obrazovanje:
Osnovna skola Ilija Garasanin, Grocka;
Srednja skola, prirodno-matematicki smer, Grocka;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Zavoleo sam matematiku jos kao dete, a programiranje mi se ucinilo kao neko
dodatno mozganje, tako sam i zavrsio na ovom fakultetu. U slobodno vreme
gledam serije i igram sah.
e-mail: stefan.vrankovic@gmail.com
Petar Vukmirovic, roden 12.08.1993. u Beogradu
20 ODELjAK 1. UVOD
Obrazovanje:
Osnovna skola Miroslav Antic u Beogradu
Trinaesta beogradska gimnazija
Matematicki fakultet Univerziteta u Beogradu, smer Informatika
Racunarstvo i informatika je oblast koja me interesuje jos od osnovne skole.
Volim plivanje, drustvene mreze, muziku i lmove.
e-mail: mi12084@alas.matf.bg.ac.rs
Lazar Vuletic, roden 20.05.1993. u Beogradu.
Obrazovanje:
Osnovna skola Vojvoda Radomir Putnik, Beograd;
gimnazija Sveti Sava, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
,,-insert wise quote here-
e-mail: scarmiglione8421@yahoo.com
Stefan Zaric roden 29.5.1993. u

Cacku.
Obrazovanje:
Osnovna skola Ratko Mitrovic,

Cacak;
Tehnicka skola,

Cacak;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Interesuju me racunari, muzika, sport i automobili. U slobodno vreme volim da
slusam muziku, gledam lmove i igram kosarku.
email: mi12147@matf.bg.ac.rs
Oliver Kosta

Zivic, roden 17.08.1993. u Beogradu.
Obrazovanje:
Osnovna skola France Presern, Beograd;

Cetvrta Beogradska Gimnazija, prirodno-matematicki smer, Beograd;


Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
Bavim se sportom, muzikom i u slobodno vreme volim da procitam po koju
dobru knjigu. Preferiram samostalan rad, zbog ceste ljudske neorganizovanosti,
mada sa dobrim timom odlicno saradjujem. Slobodno vreme volim da provodim
u dobrom drustvu, obicno uz muziku, lm ili u razgovoru.
e-mail: mi12121@alas.matf.bg.ac.rs
1.1. O autorima 21
Marija

Zivkovic, rodena 31.7.1993. u Beogradu.
Obrazovanje:
Osnovna skola Dusko Radovic, Beograd;
Matematicka gimnazija, Beograd;
Matematicki fakultet Univerziteta u Beogradu, smer Informatika.
U slobodno vreme volim da slusam muziku, sviram klavir i gitaru i ucim strane
jezike. Informatiku sam upisala zato sto mi je programiranje veoma zanimljivo
i ima veliku primenu u svakodnevnom zivotu.
e-mail: mi12038@alas.matf.bg.ac.rs
22 ODELjAK 2. SMALIJANOVI ZADACI
1.2. Osnovni pojmovi i notacija
prazan skup
N 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
T(X) partitivni skup (skup svih podskupova) od X
x
1
, . . . , x
n
konacan skup; x
i
,= x
j
za i ,= j
[X[ broj elemenata konacnog skupa X
X X reeksivna (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 reeksivna, simetricna i tranzitivna
f : X Y je 1-1 (x
1
, x
2
X)(f(x
1
) = f(x
2
) x
1
= x
2
)
f : X Y je na (y Y )(x X)(y = f(x))
f : X Y je bijekcija 1-1 i na
kombinatori: M Mx = xx
K Kxy = x
I Ix = x
L Lxy = x(yy)
2. Smalijanovi zadaci
2.1. Biograja Rejmonda Smalijana
Nenad Lazic
Rejmond Smalijan je Americki matematicar, koncertni pijanista, logicar, lozof
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 istorijat
Logici 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 lozoje veoma dugo,
pocevsi od starogrckog lozofa 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 lozoje u matematiku po uzoru
na ziku koja se od lozoje 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 lozoma ponekad
se naziva lozofskom 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
23
24 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

Sennkl 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 [?]).
Dejna Skot je sezdesetih i sedamdesetih godina proslog veka pokazao kako usa-
glasiti teoriju modela i kombinatornu logiku.
2.3. Logicki problemi
Mnogi 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 denisati pre nego
sto pocnemo razmatranje problema.
Komutativnost primene programa (ne) vazi uvek
Ako posmatramo programe A i B i ukoliko je program B ulaz za program
2.3. Logicki problemi 25
A, tada ce program A na izlazu dati rezultat program AB. Program AB
se dobija kao rezultat izvrsavanja programa A na programu 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 vazi
x A(Bx) = Cx.
Drugim recima rezultat izvrsavanja programa C na program x je isti kao
i rezultat izvrsavanja programa A na rezultat izvrsavanja programa B na
program x.
C2 Program rugalica
Pretpostavka je da postoji program rugalica Mkoji 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
26 ODELjAK 2. SMALIJANOVI ZADACI
C2 vaze.
Pitanje: Koja od ove dve glasine je istinita?
Resenje:
Prva glasina je tacna. Svaki program A je sklon barem jednom programu.
Ovo dokazujemo na sledeci nacin: Uzmite bilo koji program. Uslovom 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 izvrsavanja pro-
grama x, koji za ulaz ima program x, 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
njihovog izvrsavanja na programu x isti, tj. 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 27
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.
28 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 ksiran
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 ksiran 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 ksiran 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 programKegocentrican onda je beznadezno egocentrican. Dokazati.
Resenje:
Ako je programKegocentrican onda programKvoli programK. 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 programKx 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 29
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 programKegocen-
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.
30 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 denicije 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 programL 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
denisemo 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 31
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 Kegocentrican.
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 denisati
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 ksnoj tacki (videti odeljak 4.3). Naime,
on za dati program x trazi njegovu ksnu tacku.
2.5. Dogovori o brisanju zagrada
Mladen 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?
32
2.5. Dogovori o brisanju zagrada 33
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 A
1
= A
2
. Mozemo li zakljuciti da je BA
1
=
BA
2
? Mozemo li zakljuciti da je A
1
B = A
2
B?
(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.
34 ODELjAK 2. SMALIJANOVI ZADACI
2.6. Kombinator B i njegovi derivati
Jana 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.
Denisimo 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 Bi 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 35
3. Ako imamo na raspolaganju kombinator B i rugalicu M mozemo zapisati
izraz za narcisa.
Kao sto znamo za svako x vazi da x voli M(BxM), ako uzmemo da je x
program M, onda Mvoli M(BMM). To jest, M(BMM) nam je kandidat
za narcisoidan 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) narcis.
4. Ako imamo kombinator B, rugalicu M i kancelator K, napisati izraz
pomocu B, M i K za beznadezno narcisoidan 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 narcisoidan zbog toga sto svaki program koji kancelator K voli
mora biti beznadezni narcis.
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 Dse 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 denisati kao BB.
36 ODELjAK 2. SMALIJANOVI ZADACI
6. Denisimo pomocu B kombinator B
1
takav da za bilo koje programe x,
y, z i w vazi sledeci uslov:
B
1
xyzw = 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, B
1
mozemo denisati kao DB. Koristeci samo B, imamo da je
B
1
= 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 denisane derivate od B. Konkretno, sad cemo ko-
ristiti kombinator B
1
, iz prethodnog zadatka.
Ponovo cemo problem resavati unatrag.
xy(zwv) = (xy)(zwv) = B
1
(xy)zwv.
Primecujemo da je
B
1
(xy) = BB
1
xy,
sto znaci da je
B
1
(xy)zwv = BB
1
xyzwv.
Znaci da E mozemo da denisemo kao BB
1
= B(BBB).
2.6. Kombinator B i njegovi derivati 37
8. Denisimo derivat B
2
, koji zadovoljava sledeci uslov:
B
2
xyzwv = x(yzwv).
Pocevsi iz pocetka koristeci samo B dobijanje B
2
se moze dosta zakomp-
likovati, ali koristeci E iz prethodnog zadatka vrlo je lako:
x(yzwv) = x((yzw)v) = Bx(yzw)v = EBxyzwv.
Znaci B
2
mozemo denisati kao EB ili koristeci samo B kao B(BBB)B.
9. Denisimo derivat D
1
koji zadovoljava sledeci uslov:
D
1
xyzwv = 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 D
1
mozemo denisati kao BD, odnosno samo pomocu Bkao B(BB).
10. Denisimo derivat B
3
, koji zadovoljava sledeci uslov:
B
3
xyzw = x(y(zw)).
Koristimo derivat D
1
iz prethodnog problema. Gledajuci na (zw) kao na
zasebnu jedinicu imamo
x(y(zw)) = Bxy(zw) = D
1
Bxyzw.
Znaci B
3
mozemo denisati kao D
1
B, odnosno samo pomocu B kao
B(BB)B.
11. Denisimo derivat D
2
koji zadovoljava sledeci uslov:
D
2
xyzwv = x(yz)(wv).
Gledajuci na (yz) kao zasebnu jedinicu imamo
x(yz)(wv) = Dx(yz)wv = DDxyzwv.
Znaci D
2
mozemo denisati kao DD, odnosno samo pomocu Bkao BB(BB).
38 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 permutovanje
Relja Paunovic i Pavle Stepanic
Sada uvodimo program W koji je izuzetno bitan u kombinatornoj logici. De-
nisan je kao:
Wxy = xyy.
Ovaj program ne treba mesati s programom L koji je denisan 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. Denisani su na sledeci nacin:
Cxyz = xzy
Txy = yx
Rxyz = yzx
2.7. Dupliranje i permutovanje 39
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, programCKA 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 denisemo 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 denicije 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.
40 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, Ri Ca takode i samo pomocu
B i R.
Resenje:
Problem cemo resiti unazad: zyx = Rxzy = (Rx)zy = C(Rx)yz =
BCRxyz, pa mozemo da denisemo 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 denisati 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 denisati kao CF.
2.8. Asociranje i dupliranje zajedno
Iva Milic i Andja 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. ProgramQ, sa kojim se sada srecemo, je najbitniji i on ce kasnije denisati
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 41
tako da ga mozemo denisati 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 Q
1
a
zadovoljava sledeci uslov:
Q
1
xyz = x(zy).
Program Q
1
je takode derivat od B i T, i to mozemo pokazati kao:
x(zy) = Bxzy = C

Bxyz = BCBxyz.
Dakle, Q
1
mozemo da denisemo kao BCB.
3. Program Q
2
je jos jedan iz ove familije. On zadovoljava sledeci uslov:
Q
2
xyz = y(zx).
Mozemo napisati da je
y(zx) = Byzx = R

Bxyz,
odatle sledi da je
Q
2
= R

B = 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 Q
1
onda
postoji i Q
2
i obrnuto.
Resenje:
Ako pretpostavimo da u svetu postoji kombinator C i:
(a) ako postoji kombinator Q
1
, tada CQ
1
radi isto sto i kombinator Q
2
:
CQ
1
xyz = Q
1
yxz = y(zx).
(b) ako postoji kombinator Q
2
, tada CQ
2
radi isto sto i kombinator Q
1
:
CQ
2
xyz = Q
2
yxz = x(zy).
42 ODELjAK 2. SMALIJANOVI ZADACI
5. Kombinator Q
3
je sledeci iz ove familije. On zadovoljava sledeci uslov:
Q
3
xyz = z(xy).
Lako je pokazati da je Q
3
derivat kombinatora B i T
z(xy) = T(xy)z = BTxyz.
Dakle, mozemo ga denisati kao BT, ali ako iskoristimo:
z(xy) = Bzxy = V

Bxyz,
onda ga mozemo denisati i kao V

B.
6. Kombinator Q
4
je poslednji iz ove familije kojeg cemo spomenuti. On
zadovoljava sledeci uslov:
Q
4
xyz = z(yx).
Ukoliko hocemo da ga dobijem kao derivat kombinatora Bi Tiskoristicemo:
z(yx) = Bzyx = F

Bxyz,
pa ga mozemo denisati kao F

B.
7. Ukoliko u svetu programa postoji kombinator C, tada ne mozemo imati
kombinator Q
3
ako nemamo kombinatora Q
4
i obrnuto.
Resenje:
Ako pretpostavimo da kombinator C postoji i:
(a) ako je kombinator Q
3
postoji, tada CQ
3
ima svojstva kobinatora Q
4
:
CQ
3
xyz = Q
3
yxz = z(yx).
(b) ako je kombinator Q
4
postoji, tada CQ
4
ima svojstva kobinatora Q
3
:
CQ
4
xyz = Q
4
yxz = z(xy).
8. Da li se kombinator Q
4
moze zapisati pomocu kombinatora Q
1
i T?
Resenje:
Da, moguce je jer imamo
Q
1
Txyz = T(yx)z = z(yx).
Dakle, Q
4
mozemo zapisati kao Q
1
T.
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 denisati kao BBC.
2.9. Razlicite baze programa
Milos 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.
43
44 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 dokazu


se moze koristiti pomocni program M
2
xy = xy(xy), za koji se zna da je
M
2
= BM.
Resenje:
Lakse nam je da dokazemo da se W

moze izraziti preko baze R, M i B, a


zatim koristeci R = BBT, lako prelazimo na bazu B, M i T. Postupkom
unazad polazimo od W

xy = yxx. Mozemo da primetimo da je yxx =


Rxyx. Posmatrajuci Rx kao jedan argument mozemo da zakljucimo da
je (Rx)yx = RxRxy a na osnovu denicije M
2
mozemo da vidimo da je
RxRxy = M
2
Rxy. Kada zamenimo M
2
dobijamo W

= BMR, odnosno
kada zamenimo R dobijamo W

= BM(BBT).
5. Dokazati da se uz pomoc programa R, M, Bi Cmoze izraziti programW.
2.9. Razlicite baze programa 45
Resenje:
Postupkom unazad polazimo od Wxy = xyy. Koristeci pomocni program
W

, mozemo da primetimo da je xyy = W

yx, a zatim da je W

yx =
CW

xy. Odavde vidimo da je W = CW

, odnosno na osnovu prethodnog


primera 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 jednakost
Cx = B(Tx)R kada x zamenimo sa W

dobijamo Cx = B(TW

)R. Iz
prethodnih 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 imaju
istu funkciju kao i W, da udvostruce krajnji argument. Jedina razlika je u tome
sto imaju vise argumenata. Za W

vazi W

xyz = xyzz, a W

xyzw = 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 = C

xyyz
(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,


C

xyyz = W

xyz. Od ranije znamo da je W

= BW i C

= BC, pa
cemo to primeniti u nasem dokazu. Dakle, H = BW(BC).
9. Treba pokazati da se Wmoze izraziti pomocu baze H, C, odnosno pomocu
baze H, R.
46 ODELjAK 2. SMALIJANOVI ZADACI
Resenje:
Kako bismo ovo lakse pokazali, koristicemo W

xy = yxx. Postupkom
unazad yxx = Rxyx = HRxy, pa je W

= HR. Kako je W = CW

,
dobijamo da je W = C(HR). Slicno, W = RW

R, 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 Gdobijamo
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 da
je Gxyzz = W

Gxyz. Kako je W

= B(BW) i G = BBC, dobijamo


da 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 47
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 tacka
3.1. Kombinatorni programi
Nemanja 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 denicija 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 denisemo 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
48
3.2. Jos o programu 49
postoji. Sada cemo videti kako ga mozemo denisati 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 programy 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 deniciju 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 denisati 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 denisati 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 deniciji, 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.
50 ODELjAK 3. FIKSNA TA

CKA
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 denisati kao QLM. Po trecem
zadatku iz odeljka 2.9 imamo da se L moze denisati kao QMpa dobijamo
izraz Q(QM)M koji denise kombinator .
5. Pokazati da program moze biti izveden iz programa S i L.
Resenje:
Posto je Lx(Lx) = SLLx, to mozemo denisati kao SLL.
6. Pokazati da program moze biti izveden iz programa B, W i S.
Resenje:
Pokazali smo da SLL denise program . Takode vazi SLL = WSL,
pa i WSL denise . Po drugom zadatku iz odeljka 2.9 imamo da se L
moze denisati kao BWB, odakle dobijamo da se moze denisati kao
WS(BWB).
3.3. Tjuringov program
Nikola 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 denisati kao UU.
3.4. Program O 51
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 O
Program 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 denisati kao BW(CB). Za drugi deo posmatrajmo
y(xy) = Qxyy = W(Qx)y = QQWxy,
pa O mozemo denisati 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.
52 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 logika
4.1.

Cista kombinatorna logika
Aleksandra - 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 denisemo kao I =
df
SKK i
nadalje ga koristimo kao da nam je dat u alfabetu.
53
54 ODELjAK 4. KOMBINATORNA LOGIKA
4.2. Apstrakcija
Apstrakcija 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.

Koristeci ovu teoremu, pomocu kombinatora I, K i S denisacemo 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 55
1. Denisanje 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 denisati 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. Denisanje 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 denisati kao S(KS)K. Provera:
S(KS)Kxyz = KSx(Kx)yz = S(Kx)yz = (Kx)z(yz) = x(yz)
3. Denisanje 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 denisati 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 =
56 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. Denisanje 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 denisati kao SS(KI). Provera:
SS(KI)xy = Sx((KIx)y = SxIy = xy(Iy) = xyy.
5. Denisanje 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 denisati 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 ksnoj tacki
Katarina 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
x
A
. Na primer
(y(xz)(zyx))
x
tt
= 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
x
A
= Z
x
A
u CL.
4.3. Teorema o ksnoj tacki 57
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 = X

A
.
Posto je u kombinatornoj logici moguce denisati 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 denisano kao kombinator UU i to dokazuje sledecu teoremu.
Teorema o fiksnoj ta cki. CL-term UUX je ksna tacka za X, to jest
X(UUX) = UUX.
Posledica. Jednacinu oblika
xx
1
x
2
...x
n
= Z
uvek mozemo resiti po promenljivoj x.
dokaz. Kao prvo cemo odrediti apstrakciju desne strane ove jednacine po
promenljivim x, x
1
, . . . , x
n
i to oznaciti sa A

. Dakle, A

= [xx
1
x
2
...x
n
].Z.
Zatim cemo pokazati da je A = UUA

resenje jednacine po promenljivoj x.


Ax
1
. . . x
n
= UUA

x
1
. . . x
n
,
= A

Ax
1
. . . x
n
, po teoremi o ksnoj tacki,
= Z
x
A
, po teoremi 4.3.2.
Radi lakseg zapisa i razumevanja resenja zadataka prvo cemo traziti kombi-
nator A

apstrakcijom primenjenom na desnu stranu polazne jednacine a zatim


cemo 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
58 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 jednacine


A = 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 je
krajnje 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 je
krajnje resenje jednacine A = UU(SS(KI)).
right-head 59
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 aritmetika
5.1. Iskazna logika
Jelena 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 denisati
kombinatore koji odgovaraju logickim konstantama i a zatim i kombinatore
koji odgovaraju veznicima , , , i . Pocinjemo od alfabeta koji se sastoji
od:
iskaznih slova p, q, r, . . .
konstante
veznika , i
zagrada ( , )
Zatim induktivno denisemo 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,
denisemo kao A =
df
A a binarni veznik, ekvivalenciju, denisemo kao
A B =
df
(A B) (B A). Ovime smo denisali 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 B
A B
A
A B
B
A
A B
B
A B
A B
[A]
C
[B]
C
C
60
5.1. Iskazna logika 61
[A]
B
A B
A 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 izvodenje
nam 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 p
t f
f t
p q p q
f f f
f t f
t f f
t t t
p q p q
f f f
f t t
t f t
t t t
Table 5.1: Tablice za negaciju, konjunkciju i disjunkciju
62 ODELjAK 5. Iskazna logika i aritmetika
p q p q
f f t
f t t
t f f
t t t
p q p q
f f t
f t f
t f f
t 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 FALI.
Za pocetak cemo denisati dva kombinatora t i f koje interpretiramo kao
istinu i laz. Postoji vise mogucnosti kako se to moze uraditi a mi se drzimo
denicije date u [?]:
t =
df
K f =
df
KI.
Osnovno svojstvo ovako denisanih 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 Nf = t.
Resenje:
Prvo cemo za N koje zadovoljava gornju jednacinu ,,izracunati vrednost
terma Nt
Nt = tft = Kft = f
a zatim vrednost terma Nf
Nf = 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 63
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 denisati 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(K)(Ktf) = t = 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; c = 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)
64 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 deniciju kombinatora c.
4. Kombinator d treba da racuna vrednost disjunkcije. Dakle, treba da vazi
dtt = t; dtf = t; dft = t; d = f.
Analogno prethodnom zadatku vidimo da nam je dovoljno da kombinator
d zadovoljava jednacinu
dxy = xt(ytf),
pa ga mozemo denisati 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; i = t.
Jednacina cijim se resavanjem on dobija je
ixy = x(ytf)t,
pa ga mozemo denisati 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; e = t.
Jednacina cijim se resavanjem on dobija je
exy = x(ytf)yft,
pa ga mozemo denisati 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 65
5.2. Aritmetika u kombinatornoj logici
Darko 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 denise prethodnik broja n
u oznaci n

(0 nema prethodnika, prethodnik 1 je 0, . . . , prethodnik n + 1 je


n). 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 denisan je kao Vf, gde je f den-
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.
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 denisati
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 kombinator

n m zbir n i m,
odnosno kombinator koja predstavlja taj zbir. Drugim recima

n m =
n +m. Na primer

2 3 = 5,

5 0 = 5,

1 2 = 3 i tako dalje.

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


nenegativna cela broja n, m imamo da je kombinator

n m proizvod n
66 ODELjAK 5. Iskazna logika i aritmetika
i m, odnosno kombinator koja predstavlja taj proizvod. Drugim recima

nm = 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 kombinator

n m broj n po-
mnozen m puta sam sa sobom, odnosno kombinator koji predstavlja taj
proizvod. Drugim recima

nm = n
m
. Na primer

2 4 = 16,

4 3 =
64,

5 2 = 25 i tako dalje.
U uvodu smo denisali 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 denisani 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 f xy = KIxy = Iy = y.
Kombinator Z mozemo dobiti kao resenje jednacine Zx = xt, sto daje Z =
SI(Kt) ili ga prosto mozemo denisati kao Tt, gde je kombinator T uveden u
odeljku 2.7. Razlog tome je sto ce ovako denisan 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 = Vf nt = tf n = 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


denicija 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
sledbeniku zbira n i prethodnika od m, sto je zgodnije zbog konteksta u
5.2. Aritmetika u kombinatornoj logici 67
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 = Z mn((

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 deniciju 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 ksnoj tacki.
3. Zadatak je da se pronade kombinator

uz pomoc kombinatora

iz
prethodnog zadatka. Koristimo rekurzivnu deniciju stepenovanja preko
mnozenja.
n
0
= 1, n
(m
+
)
= n
m
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 ksnoj
tacki.
68 ODELjAK 5. Iskazna logika i aritmetika
5.3. Rekurzivne funkcije
FALI Petar Simovic i Nikola Nikolov
1. Zadatak je da se pronade iskazan program A koji je t ili f . Skup S je
izracunjiv ako postoji program A takav da An = t ; za svaki n iz skupa S
i An = t ; za svako n koje ne pripada skupu S. Kazemo da takav program
A racuna skup S, a skup S je izracunjiv ako postoji takav program A.
Program A za svaki dati broj n racuna da li on pripada skupu S akko
An = t , ili ne pripada akko An = f . Na primer skup E svih parnih
brojeva je izracunjiv. Postoji program :
A : A0 = t, A1 = f, A2 = t, A3 = f, za svaki paran broj n: An = t, a za
svaki neparan m :An = f .
Resenje:
Osobina broja da je paran je kljuc resenja i jedina osobina koja zadovoljava
dva uslova:
(a) 0 je paran broj,
(b) Za svaki pozitivan broj n, n je paran ako je njegov predhodnik
neparan.
Dakle nama treba program A koji za:
(a) A0 = t
(b) Za svaki pozitivan broj n,
An = N(A(Pn))
gde je N negacioni program tj. program negacija , a (Pn) je pred-
hodnik.
Treba nam program A koji za svaki pozitivan broj n ili nulu daje resenje
po formuli:
An = Znt(N(A(Pn)))
2. Relacioni program stepena 2 je program koji za bilo koje brojeve a i b
daje jednu od dve mogucnosti tako da je Aab = t ili Aab = f . Koristimo
svojstvo > (strogo vec od):
8 > 5 = t, 4 > 9 = f, 4 > 4 = f.
Sada nam treba program koji racuna za date brojeve a i b da li je a>b:
(a) Ako: a>b = t => gab = t
(b) Ako: ab = f => gab = f
5.3. Rekurzivne funkcije 69

Sto su ustvari pocetni pomocni uslovi za pravljenje programa g; Znaci:


(a) Ako a = 0, onda a>b = false
(b) Ako a ,= 0, odna:
i. Ako b = 0, onda a>b = true
ii. Ako b ,= 0, onda a>b = true akko (a 1)>(b 1)
Resenje:
(a) Ako Za = t onda gab = f
(b) Ako Za = f onda :
i. Ako Zb = t onda gab = t
ii. Ako Zb = f onda gab = g(Pa)(Pb)
gab = Zaf(Zbt(g(Pa)(Pb)))
3. Supstitucija:
Ako su f : i N
k
N i g
1
...g
k
: N
n
N u klasi, onda je i h :N
n
N
denisano sa h(

x ) = f (g
1
(

x ), ..., g
h
(

x )) u klasi
1
,
2
, ...,
n
,
h
kom-
binatori koji denisu f, g
1
...g
h
= kombinator koji denise h:
x
1
...x
n
= (
1
x
1
...x
n
)...(
h
x
1
...x
n
)
= [x
1
...x
n
](
1
x
1
...x
n
)...(
h
x
1
...x
n
)
4. Rekurzija:
Ako su funkcije f :N
n
N i g :N
n+2
N u klasi, onda je i funkcija
h :N
n+1
N denisana sa:
h(

x , 0) = f(x)
h(

x , y + 1) = g(

x , y, h(

x , y))
y 1; h(

x , y) = g(

x , P
y
, h(

x , P
y
))
takodje u klasi
, su kombinatori koji denisu f i g
je kombinator koji denise h
x
1
...x
n
y = Zy(x
1
...x
n
)(x
1
...x
n
(Py)(x
1
...x
n
(Py)))
5. Minimizacija:
Ako je funkcija f : N
n+1
N u klasi onda je funkcija h : N
n
N u
oznaci:
h(

x ) = y(f(

x , y) = 0) =
70 ODELjAK 6. KONFLUENCIJA, -RA

CUN
(a) Najmanje y, tada je f(

x , z) denisano za sve z y i f(

x , y) = 0 ,
(b) nedenisano, ako takvo y ne postoji.
kombinator koji danise f jednacinu:
A
1
yx
1
...x
n
= Z(x
1
...x
n
y)y(A
1
(V fy))x
1
...x
n
6. Konuencija, -racun
6.1. Konuencija za CL
FALI Milica Sudar i Tamara Baralic
6.2. -racun
Aleksandar 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 najos-
novnije nacine kombinovanja operatora ili funkcija radi formiranja novih oper-
atora.
Alfabet -racuna cine:
beskonacan skup promenljivih x, y ,z, . . .
pomocni simboli , ., (, ), =.
-term se denise na sledeci nacin:
1. promenljive su -termi;
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 koje M, N i x denisemo M
x
N
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))
x
z.y
=
u
.(u(
z
.y)).
71
72 ODELjAK 6. KONFLUENCIJA, -RA

CUN
FALI Ovo dole predstaviti kao sto je predstavljen jednakosni racun CL u
4.1. (drzati se te mustre).
Opsta svojstva -racuna:
1.
x
.M =
y
.M
x
y
y , FV (M), gde je FV (M) skup slobodnih promenljivih
terma M;
2. (
x
.M)N = M
x
N
;
3. X = X (reeksivnost);
4. X = Y Y = X (simetricnost);
5. X = Y Y = Z X = Z (tranzitivnost);
6. X = Y XZ = Y Z;
7. X = Y ZX = ZY ;
8. X = Y
z
.X =
z
.Y .
Zadaci:
1. Zapisati sledece skracene -terme u punom obliku:
(a) xyz(yx) Resenje: (((xy)z)(yx)).
(b)
x
.uxy Resenje: (
x
.((ux)y)).
(c)
u
.u(
x
.y) Resenje: (
u
.(u(
x
.y))).
(d) (
u
.vuu)zu Resenje: (((
u
.((vu)u))z)y).
(e) ux(yz)(
v
.vy) Resenje: (((ux)(yz))(
v
.(vy))).
(f) (
xyz
.xz(yz))uvw Resenje: ((((
x
.(
y
.(
z
.((xz)(yz)))))u)v)w).
FALI Ovo dole srediti u formi resenja prvog zadatka.
2. (Pomoc: terme prvo predstaviti u punom obliku)
(a) Podvuci sva pojavljivanja terma xy u termu
xy
.xy.
Resenje: (
x
.(
y
.(xy)))
(b) Podvuci sva pojavljivanja terma uv u termu x(uv)(
u
.v(uv))uv.
Resenje: ((((x(uv))(
u
.(v(uv))))u)v)
6.2. -racun 73
(c) Da li se term
u
.u pojavljuje u termu
u
.uv?
Resenje: Ne, zato sto je
u
.uv (
u
.(uv))
3. Izvrsiti sledece supstitucije:
(a) (
y
.x(
w
.vwx))
x
(uv)
Resenje:
y
.uv(
w
.vw(uv))
(b) (
y
.x(
x
.x))
x
(y.xy)
Resenje:
y
.(
y
.xy)(
x
.x)
(c) (y(
v
.xv))
x
(y.vy)
Resenje: y(
z
.(
y
.vy)z), gde je z , v, y, x
(d) (
x
.zy)
x
(uv)
Resenje:
x
.zy
4. (a) Zapisati sledece skracene -terme u punom obliku:
i. xx(xxx)x
Resenje: (((xx)(xxx))x)
ii. vw(
xy
.vx)
Resenje: ((vw)(
x
.(
y
.(vx))))
iii. (
xy
.x)uv
Resenje: (((
x
.(
y
.x))u)v)
iv. w(
xyz
.xz(yz))uv
74 ODELjAK 7. Prosti tipovi
Resenje: (((w(
x
.(
y
.(
z
.((xz)(yz))))))u)v)
(b) Podvuci sva pojavljivanja terma xy u sledecim termima:
i. (
xy
.xy)xy
Resenje: (((
x
.(
y
.(xy)))x)y)
ii. (
xy
.xy)(xy)
Resenje: ((
x
.(
y
.(xy)))(xy))
iii.
xy
.xy)(xy)
Resenje: (
x
.(
y
.((xy)(xy))))
(c) Proveriti da li se neki od sledecih terma pojavljuje kao podterm u
termima iz (a) i (b):
i.
y
.xy
Resenje: Pojavljuje se u (b)i. i (b)ii.
ii. y(xy)
Resenje: Ne pojavljuje se nigde.
iii.
xy
.x
Resenje: Pojavljuje se u (a)iii.
6.3. Konuencija za -racun
FALI Stefan Virag, Nikola Cimbaljevic i Milos Radosavljevic
7. Prosti tipovi
7.1. -racun s tipovima
FALI Nikola Spasojevic, Srdan Miljevic i Milomir Radojevic
7.2. CL s tipovima
FALI Stefan Zaric, Ljubica Peleksic i Milica Kojicic
75
8. Uvod u Haskel
8.1. Funkcionalno programiranje
FALI Aleksandar Preocanin, Aleksandar Milosavljevic i Nikola Dragojlovic
FALI Nikola Vidic, Milan Teodorovic i Jovan Radoicic
8.2. Haskel
8.3. Izvodenje aritmetickih operacija
8.4. Liste
8.5. Funkcije viseg reda
76
9. Neodlucivost
9.1. Gedelovo kodiranje
FALI Jana Milutinovic, Nikola Maric i Petar Manojlovic
9.2. Dokaz neodlucivosti za CL
FALI Marija Vlaskovic,
-
Dorde Urosevic i Petar Mladenovic
77
78 ODELjAK 9. Neodlucivost
Literatura
[1] H.P. Barendregt, The Lambda calculus: its syntax and seman-
tics, Studies in Logic and the Foundations of Mathematics, vol. 103, Else-
vier, Amsterdam, 1984 (dostupno na http://gen.lib.rus.ec/)
[2] H.P. Barendregt and E. Barendsen, Introduction to Lambda Cal-
culus, skripta, 1994 (dostupno na http://gen.lib.rus.ec/)
[3] P.R. Halmos, How to write mathematics, LEnseignement
Mathematique, vol. 16 (1970), pp. 123-152
http://www.math.uga.edu/ azo/courses/halmos.pdf
[4] , How to talk mathematics, Notices of the AMS, vol. 21 (1974),
pp. 155-158
http://www.math.northwestern.edu/graduate/Forum/HALMOS.html
[5] J.R. Hindley and D. Meredith, Principal type-schemes and condensed
detachment, Journal of Symbolic Logic, vol. 55 (1990), pp. 90105
[6] J.R. Hindley and J.P. Seldin, Lambda-calculus and combinators,
an introduction, Cambridge University Press, Cambridge 2008 (dostupno
na http://gen.lib.rus.ec/)
[7] R. Smullyan, To Mock a Mockingbird, Alfred A. Knopf, Publisher,
New York, 1985 (dostupno na http://gen.lib.rus.ec/)
79
Indeks
81

You might also like