BER AKNINGSBARHET F OR DATALOGER Fran till P Kent Petersson Institutionen for Datavetenskap Goteborgs Universitet / Chalmers 412 96 Goteborg, Sweden
ii Kent Petersson Department of Computer Science Goteborgs Universitet / Chalmers 412 96 Goteborg (e-mail: kentp@cs.chalmers.se) Copyright c 1987 Kent Petersson
iii Forord Denna bok har vaxt fram ur forelasningsanteckningar som jag skrivit for kursen Teoretisk Datalogi som ingar i Matematikerlinjens tredje arskurs vid Goteborgs Universitet. Forelasningsanteckningarna har sin tur vaxt fram under de fyra ar som jag varit ansvarig for kursen. Anledningen till att jag borjade skriva egna anteckningar var att jag tyckte att de bocker som fanns tillgangliga inte tog upp amnet berakningsbarhet ur en datalogisk synvinkel. Det kandes inte meningsfullt att agna en stor del av kursen till att deniera syntax och semantik for en berakningsmodell (Turing-maskiner) som var sa olik de berakningsmodeller som studenterna var vana vid. I synnerhet inte nar problemen med att beskriva syntax och semantik for vanliga programmeringssprak ar sa centrala inom datalogi. Genom att valja en berakningsmodell som liknar ett vanligt programmeringssprak far man, som jag ser det, tva fordelar: Dels ser studenterna sambandet med sin ovriga verksamhet, och dels kan man inom kursens ram ta upp manga datalogiska problem som har med programmeringssprak att gora. Eftersom jag introducerar ett mycket enkelt programmeringssprak som berakningsmodell, kan jag till och med formellt deniera bade syntax och semantik for detta sprak. Jag hoppas att denna utgangspunkt gor att sambandet mellan de problem som tas upp i kursen och vanliga datalogiska problem blir mer framtradande. Jag ar mycket tacksam for de synpunkter pa tidigare versioner av forelasningsanteckningarna som jag fatt bade fran elever och fran olika medlemmar i Programmeringsmetodikgruppen. Diskussionerna i Programmeringsmetodikgruppen om funktionella sprak och typteori har dessutom i mycket stor utstrackning paverkat min installning till datalogiska problem i allmannhet. Jag ar medveten om att boken fortfarande innehaller felaktigheter, en del orsakade av min tankloshet, andra av texthanteringssystemets fantastiska formaga att hela tiden gora som jag skriver och inte som jag vill!!! Synpunkter och papekanden om innehall och tryckfel mottages darfor med stor tacksamhet. Goteborg i december '87 K P
iv
Innehall 1 INTRODUKTION 1 2 M ANGDL ARA 7 2.1 Naturliga tal : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 2.2 Sanningsvarden : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9 2.3 Tecken : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10 2.4 Heltal : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10 2.5 Sekvenser eller listor : : : : : : : : : : : : : : : : : : : : : : : : : : : 11 2.6 Cartesiska produkter : : : : : : : : : : : : : : : : : : : : : : : : : : : 12 2.7 Disjunkta unioner : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 12 2.8 Andra mangdbildningsoperationer : : : : : : : : : : : : : : : : : : : : 13 2.9 Matematiska funktioner : : : : : : : : : : : : : : : : : : : : : : : : : 15 2.9.1 Partiella och totala funktioner : : : : : : : : : : : : : : : : : : 15 2.9.2 Injektiva, surjektiva och bijektiva funktioner : : : : : : : : : : 16 2.9.3 Komposition av funktioner : : : : : : : : : : : : : : : : : : : : 19 2.9.4 Funktioner fran naturliga tal : : : : : : : : : : : : : : : : : : : 21 2.9.5 Funktioner fran Bool : : : : : : : : : : : : : : : : : : : : : : : 25 2.9.6 Funktioner fran listor : : : : : : : : : : : : : : : : : : : : : : : 26 3 BER AKNINGSBARA FUNKTIONER 29 3.1 Upprakningsbara mangder : : : : : : : : : : : : : : : : : : : : : : : : 29 3.2 En berakningsmodell programspraket P : : : : : : : : : : : : : : : 34 3.3 Denition av programsprak syntax : : : : : : : : : : : : : : : : : : 36 3.3.1 Grammatiker : : : : : : : : : : : : : : : : : : : : : : : : : : : 36 3.3.2 Chomsky hierarkin : : : : : : : : : : : : : : : : : : : : : : : : 39 3.3.3 BNF : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 43 3.3.4 Formella sprak : : : : : : : : : : : : : : : : : : : : : : : : : : 44 3.4 P:s syntax : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 47 3.5 Abstrakt syntax : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 49 3.6 Denition av programsprak semantik : : : : : : : : : : : : : : : : 54 3.7 P:s semantik : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 57 3.8 Forkortningar : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 71 3.8.1 Satsforkortningar : : : : : : : : : : : : : : : : : : : : : : : : : 71 3.8.2 Uttrycksforkortningar : : : : : : : : : : : : : : : : : : : : : : : 77 3.8.3 Testforkortningar : : : : : : : : : : : : : : : : : : : : : : : : : 80 v
vi INNEHALL 3.9 Berakningar med andra dataobjekt : : : : : : : : : : : : : : : : : : : 84 3.10 P-program som dataobjekt : : : : : : : : : : : : : : : : : : : : : : : : 94 3.11 En interpretator for P-program skriven i P : : : : : : : : : : : : : : : 105 3.12 Nagra icke-berakningsbara funktioner : : : : : : : : : : : : : : : : : : 113 3.13 Rekursion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 124 4 BER AKNINGSBARA M ANGDER 129 4.1 Rekursivt enumerabla mangder : : : : : : : : : : : : : : : : : : : : : 129 4.2 Avgorbara mangder : : : : : : : : : : : : : : : : : : : : : : : : : : : : 138 4.3 Predikatlogik ar oavgorbar : : : : : : : : : : : : : : : : : : : : : : : : 144 5 -KALKYL 149 5.1 Inledning : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 149 5.2 -notation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 150 5.2.1 Abstraktion : : : : : : : : : : : : : : : : : : : : : : : : : : : : 150 5.2.2 Applikation : : : : : : : : : : : : : : : : : : : : : : : : : : : : 153 5.3 -kalkyl : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 155 5.3.1 Berakningsregler : : : : : : : : : : : : : : : : : : : : : : : : : 161 5.3.2 Likhetsregler : : : : : : : : : : : : : : : : : : : : : : : : : : : 169 5.3.3 Kombinatorer : : : : : : : : : : : : : : : : : : : : : : : : : : : 171 5.3.4 Representation av naturliga tal och andra data 5.3.5 Rekursion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 175 5.4 -kalkyl och berakningsbarhet : : : : : : : : : : : : : : : : : : : : : : 178 5.4.1 Oversattning fran P-program till -termer : : : : : : : : : : : 178 5.4.2 En interpretator for -termer skriven i P : : : : : : : : : : : : 183 6 BER AKNINGSMODELLER 191 6.1 Andliga tillstandsmaskiner : : : : : : : : : : : : : : : : : : : : : : : : 191 6.2 Turing maskiner : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 201 6.3 Rekursiva funktioner : : : : : : : : : : : : : : : : : : : : : : : : : : : 209 7 LITTERATURH ANVISNINGAR 213 8 BETECKNINGAR 221 9 SATSER OCH DEFINITIONER 229 A NAGRA BEVISMETODER 239 B NAGRA SATSER UTAN BEVIS 243