Formaliseringen af beregnelighed

Relaterede dokumenter
Ufuldstændighed, mængdelære og beregnelighed

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931

Gödels ufuldstændighedssætninger

Hvad er et tal? Dan Saattrup Nielsen

Gödels ufuldstændighedssætninger

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides

Noter til Perspektiver i Matematikken

Beregnbarhed, diagonalisering og matematikkens grundlag

Selvreference i begrænsningsresultaterne

Grundlæggende Matematik

Skriftlig Eksamen Beregnelighed (DM517)

Grundlæggende Matematik

Matematiske metoder - Opgavesæt

DM517:Supplerende noter om uafgørlighedsbeviser:

Henrik Bulskov Styltsvig

De rigtige reelle tal

Elementær Matematik. Mængder og udsagn

Tal. Vi mener, vi kender og kan bruge følgende talmængder: N : de positive hele tal, Z : de hele tal, Q: de rationale tal.

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

3. klasse 6. klasse 9. klasse

Introduktion til differentialregning 1. Jens Siegstad og Annegrethe Bak

Den sproglige vending i filosofien

Noter om primtal. Erik Olsen

Den moderne grundlagsdiskussion. Tirsdag den 22. November 2011

Formelle systemer og aksiomatisk mængdelære

Turing og den universelle maskine

Matematisk modellering og numeriske metoder. Lektion 16

Trekanter. Frank Villa. 8. november 2012

Løsning af simple Ligninger

Matematik samlet evaluering for Ahi Internationale Skole

Notat om underleverandører af software til medicinsk udstyr Specielt med fokus på fortolkere, hvor nyt udstyr let kan genereres

t a l e n t c a m p d k Matematik Intro Mads Friis, stud.scient 7. november 2015 Slide 1/25

Eksempel på den aksiomatisk deduktive metode

Baggrundsnote om logiske operatorer

Hvad er formel logik?

Evaluering af matematik undervisning

Gödels ufuldstændighedssætninger

1 Beregnelighed. 1.1 Disposition. 1.2 Præsentation. Def. TM. Def. RE/R. Def. 5 egenskaber for RE/R. Def. NSA. Bevis. NSA!RE. Def. SA. Bevis. SA!

Forslag til løsning af Opgaver til afsnittet om de naturlige tal (side 80)

Logik. Af Peter Harremoës Niels Brock

Matematikkens metoder illustreret med eksempler fra ligningernes historie. Jessica Carter Institut for Matematik og Datalogi, SDU 12.

Gentzen og de transfinitte bevismetoder

Appendiks 6: Universet som en matematisk struktur

Kalkulus 2 - Grænseovergange, Kontinuitet og Følger

1 < 2 og 1 > 2 (2.1) er begge udsagn. Det første er sandt det andet er falsk. Derimod er

3 Algebraisk Specifikation af Abstrakte Datatyper.

t a l e n t c a m p d k Matematik Intro Mads Friis, stud.scient 27. oktober 2014 Slide 1/25

MM537 Introduktion til Matematiske Metoder

Omskrivningsregler. Frank Nasser. 10. december 2011

Matematik YY Foråret Kapitel 1. Grupper og restklasseringe.

Teoretiske Øvelsesopgaver:

Induktive og rekursive definitioner

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet

Hvad er matematik? C, i-bog ISBN L&R Uddannelse A/S Vognmagergade 11 DK-1148 København K Tlf: info@lru.

Oprids over grundforløbet i matematik

Om begrebet relation

Logik. Helge Elbrønd Jensen og Tom Høholdt Fortolket af Michael Elmegård og Øistein Wind-Willassen.

Matematikkens fundament i krise

Thomas Bolander og Helge Elbrønd Jensen. 7. marts 2005

Matematisk induktion

MATEMATIK. Formål for faget

DM547 Diskret Matematik

DM549 Diskrete Metoder til Datalogi

Selam Friskole Fagplan for Matematik

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

16. december. Resume sidste gang

Gult Foredrag Om Net

Vinkelrette linjer. Frank Villa. 4. november 2014

Ja! det beviste vi uge 16+17

Punktmængdetopologi. Mikkel Stouby Petersen. 1. marts 2013

Skriftlig Eksamen Beregnelighed (DM517)

Polynomiumsbrøker og asymptoter

Undersøgende aktivitet om primtal. Af Petur Birgir Petersen

Projekt 7.9 Euklids algoritme, primtal og primiske tal

Projekt 3.5 faktorisering af polynomier

MATEMATIK. GIDEONSKOLENS UNDERVISNINGSPLAN Oversigt over undervisning i forhold til trinmål og slutmål

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

University of Copenhagen Faculty of Science Written Exam - 3. April Algebra 3

Undervisningsplan for matematik

Pointen med Funktioner

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Skriftlig Eksamen Diskret matematik med anvendelser (DM72)

Hvad er matematik? C, i-bog ISBN

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger

Klassen er sammenlæst, altså 5 og 6 klasse på en og samme tid. Samtidig er klassen pt på ca 11 elever ialt.

Skolens formål med faget matematik følger beskrivelsen af formål i folkeskolens Fælles Mål:

Flere ligninger med flere ukendte

Nogle grundlæggende begreber

Repræsentation af tal

Algebra - Teori og problemløsning

Opgaver hørende til undervisningsmateriale om Herons formel

Affine - et krypteringssystem

Fejlkorligerende køder Fejlkorrigerende koder

En martingalversion af CLT

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Formativ brug af folkeskolens prøver årets resultater på landsplan Den skriftlige prøve i matematik FP10 maj 2019

π can never be expressed in numbers. William Jones og John Machins algoritme til beregning af π

Funktionsterminologi

π er irrationel Frank Nasser 10. december 2011

Transkript:

Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Toke Høiland-Jørgensen Tim Tejsner Vejleder: Anders Madsen Videnskabsfagsprojekt, efteråret 2012 Matematik RUC

Resume Med dette projekt forsøger vi at kortlægge udviklingen af de forskellige matematiske definitioner af beregnelighed og hvordan de er konvergeret til den definition vi anvender i dag. Vi behandler denne udvikling som eksemplarisk for udviklingen af nye matematiske teorier, og forsøger på den baggrund at blive klogere på hvad det er for nogle mekanismer der spiller sammen når ny matematik udvikles. Det gør vi ved at lave en historisk gennemgang af udviklingen i den teoretiske matematik, fra Hilbert definerede sine problemer i år 1900 og frem til Church og Turings artikler i 1936-37. I gennemgangen forsøger vi at trække gennemgående tendenser frem, der kan hjælpe med at belyse det overordnede spørgsmål. Som et værktøj til dette anskuer vi forfatternes motivation ud fra en overordnet skelnen mellem indre og ydre motivation ift. matematikken. Vi konkluderer at den overordnede tendens i udviklingen er drevet af en indre matematisk motivation, der har sine rødder i Hilberts ideal med at formalisere matematikken i starten af 1900-tallet. Definitionen af begrebet beregnelighed opstår altså som en del af bestræbelserne på at løse de udfordringer matematikken har i denne periode. Dog anser Turing det for afgørende at analysere hvordan mennesker udfører beregninger, og lægger en sådan analyse til grund for udviklingen af Turing-maskinen; en tilgang der gør at hans definition på beregnelighed bliver den der får størst betydning sidenhen. Der er altså tale om en udvikling hvor den internt matematiske motivation vekselvirker med ydre faktorer som får stor betydning senere hen. Dette er ikke noget enestående eksempel i matematikken, og viser hvordan beregnelighedsbegrebet kan anses som eksemplarisk for udviklingen af matematik mere generelt. Abstract With this project, we try to map the development of the various mathematical definitions of computability and how they converged to the definition we use today. We treat this development as exemplary of the development of new mathematical theories, and attempt to understand which mechanisms are in play, when new mathematics are developed. We do this by giving a historical overview of developments in the theoretical mathematics from Hilbert s problems in 1900 and up to the Church and Turing articles of 1936 and 37. In this overview we try to extract recurring trends, which can help to elucidate the overall issues. As a tool for this we analyse the authors motivation, distinguishing between intrinsic and extrinsic motivation in relation to mathematics. We conclude that the overall trend in this development was driven by an inner mathematical motivation that had its roots in Hilbert s quest to formalise mathematics at the beginning of the 1900s. The definition of computability arose as part of efforts to resolve the mathematical challenges in this period. However, Turing also considered it vital to analyse how people perform computations and uses this analysis as a basis for the development of the Turing-machine. This approach to computability also contributes to his definition having the greatest impact in subsequent history. In summary, the internal mathematical motivation has interacted with external factors, which has gone on to become important later on. This is not a unique example in mathematics, and shows how the concept of computability can be considered as exemplary for the development of mathematics more generally. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 2 af 26

Indhold 1 Introduktion 4 1.1 Problemformulering......................................... 4 1.2 Disposition.............................................. 5 2 Formelle teorier 7 3 Hilbert og askiomatiseringen af matematikken 9 4 Gödels ufuldstændighedssætning 11 5 Rekursive funktioner 13 5.1 Primitive rekursive funktioner................................... 13 5.2 Generelle rekursive funktioner................................... 14 6 Church s λ-calculus 16 6.1 Gennemgang af λ-calculus..................................... 16 7 Turing-maskinen 19 8 Opsummering og diskussion 22 9 Konklusion 24 10 Referencer 25 Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 3 af 26

1 Introduktion Med dette projekt vil vi forsøge at kortlægge udviklingen af de forskellige matematiske definitioner af beregnelighed og hvordan de er konvergeret til den definition vi anvender i dag. Det er interessant dels pga. den store betydning beregnelighed har haft for teknologiudviklingen sidenhen, men også fordi det er slående at så mange forskellige definitioner på det samme er blevet udviklet inden for så kort tid af hinanden; definitioner der siden har vist sig at være ækvivalente. Vi behandler denne udvikling som eksemplarisk for udviklingen af nye matematiske teorier, og vil på den baggrund forsøge at blive klogere på hvad det er for nogle mekanismer der spiller sammen når ny matematik udvikles. En anden ting der gør beregnelighedsbegrebet interessant, er at der ikke alene er tale om en række forskellige teorier der er blevet udviklet parallelt og som siden har vist sig at være ækvivalente. Disse teorier er også blevet bredt accepteret (i form af Church-Turing-tesen) som de eneste mulige definitioner på beregnelighed. Det kunne altså tyde på at man, ved at definere beregnelighed, ikke alene har udviklet et nyt formelt matematisk begreb, men også formaliseret noget mere universelt, nemlig hvad det vil sige at udføre beregninger. Det rejser en række filosofiske spørgsmål som vi ikke vil behandle nærmere her, men som er en del af vores motivation for at beskæftige os med emnet. Idéen om at gøre beregning til en mekanisk handling der kan udføres af en maskine, stammer helt tilbage fra Leibniz, der i 1600-tallet byggede den første maskine der var i stand til at udføre alle fire grundlæggende algebraiske operationer (addition, subtraktion, multiplikation og division). Leibniz fremsatte også idéen om at samle al viden og bygge en maskine der ville kunne udlede ny viden derfra. Siden blev Leibniz ideer videreudviklet af Boole, som udviklede en algebraisk notation for logiske udtryk [Dav00]. Det var dog først i starten af 1900-tallet at arbejdet med at formalisere matematikken for alvor tager fat. Hilbert startede, med formuleringen af sine 23 problemer i år 1900, en proces der havde til formål at sikre et solidt formelt fundament for matematikken, og Hilbert arbejdede selv målrettet for dette med sit efterfølgende program. Det førte til formuleringen af Entscheidungsproblemet i 1928, og helt op i 30 erne var Hilbert overbevist om at det ville lykkes at finde en måde hvorpå alt matematik kunne formaliseres konsistent 1, og beviser udledes ad mekanisk vej. Med Gödels resultater i 1930 erne blev det endegyldigt bevist at Hilberts drøm ikke kunne realiseres. Definitionen af beregnelighed som formelt begreb skete med de kendte publikationer af Church og Turing i 1930 erne som skelsættende. Church kom som den første med et bud på en formel definition af beregnelighed, i form af sin λ-calculus. Samtidig fremsatte han sin tese om at denne formelle definition faktisk var definitiv; altså at det intuitive begreb beregnelighed er ækvivalent med den formelle definition. Og ydeligere at der ikke kan defineres nogen form for beregnelighed som ikke er ækvivalent med den formelle definition. Turing genfremsatte siden samme tese i relation til sin Turing-maskine, efter at have vist at Turing-maskinen netop var ækvivalent med Church s λ-calculus. Siden er tesen blevet bredt accepteret som Church-Turing-tesen. Det er ovenstående udvikling vi ønsker at behandle i detaljer i dette projekt. Nærmere bestemt ønsker vi at se på hvordan den moderne definition af begrebet beregnelighed opstod, og hvad det var der fik den brede konsensus om Church-Turing-tesen til at opstå. Det vil vi gøre ved at gennemgå den matematiske udvikling omkring formelle teorier og beregnelighed fra starten af 1900-tallet og indtil beregnelighedsbegrebet opstod i slutningen af 1930 erne. 1.1 Problemformulering Det overordnede spørgsmål vi ønsker at besvare med dette projekt er: Hvad var motivationen bag den udvikling der i starten af 1900-tallet førte til den matematiske definition af beregnelighed? 1 Dvs. uden interne selvmodsigelser. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 4 af 26

Det vil vi svare på ved at lave en historisk gennemgang af udviklingen i den teoretiske matematik, fra Hilbert definerede sine problemer i år 1900 og frem til Church og Turings artikler i 1936-37. I gennemgangen vil vi forsøge at trække gennemgående tendenser frem, der kan hjælpe med at belyse det overordnede spørgsmål, og til sidst vil vi sammendrage vores gennemgang til et svar på problemformuleringen. Det er klart at en matematikers motivation for at arbejde med det emne han gør, ikke nødvendigvis er tydelig for udenforstående; vi vil derfor støtte os til sekundære kilder når det er nødvendigt. Desuden vil vi anskue forfatternes motivation ud fra en overordnet skelnen mellem indre og ydre motivation ift. matematikken. Indre motivation vil sige at arbejdet er motiveret af at løse et problem eller undersøge noget der er et internt matematisk anliggende, og ikke (nødvendigvis) har nogen forbindelse til omverdenen og den virkelighed matematikken indgår i. Omvendt skal ydre motivation forstås som det tilfælde hvor nye landvindinger i matematikken er motiveret af et problem eller en udvikling i den omgivende virkelighed, som matematikken ønskes anvendt til at løse. Denne skelnen mellem indre og ydre motivation fungerer som et værktøj til at analysere motivationen bag udviklingen af matematikken, og det er en anskuelsesvinkel som sætter matematikken i en kontekst der kan vise dens sammenspil med den omgivende virkelighed. Det er vigtigt fordi analysen af dette samspil kan bruges eksemplarisk til at få en mere generel indsigt i hvordan matematikken udvikles. 1.2 Disposition Projektet er inddelt i følgende overordnede afsnit Formelle teorier (afsnit 2). Formelle teorier i forskellige afskygninger er en fundamental del af arbejdet med formaliseringen og aksiomatiseringen af matematikken, og bestræbelserne på at formalisere beregnelighedsbegrebet starter med formelle teorier; derfor finder vi det nødvendigt at opridse hvad en formel teori er. Dette afsnit introducerer formelle teorier i en moderne fremstilling, så begreberne er på plads til den følgende gennemgang. Hilbert og aksiomatiseringen af matematikken (afsnit 3). Udviklingen af formaliseringen af beregnelighed var en del af en tendens i starten af det 20. århundrede hen imod en mere generel formalisering af matematikken. Hilberts definition af en række problemer ved århundredeskiftet, og hans efterfølgende formalistiske program, var symptomatiske for denne tendens. I dette afsnit opridser vi Hilberts arbejde og sætter det i relation til den overordnede tendens, for at tydeliggøre den sammenhæng som arbejdet med at definere beregnelighed foregik i. Gödels ufuldstændighedssætning (afsnit 4). Gödels ufuldstændighedssætning var, ud over at være det endelige dødsstød til Hilberts program, en vigtig forudsætning for arbejdet med at definere beregnelighed. I dette afsnit opridser vi hvad Gödels ufuldstændighedssætning går ud på, og sætter hans bidrag til den teoretiske matematik i kontekst af den senere udvikling. Rekursive funktioner (afsnit 5). Rekursive funktioner var den første formelle teori, hvor en udledning samtidig giver en algoritme. I første omgang viste teorien sig ikke at være dækkende over begrebet beregnelighed, men den er senere blevet udvidet til at være ækvivalent med de øvrige formelle definitioner. I dette afsnit redegør vi for både den oprindelige definition (der nu kaldes primitivt rekursivt funktioner), og den senere udvikling af teorien, og sætter den i relation til de øvrige udviklinger i samme periode. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 5 af 26

Church s λ-calculus (afsnit 6). Church mente som den første at have fundet en dækkende formel definition på beregnelighed, i form af hans λ-calculus. I dette afsnit redegør vi for λ-calculus, og dykker ned i hvordan den forholder sig til tidligere definitioner af rekursive funktioner. Turing-maskinen (afsnit 7). Turing-maskinen er den definition af beregnelighed der har haft størst betydning for udviklingen af den moderne computer. I dette afsnit forklarer vi hvordan en Turing-maskine virker, og hvordan den forholder sig til de øvrige definitioner på beregnelighed. Derudover kommer vi med et bud på hvorfor det var Turings definition på beregnelighed der fik størst betydning efterfølgende, og hvad det var der fik ham til at komme frem til den definition. Opsummering og diskussion (afsnit 8). I dette afsnit opsummerer vi på den historiske gennemgang i de foregående afsnit og forsøger at trække nogle tendenser frem der kan kaste lys over hvilken motivation der har været bag udviklingen af den formelle definition af beregnelighed vi kender i dag. Konklusion (afsnit 9) I dette afsnit konkluderer vi på vores problemformulering ud fra gennemgangen i de foregående afsnit. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 6 af 26

2 Formelle teorier En formel teori 2 er en måde at beskrive et matematisk eller logisk system på, der består af rent formelle regler og mekaniske udledningsprocedurer. Det består af et formelt sprog, samt en række teoremer formuleret i sproget. Det første eksempel på et formelt sprog er (formentlig) udviklet af Gottlob Frege i 1879 [Dav88]. Han kaldte det for Begriffsschrift, eller begrebsskrift, og brugte det til at udtrykke prædikatlogikken på en måde så udledninger kunne reduceres til ren symbolmanipulation. En afart af dette formelle system er det vi i dag kender som førsteordenslogik. Formelle teorier spiller en stor rolle for den matematiske begrebsudvikling og arbejdet med at definere beregnelighed formelt. Derfor følger her en gennemgang af de overordnede begreber for formelle teorier der anvendes i senere afsnit. Gennemgangen er baseret på [Nis11]. En formel teori T består af en endelig mængde symboler S, der kan kombineres til udtryk; mængden af udtryk kaldes U. Der lægges ingen begrænsninger på hvordan symbolerne kan kombineres til udtryk; i stedet indføres en delmængde V U af velformede formler 3 i T. De kan i princippet være hvad som helst, eneste krav er at der er en virksom metode til at afgøre om et givent udtryk er en velformet formel. Typisk defineres de velformede formler rekursivt ud fra nogle få grundformler. Med til definitionen af en formel teori følger en mængde A V af aksiomer. Der behøver ikke nødvendigvis være en virksom metode til at afgøre om en given formel er et aksiom; men hvis der er, kaldes den formelle teori for aksiomatisk. Aksiomer kan enten defineres direkte ved at opliste de velformede formler der udgør aksiomerne, eller de kan defineres som en række aksiomskemaer. Et skema forstås her som en forskrift for hvordan aksiomer dannes; fx alle velformede formler på tre symboler er aksiomer. Den sidste komponent i de formelle teorier er en endelig mængde af relationer, R 1,..., R n, kaldet slutningsregler. For slutningsreglerne gælder det at hver regel R i skal være en relation mellem k(i) velformede formler, og at der skal eksistere en virksom metode til at afgøre om en given række F 1,..., F k(i) er i relationen R i til hinanden. Hvis de er det, kaldes F k(i) en direkte konsekvens af F 1,..., F k(i) 1. En formel teori defineres altså ved at definere dens symboler, reglerne for at danne velformede formler, dens aksiomer og slutningsregler. På baggrund af disse kan man så udlede yderligere formler ved hjælp af slutningsreglerne. En velformet formel F anses for at være en konsekvens af en mængde af velformede formler P, hvis der eksisterer en ordnet følge af formler F 1,..., F k således at hvert F i er enten et aksiom, en del af P eller en direkte konsekvens af en del-følge F 1,..., F i 1 ved en af slutningsreglerne. En velformet formel F der er en konsekvens af en tom mængde P (dvs. den følger ved slutningsreglerne fra aksiomerne) kaldes et teorem i den formelle teori. Følgen af formler der leder fra udgangspunktet til konsekvensen kaldes et bevis for F fra P. Hvis der er tale om et teorem kaldes følgen blot et bevis (idet P da er tom). Som det fremgår af ovenstående er en formel teori altså udelukkende et sæt regler for symbolmanipulation der ikke nødvendigvis siger noget meningsfuldt om noget som helst (ren syntaks). Det interessante er når man definerer en bestemt formel teori som kan sige noget om et etableret matematisk teoriområde. Det er her at den formelle teori går fra at være meningsløs symbolmanipulation til at kunne fortolkes som metamatematiske udsagn, dvs. udsagn om matematikken. Teorien får altså semantisk mening. En formel teori der behandler et matematisk teoriområde siges at fortolke dette område. En af de første formelle teorier der blev skabt med det formål for øje var Alfred Whitehead og Bertrand Russell s Principia Mathematica der blev udgivet fra 1910 til 1913 [WR13]. Det var denne teori Gödel senere benyttede i beviset for hans ufuldstændighedssætning (se afsnit 4). Afhængig af den semantiske fortolkning af en formel teori, kan udtryk indeholde variable, som er særlige symboler der fungerer som stedfortrædere for andre (sekvenser af) symboler. En variabel kan være fri eller 2 En formel teori kaldes også nogle gange et formelt system; vi benytter de to udtryk synonymt i resten af rapporten. 3 Det giver nogle gange anledning til besvær at en formel teori indeholder noget der hedder en formel. Men det hedder det nu engang, så forvirringen mellem formel som adjektiv og substantiv må man vænne sig til. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 7 af 26

bundet i et givent udtryk. En fri variabel kan substitueres af et andet udtryk, mens en bunden variabel er en del af udtrykket som det ikke giver mening at udskifte. Om en variabel er fri eller bundet afhænger altså af den semantiske tolkning et formelt system tillægges. Værdien af et udtryk der indeholder frie variable, afhænger af den værdi der substitueres ind i udtrykket i stedet for den frie variabel. En fri variabel kan bindes af forskellige operatorer, fx (i talteorien) den eksistentielle operator ( ) eller den universelle ( ). Et eksempel på et udtryk (her et prædikat i talteori) der har en fri variabel er x > 2 ( x er større end 2 ); dets sandhedsværdi afhænger af hvilket tal der substitueres for x. Hvorimod i udtrykket x(x > 2) ( der eksisterer et x således at x er større end 2 ) er x bundet af, og udtrykket har derfor en sandhedsværdi (i dette tilfælde er det sandt). Formelle teorier har spillet en stor rolle i udviklingen af teorien for beregnelighed, og i de følgende afsnit præsenteres flere eksempler på formelle teorier. De defineres som hovedregel ikke eksplicit i alle deres elementer; i stedet uddrages de vigtigste egenskaber ved hver teori i den kontekst de anvendes. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 8 af 26

3 Hilbert og askiomatiseringen af matematikken David Hilbert var blandt de primære drivkræfter for den tendens i starten af det 20. århundrede der gik ud på at formalisere og aksiomatisere grundlaget for matematikken. I dette afsnit gennemgår vi hans arbejde og sætter det i relation til den mere generelle tendens, for at tydeliggøre den udvikling der lå til grund for arbejdet med at udvikle den formelle definition af beregnelighed. Hilbert s interesse for formaliseringen af matematikken kan spores helt tilbage til 1898, hvor Hilbert giver et kursus i euklidisk geometri. Emnet for kurset er netop en aksiomatisering af geometrien, som skal skabe et grundlag for at udlede egenskaber ved geometriske objekter uden at behøve at ty til intuitive metoder og hjælpemidler som tegninger og diagrammer [Dav00]. Det er imidlertid først i år 1900, da Hilbert holder et foredrag på en kongres i Paris med overskriften Mathematical Problems, at målet om at formalisere matematikken for alvor bliver ekspliciteret. I dette foredrag fremsætter Hilbert en række uløste matematiske problemer som han anser for matematikkens store udfordringer i det 20. århundrede [Hil02]. I den senere udgivne skriftlige version af sit foredrag udtrykker Hilbert sin optimistiske tilgang til løsningen af problemerne: This conviction of the solvability of every mathematical problem is a powerful incentive to the worker. We hear within us the perpetual call : There is the problem. Seek its solution. You can find it by pure reason, for in mathematics there is no ignorabimus [Hil02]. Denne optimisme præger Hilberts arbejde med formalisering op til 1930 erne. I Hilberts foredrag bliver forløberen for det vi i dag kalder en algoritme for første gang bliver defineret som noget der er værd at lede efter. I formuleringen af hans 10. problem skriver Hilbert: Given a diophantine equation with any number of unknown quantities and with rational integral numerical coefficients : To devise a process according to which it can be determined by a finite number of operations whether the equation is solvable in rational integers [Hil02]. Det er ikke første gang nogen har udtrykt idéen om at finde en proces der kan afgøre et problem i et endeligt antal skridt ; denne idé går helt tilbage til Leibniz i 1600-tallet. Men det er Hilbert der som en af de første formulerer det som et problem det er inden for matematikkens rækkevidde at løse. Det er svært at trække en lige linje fra Hilberts 10. problem og til formuleringen af teorien for beregnelighed, men problemet står alligevel som et vigtigt eksempel på Hilberts formalistiske bestræbelser de næste 30 år. Løsningen på det 10. problem bliver først realiseret i 1970 af Yuri Matijasevic [Sip06, side 155], men beviser bygger på de definitioner på beregnelighed der bliver defineret i 1930 erne [Mat93]. Perioden i starten af det 20. århundrede kaldes også for matematikkens grundlagskrise, og Hilberts arbejde skal ses som en bestræbelse på netop at skabe et solidt grundlag for matematikken. Krisen opstod da det viste sig at mange af de daværende teorier indeholdt uoverensstemmelser og paradokser. Et kendt eksempel er Russells paradoks fra simpel mængdelære, som Russell selv gjorde et ihærdigt forsøg på at komme til livs gennem udgivelsen (sammen med Alfred Whitehead) af Principia Mathematica i 1910, 1912 og 1913. Hilbert var dog ikke overbevist om dette udgjorde et tilstrækkeligt grundlag for matematikken. Han mente at konsistensen af aritmetik og mængdelære stadig var grundlæggende, åbne spørgsmål. Der var to primære skoler i denne periode Hilberts skole der var overbevist om at et formaliseret grundlag for matematikken var både opnåeligt og nødvendigt, og Brouwers intuitionistiske skole der mente at formalisme var en unødvendig leg med symboler. I tiden op til publiceringen af Gödels ufuldstændighedssætning var der stor uenighed om hvorvidt Hilberts program kunne realiseres. Flere mente at en positiv løsning ville reducere matematik til en fuldstændig mekanisk disciplin og var af den grund overbevist om at det ikke kunne lade sig gøre [Gan88]. Hilberts ideal var at formalisere matematikken til en endelig mængde aksiomer, og vise at disse aksiomer var konsistente. Målet var at basere beviset for konsistensen af al matematik på denne aksiomatisering, og Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 9 af 26

på den måde principielt bruge matematikken til at validere sig selv. I arbejdet med at opnå dette leverer Hilbert, i samarbejde med Berneys og Behmann, i årene 1917-1921 betydelige bidrig til den formelle logik [Zac05]. Resultatet af dette arbejde ses direkte i Hilbert og Ackermans lærebog i formel logik Grundzüge der theoretischen Logik [AH28]. Hilbert udtrykker selv sine bestræbelser som følger: With this new grounding of mathematics which one can appropriately call a proof theory I believe to dispose of the foundational questions in mathematics as such once and for all by turning every mathematical statement into a concretely exhibitable and rigorously derivable formula and thereby transferring the whole complex of questions into the domain of pure mathematics. [Hil30] Hilberts program er som nævnt ikke ukontroversielt, men arbejdet med formalisering af matematikken fortsætter alligevel op gennem starten af det 20. århundrede. En af de ting der kommer ud af bestræbelserne er formuleringen af Entscheidungsproblemet i 1928, som senere kommer til at spille en stor rolle for udviklingen af beregningsteorien. Entscheidungsproblemet spørger hvorvidt det er muligt at konstruere en generel algoritme der kan afgøre om en vilkårlig sætning i førsteordenslogikken kan bevises ud fra de aksiomer der gives i definitionen af den formelle teori (som vi ikke vil gå nærmere ind i her). Entscheidungsproblemet indeholder dermed en mere direkte kobling mellem logikken og algoritmebegrebet. En mindre generel udgave af dette problem blev løst (med et positivt svar) allerede i 1915 af Löwenheim [Gan88]. Hans løsning var imidlertid begrænset til førsteordenslogik hvor udtrykkene er begrænset til én variabel (såkaldt monadisk førsteordenslogik), som er væsentligt mindre udtryksfuldt end den mere generelle førsteordenslogik. Löwenheims løsning har givetvis været en del af Hilberts inspiration til at formulere det generelle Entscheidungsproblem. Hilbert selv fastholder, på trods af skeptikeres indvendinger, sin overbevisning om at det vil lykkes at finde den ultimative formalisering helt op i 1930 erne. Det er først da Gödel beviser sin ufuldstændighedssætning at Hilberts bestræbelser på den komplette formalisering endelig opgives. Selvom Hilberts projekt altså i sidste ende mislykkedes, har det ganske tydeligt medført en vigtig udvikling i arbejdet med den formelle matematik, og de problemer Hilbert har defineret undervejs har været vigtige drivkræfter for den senere udvikling. Hele den formalistiske tendens som Hilbert har været eksponent for har skabt en udvikling som har muliggjort de senere landvindinger inden for den formelle matematik. Den første, som også danner grundlag for meget af den senere udvikling, er Gödels ufuldstændighedssætning, som gennemgås i næste afsnit. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 10 af 26

4 Gödels ufuldstændighedssætning Gödel giver med sit ufuldstændighedsbevis [Göd31] et helt afgørende bidrag til teorien for formelle systemer, og til diskussionen om hvorvidt der findes uafgørlige sætninger i matematikken. Gödel viser hvordan man kan indlejre et formelt system i de naturlige tal, for herefter at udtrykke beviser som sætninger inden for talteorien. Disse sætninger kan så igen udtrykkes inden for det formelle system, hvilket gør det muligt at konstruere uafgørlige udsagn inden for systemet. Denne fremgangsmåde (senere kaldet Gödelnummerering) går igen i flere af de senere artikler. Gödel drager en parallel mellem formelle systemer og mekanisk beregnelighed som viser at de formelle systemer har været ganske afgørende i udviklingen af teorien for beregnelighed: It is well known that the development of mathematics in the direction of greater precision has led to the formalization of extensive mathematical domains, in the sense that proofs can be carried out according to a few mechanical rules [Dav65, s. 5]. Det er altså klart at Gödels arbejde ligger i forlængelse af den generelle søgen efter en aksiomatisk formalisering af matematikken, som redegjort for i forrige afsnit. Det overordnede resultat Gödel viser, er at der i enhver formel teori der er udtryksfuld nok til at repræsentere de naturlige tal og de aritmetiske operationer på dem, kan konstrueres sætninger der ikke kan bevises. Og, mere specifikt, det er ikke muligt i en sådan formel teori at bevise at teorien ikke er selvmodsigende; enhver sætning der hævder dette vil være ubeviselig i systemet selv [Göd31]. Gödel benytter et formelt system som er en variant af Principia Mathematica, og giver som en del af sin artikel en definition af primitive rekursive funktioner som han benytter i sit bevis; sidstnævnte definition er en mere præcis udgave af tidligere definitioner af primitive rekursive funktioner, som er blevet udviklet af bl.a. Hilbert [Gan88]. Disse detaljer er udeladt fra gennemgangen i det følgende, der i stedet beskriver Gödels bevis på et mere overordnet niveau. Gödel forklarer at et formelt system består af strenge af symboler, der fint kan repræsenteres som tal. Dette gøres ved at hvert symbol i det formelle system tildeles et primtal. En sekvens af symboler bliver så til en sekvens af primtal. En sådan sekvens kan så igen repræsenteres unikt som et naturligt tal. Dette gøres ved at repræsentere sekvensen n 1, n 2,..., n m som k n 1 1 k n 2 2 kn m m hvor k i er det i ende primtal (altså k 1 = 2, k 2 = 3 osv). Anvendelsen af primtal på denne måde sikrer den unikke repræsentation 4, og en formel i systemet kan dermed repræsenteres som et naturligt tal, og et bevis som en sekvens af sådanne tal. Dermed bliver udsagn om udtrykkene i systemet til udsagn om de naturlige tal, eller sekvenser deraf. Denne måde at repræsentere formelle systemer som tal, kaldes Gödelnummerering, og er et af Gödels vigtige bidrag til den teoretiske matematik. Senere benyttes teknikken af både Church og Turing i udviklingen af deres formelle systemer. Gödel viser at det kan lade sig gøre, vha. Gödelnummerering, at definere begreber som beviser og udledninger (repræsenteret ved talsekvenser) i det formelle system selv. Som eksempel giver han at man kan konstruere en formel F (v) med en fri variabel v, som, når den fortolkes intuitivt i systemet, siger v er en beviselig formel. Det vil altså sige at så længe det formelle system er udtryksfuldt nok til at udtrykke de naturlige tal, så kan man bruge Gödelnummerering til at udtrykke sætninger om systemet i systemet selv. Gödel definerer videre begrebet et klasse-udtryk, som en formel med én fri variabel (som repræsenterer et naturligt tal). Mængden af alle klasse-udtryk kan nummereres, fx efter tallenes størrelse, og herved kan det n te udtryk angives ved R(n). Yderligere defineres substitution [a; n] hvor den frie variabel i det vilkårlige klasseudtryk a erstattes af det naturlige tal n. Gödel viser at disse tre definitioner alle kan udtrykkes i det formelle system. Herved kan defineres en klasse af naturlige tal K = {n Bev[R(n); n]}, hvor Bevx angiver at x er en beviselig formel. Denne klasse af naturlige tal kan også udtrykkes i det formelle system, dvs. at der er et klasse-udtryk 4 En direkte konsekvens af aritmetikkens fundamentalsætning Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 11 af 26

S således at [S; n] i dens intuitive fortolkning siger at n er i K. Da S er et klasse-udtryk er det lig med R(q) for et naturligt tal q. Herved bliver [R(q); q] uafgørlig i det formelle system. For hvis det antages at [R(q); q] er beviselig, så er udtrykket sandt, dvs. at q ville være i K, eller at Bev[R(q); q], hvilket modsiger antagelsen. Omvendt, hvis negationen af [R(q); q] er beviselig, så ville q ikke være i K, dvs. at Bev[R(q); q] ville gælde, hvilket også er en selvmodsigelse. Med andre ord lykkedes det Gödel at konstruere en sætning i det formelle system der er fundamentalt selvmodsigende. I almindelig tale svarer det til en sætning som Denne sætning er usand. Gödels resultat har haft stor betydning, både for udviklingen af teorien for beregnelighed, men også for forståelsen af hvad matematik er og kan. Resultatet er utroligt generelt: enhver formel teori der er udtryksfuld nok til at repræsentere de naturlige tal og deres aritmetik kan, vha. Gödelnummerering, også repræsentere udtryk om sig selv. Dette er nok til at man kan konstruere en sætning som den ovenfor, hvilket gør systemet inkonsistent. Dette er altså en helt fundamental egenskab ved formelle systemer, og sætter dermed en ganske effektiv stopper for Hilberts bestræbelser på at finde én formel teori der kan repræsentere alt inden for matematikken, og samtidig være konsistent: Gödel viser simpelthen at en sådan teori helt automatisk vil være inkonsistent. Selv hvis man udvider systemet med yderligere aksiomer der skal fjerne inkonsistensen er der problemer: Gödel viser at man i så fald vil kunne konstruere en ny selvmodsigende sætning. Selvom Gödels resultat altså er et dødsstød til Hilberts formalisme, indeholder det også et element der får stor betydning for udviklingen af de senere formelle systemer hos Church, Turing og Kleene: Gödelnummerering spiller her en afgørende rolle for udtryksfuldheden af de opstillede systemer. Det er således (varianter af) Gödelnummerering der gør det muligt at skabe den selvreference der er indbygget i både rekursive funktioner, λ-calculus og Turing-maskinen der gør dem i stand til at udtrykke universelle beregningsmekanismer. Dette uddybes i de senere afsnit om hver teori, men nævnes her for at understrege betydningen af Gödels resultater som et vigtigt bindeled mellem den generelle tendens hen imod en aksiomatisering, og de efterfølgende teorier for beregnelighed. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 12 af 26

5 Rekursive funktioner Rekursion som metode kan spores helt tilbage til Euclid s algoritme, men det er ikke før Hilbert og Gödel at det bliver formaliseret. Rekursive funktioner er en klasse af funktioner defineret ud fra en bestemt formel teori. Gödel definerer rekursive funktioner i [Göd31]; denne definition udvides siden af Church og Kleene til generelle rekursive funktioner og partielle rekursive funktioner, hvor den sidstnævnte definition er ækvivalent med Church s λ-calculus og Turing-maskinen. Gödels oprindelige definition på rekursive funktioner omtales nu som primitive rekursive (et udtryk opfundet af Kleene [Kle36]), som er en delmængde af de generelle rekursive funktioner. Rekursive funktioner eksisterer altså som en formelt defineret størrelse i noget tid inden de andre definitioner på beregnelighed opstod, og de spiller som nævnt tidligere også en rolle i Gödels ufuldstændighedsbevis. Det er imidlertid først ved definitionen af de partielle rekursive funktioner at de rekursive funktioner opnår samme udtryksfuldhed som de øvrige definitioner på beregnelighed; og de defineres først af Kleene parallelt med Church s arbejde med λ-calculus. De primitive rekursive funktioner har altså fungeret som et skridt på vejen mod definitionen af beregnelighed. I dette afsnit gennemgås først de primitive rekursive funktioner, og siden udvides begrebet til de generelle rekursive og partielle rekursive funktioner. 5.1 Primitive rekursive funktioner En primitive rekursiv funktion er enhver funktion der kan defineres formelt ud fra følgende skemaer [Kle52; Kle43]: φ(x) = x (1) φ(x 1,..., x n ) = q (2) φ(x 1,..., x n ) = x i (3) φ(x 1,..., x n ) = ψ(χ 1 (x 1,..., x n ),..., χ m (x 1,..., x n )) (4) } φ(0) = q, φ(y (5a) ) = χ(y, φ(y)), } φ(0, x 1,..., x n 1 ) = q, φ(y (5b), x 1,..., x n 1 ) = χ(y, φ(y, x 1,..., x n 1 ), x 1,..., x n 1 ), hvor y angiver efterfølgeren til y (dvs. y = y+1). (1) definerer efterfølger-funktionen, (2) definerer konstante funktioner og (3) definerer identitetsfunkioner. Skema (4) er definition ved substitution og skemaerne (5a-5b) er skemaet for primitiv rekursion. Rekursion er altså en formel definitionsmåde hvor funktionsværdien for større tal defineres ud fra funktionsværdierne ved mindre tal; svarende til induktionsbeviser i traditionel matematisk bevisførelse. Mere præcist anses en funktion φ for at være primitivt rekursiv hvis der eksisterer en følge φ 1,..., φ k, k 1 således at hver φ i er en direkte følge af funktionerne φ 1,..., φ i 1. En funktion φ er en direkte følge af en mængde af andre funktioner Φ, hvis den opfylder en af ligningerne (4-5b) hvor funktionerne i Φ optræder som ψ, χ, χ 1,..., χ m i de respektive ligninger. I en given udledning vil nogle af funktionerne ψ, χ, χ 1,..., χ m typisk være tidligere definerede funktioner, og andre vil udledes undervejs. Et prædikat P (x 1,..., x n ) er primitivt rekursivt hvis der eksisterer en funktion π, således at P er ækvivalent med udtrykket π(x 1,..., x n ) = 0. De primitive rekursive funktioner inkluderer mange kendte funktioner, herunder addition og subtraktion, multiplikation og division, potensfunktionen, fakultetsfunktionen, og i det hele taget en stor del af de sædvanlige nummerteoretiske funktioner. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 13 af 26

Som et eksempel på en udledning i de rekursive funktioner gennemgås her regnestykket 2 + 2. Vi definerer først følgende funktioner: S(x) = x S(0) = 1 add(0, x) = x add(y, x) = S(add(y, x)) Vi kan så udregne 2 + 2, eller add(s(s(0)), S(S(0))), som følger: add(s(s(0)), S(S(0))) = S(add(S(0), S(S(0)))) = S(S(add(0, S(S(0))))) = S(S(S(S(0)))) = 4 Der findes også eksempler på funktioner der ikke er primitive rekursive, men hvis værdi alligevel kan beregnes. De primitive rekursive funktioner er altså ikke en dækkende definition for beregnelighed. En af de først opdagede (og simpleste) funktioner der er beregnelige, men ikke primitivt rekursive, blev opdaget af Ackermann i 1928 [AH28] og er defineret uformelt som følger: Definer først hjælpefunktionen α: 0 hvis n = 0 α(n, a) = 1 hvis n = 1 a ellers (6) Så kan Ackermanns funktion A defineres rekursivt som: A(0, b, a) = a + b, A(n, 0, a) = α(n, a), A(n, b, a) = A(n, A(n, b, a), a). (7) Det vil altså sige at den rekursive definition bruges samtidig på to variable. Ackermann viste at funktionen af én variabel A(x) = A(x, x, x) vokser hurtigere end nogen primitiv rekursiv funktion; dermed kan den ikke selv være primitivt rekursiv. 5.2 Generelle rekursive funktioner Funktioner der er defineret rekursivt, men som ikke er primitive rekursive, kaldes generelle rekursive funktioner [Kle36]. I definitionen af generelle rekursive funktioner tillades substitution med yderlige givne hjælpefunktioner på højresiden af ligningerne i en udligning, som det sker i Ackermanns funktion ovenfor. Herved kan rekursionen altså ske på flere variable på samme tid. Dog er der den begrænsning på udledningen af Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 14 af 26

generelle rekursive funktioner, at udledningen skal resultere i én funktion (kaldet den primære funktion) f, således at f(x 1,..., x n ) = x for nøjagtig ét tal x 5. En yderligere udvidelse af denne klasse af funktioner udgøres af de partielle rekursive funktioner, som er generelle rekursive funktioner der ikke nødvendigvis er defineret på alle naturlige tal, men som inkluderer et sjette skema givet ved µ-operatøren: φ(x 1,..., x n ) = µy[χ(x 1,..., x n, y) = 0] (8) hvor µy[p (y)] er defineret som den mindste værdi af y for hvilken prædikatet P (y) er sandt. Dette kræver selvfølgelig at der eksisterer et y for hvilket P (y) er sandt; og det er netop her de partielt definerede funktioner kommer ind i billedet. En partiel rekursiv funktion er således en funktion der er defineret rekursivt efter skemaerne i (1-5b) og (8), men som kun er defineret på de n-tupler hvor y(χ(x 1,..., x n, y) = 0), altså hvor µ-operatøren har en værdi. Klassen af partielle rekursive funktioner er netop ækvivalent med Turingmaskinen og Church s λ-calculus i hvilke funktioner den definerer. 5 I det formelle system slutter udledningen ved det taltegn x (defineret vha. efterfølger-funktionen) der repræsenterer det naturlige tal x. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 15 af 26

6 Church s λ-calculus Alonzo Church definerede første gang sin λ-calculus i 1932 [Chu32]. Denne oprindelige udgave viste sig at være logisk inkonsistent [KR35], og Church introducerede derfor en modificeret udgave, kaldet type-fri λ- calculus, i 1936 [Chu36b]. Church giver en del af æren for denne forbedring til hans ph.d-studerende, Stephen C. Kleene, der, som nævnt i forrige afsnit, også udviklede definitionen af partielle rekursive funktioner. Det er også Kleene som overbeviser Church om styrken ved λ-calculus, ved at vise at λ-udtryk kunne udtrykke en eksplicit algoritme for at udregne den pågældende (λ-definérbare) funktion [Dav82]. Det er altså ganske klart at der er sammenhæng mellem definitionerne, og Church benytter da også de rekursive funktioner som udgangspunkt for hans definition af λ-calculus, og viser ækvivalensen af λ-calculus og de partielle rekursive funktioner. Church er, som nævnt i indledningen, den første til at give et bud på en formel definition af det intuitive begreb beregnelighed, og han angiver dette som et eksplicit mål med sin artikel, motiveret af et behov for en formel definition på noget der ofte bruges uformelt i matematiske sammenhænge: The purpose of the present paper is to propose a definition of effective calculability which is thought to correspond satisfactorily to the somewhat vague intuitive notion in terms of which problems of this class are often stated, and to show, by means of an example, that not every problem of this class is solvable. [Chu36b] I artiklen fra 1936 viser Church at en rekursiv funktion af positive heltal er ækvivalent med en λ-definerbar funktion af heltal. Han argumenterer for, at disse funktioner netop er hvad der forstås ved effektiv beregnelighed det vi i dag kender som Church s Thesis. Church s motivation for at identificere effektiv beregnelighed med det intuitive beregnelighedsbegreb kan skimtes i en fodnote, hvor Church skriver: The question of the relationship between effective calculability and recursiveness (which it is here proposed to answer by identifying the two notions) was raised by Gödel in conversation with the author. The corresponding question of the relationship between effective calculability and λ-definability had previously been proposed by the author independently. [Chu36b] Church angiver endvidere ækvivalensen mellem de partielle rekursive funktioner og λ-calculus som en faktor der sandsynliggør at identificeringen med det intuitive beregnelighedsbegreb giver mening: The fact, however, that two such widely different and (in the opinion of the author) equally natural definitions of effective calculability turn out to be equivalent adds to the strength of the reasons adduced below for believing that they constitute as general a characterization of this notion as is consistent with the usual intuitive understanding of it. [Chu36b] Church s definition af λ-calculus er en skelsættende begivenhed i bestræbelserne på at definere beregnelighed formelt, og udgør og det første eksempel på at disse bestræbelser ekspliciteres. Som det fremgår af ovenstående citater er Church drevet af et ønske om at løse det matematiske problem i definitionen af beregnelighed, altså en intern matematisk motivation. Som det fremgår af nedenstående gennemgang, er λ- calculus en ganske abstrakt matematisk teori. på trods af denne abstrakte natur, har teorien (dog først noget senere) spillet en rolle for udviklingen af beregnelighed i kontekst af den moderne digitale computer. 6.1 Gennemgang af λ-calculus λ-calculus et formelt matematisk system som omtalt i afsnit 2. I det følgende introducerer vi λ-calculus i en moderne udgave som adskiller sig noget fra Church s oprindelige formulering. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 16 af 26

λ-calculus er baseret på ideen om funktioner. Helt centrale koncepter er binding af variable og substitution. Et λ-udtryk består af en tællelig mængde af variable V = {a, b, c,...} og symbolerne., (, ), λ 6. Mængden af alle λ-udtryk Λ defines induktivt som følger: x V x Λ (9) x V, M Λ λx.m Λ (10) M, N Λ (MN) Λ (11) hvor (10) kaldes abstraktion og (11) kaldes anvendelse. Vi kan definere bundne og frie variable ved induktion. Mængden af frie variable i et λ-udtryk FV(M) er givet ved: FV(x) = {x} FV(MN) = FV(M) FV(N) FV(λxM) = FV(M) {x} En variabel i M er bundet hvis den ikke er fri. Vi indfører notationen M[x := N] for substitutionen af x med N i M. Vi kan nu indføre følgende operationer: λxm = λym[x := y] (λxm)n = M[x := N] (α) (β) Den første operation kaldes α-konvertering og kan forstås som omdøbning af bundne variable; den bruges fx når to formler skal kombineres til én, for at undgå tvetydighed i formlerne. Den anden operation kaldes β-reduktion og svarer til at anvende funktioner på deres argumenter. En endelig sekvens af disse operationer kaldes en konvertering og A conv B betyder at vi kan konvertere A til B. At λ-calculus er typefri betyder at variable kan erstattes af alle slags udtryk, herunder funktioner (altså at en funktion kan være et argument til en anden funktion). Church introducerer en konvention for at repræsentere de naturlige tal i λ-calculus, ved at identificere dem med specifikke funktioner. Denne konvention kaldes Church numerals og er defineret som følger (idet a b betyder at a er en forkortelse af b): 1 λf.λx.f(x) 2 λf.λx.f(f(x)) 3 λf.λx.f(f(f(x))) 4 λf.λx.f(f(f(f(x)))) En funktion F : N N siges at være λ-definerbar hvis og kun hvis man kan finde en formel f, sådan at for hvert talpar x, y, er F (x) = y hvis og kun hvis fx conv x, hvor x og y er repræsentationerne af henholdsvis x og y i Church numerals. 6 Punktummer bruges udelukkende for at skabe afstand mellem dele af udtrykkene og kan udelades uden at betydningen ændrer sig. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 17 af 26

For at give en fornemmelse af hvordan en udledning i λ-calculus fungerer, gives her et eksempel på en udledning af 2 + 2 = 4. Til dette defineres som en forkortelse hjælpefunktionen add, som adderer de to heltal m og n: add λm.λn.λf.λx.mf(nf x) Hermed kan regnestykket 2 + 2 skrives som add 2 2. Beregningerne udføres ved at reducere det resulterende udtryk. Først omdøber vi de bundne variable ved (α) og opskriver: (λm.λn.λf.λx.mf(nf x))(λg.λy.g(gy))(λh.λz.h(hz)) Resten af øvelsen sker nu ved β-reduktion som følger. I hver linje er de substituerede variable og de udtryk de substitueres med markeret med fed skrift: (λm.λn.λf.λx.mf(nf x))(λg.λy.g(gy))(λh.λz.h(hz)) = (λn.λf.λx.(λg.λy.g(gy))f(nf x))(λh.λz.h(hz)) = (λf.λx.(λg.λy.g(gy))f((λh.λz.h(hz))f x)) = (λf.λx.(λy.f(f y))((λh.λz.h(hz))f x)) = (λf.λx.(f(f((λh.λz.h(hz))fx)))) = (λf.λx.(f(f((λz.f(fz))x)))) = (λf.λx.(f(f((f(fx)))))) = λf.λx.f(f(f(fx))) = 4 Selvom det umiddelbart virker kringlet, er hele øvelsen udelukkende en mekanisk proces der følger nogle enkle regler. Church viser at λ-calculus er yderst kraftfuld og er i stand til at udtrykke aritmetik, prædikatlogik og rekursion. Desuden viser han hvordan λ-calculus kan repræsenteres i talteorien ved Gödelnummerering, og bruger denne repræsentation til at vise at der er udtryk der ikke er λ-definerbare (altså at der er tal der ikke er beregnelige), ud fra en tilgang der minder meget om Turings bevis for det samme (se afsnit 7). Selvom det ikke umiddelbart virker som formålet med artiklen, giver Church et negativt svar på Entscheidungsproblemet. Dette gøres i første omgang under forudsætning af at Principia Mathematica er ω-konsistent 7, men udvides i en note udgivet kort efter [Chu36a], til et mere generelt negativt svar på Entscheidungsproblemet. På trods af λ-calculus udtryksfuldhed, gør det abstrakte definitionsniveau at den ikke har set så bred en anvendelse senere hen. Specielt i forbindelse med den digitale computer, har den ækvivalente Turing-maskine (se afsnit 7) haft betydeligt større succes. Dog danner λ-calculus grundlag for de funktionelle programmeringssprog (hvor det mest kendte nok er programmeringssproget LISP) [Hud89]. 7 ω-konsistens er en egenskab ved et formelt system, som blev defineret af Gödel som en del af hans ufuldstændighedsbevis. Det har at gøre med hvilke sætninger der kan bevises om de naturlige tal når de repræsenteres i systemet, og er en stærkere egenskab end almindelig konsistens. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 18 af 26

7 Turing-maskinen Alan Turing beskriver med sin Turing-maskine [Tur36; Tur37] en metode til mekanisk at udføre beregninger, der tager udgangspunkt i hvordan et menneske ville udføre beregninger med blyant og papir. Turings arbejde skal ses i kontekst af at han har kendt til Gödels ufuldstændighedssætning og indset hvad det må betyde for fx Entscheidungsproblemet. Hans tilgang er motiveret af et ønske om at bevise at Entscheidungsproblemet ikke kan have en generel løsning, hvilket har givet ham idéen til at analysere hvordan beregning foregår når den udføres af mennesker [Dav00]. I denne analyse kommer han frem til at hvis de ikke-essentielle egenskaber skrælles væk kan det der står tilbage ligeså vel udføres af en maskine som af et menneske. Beskrivelsen af hvordan sådan en maskine ser ud, er det vi i dag kalder for Turing-maskinen. Emil Post udviklede uafhængigt af Turings arbejde en model for beregnelighed der minder meget om Turingmaskinen [Pos36]. Post refererer til Church s λ-calculus og fremsætter en formodning om at hans beregningsmodel vil være ækvivalent med den, uden dog at bevise det. Senere er ækvivalensen mellem Post s model og både Turing-maskinen og λ-calculus blevet bevist. Post s model har imidlertid ikke fået så stor betydning som Turings, dels fordi Post ikke argumenterer for hvorfor hans model er gyldig eller hvordan han er kommet frem til den (han beskriver den bare), og dels fordi han ikke beviser ækvivalensen med andre beregningsmodeller [Gan88]. Det følgende fokuserer derfor på Turing-maskinen snarere end Post s arbejde. En Turing-maskine består af et læsehoved der bevæger sig over en uendelig papirstrimmel som er inddelt i celler der hver især kan indeholde et symbol fra en prædefineret mængde af mulige symboler. Hovedet kan bevæge sig fra celle til celle, ét skridt til højre eller venstre. Læsehovedet starter ved strimmelens venstre kant; strimmelens udstrækning mod højre er uendelig. Maskinen udfører sin beregning i diskrete skridt, hvor hvert skridt består i at læse symbolet under hovedet og enten skrive et nyt symbol til cellen eller bevæge sig ét skridt mod højre eller venstre. Hvilken handling maskinen udfører ved hvert skridt er bestemt af maskinens interne tilstand og symbolet i cellen under læsehovedet. En maskine programmeres ved at definere mængden af interne tilstande maskinen kan være i, samt en række overgangsregler fra tilstand til tilstand, der også definerer den handling maskinen udfører. En regel kan være noget i stil med hvis læsehovedet læser symbolet s 1 og maskinen er i tilstand t 1, så skriv symbolet s 2 og gå til tilstand t 2. Typisk defineres et sæt af instruktioner som en tabel, men den angiver en afbildning F fra kombinationen af symboler og tilstande til handlinger og nye tilstande. Altså F : S T H T hvor S er mængden af symboler, T er mængden af tilstande og H = {h, v} S er mængden af handlinger (gå til højre, gå til venstre, skriv symbolet s i ). Afbildningen er ikke nødvendigvis komplet (altså hverken injektiv eller surjektiv), men skal definere alle logisk mulige kombinationer (altså en maskine må ikke ende i en tilstand den ikke kan komme ud af). En komplet specifikation af en Turing-maskine består altså af (S, T, H, F ). Et komplet øjebliksbillede af en Turing-maskine består af denne specifikation, samt den tilstand maskinen befinder sig i på det givne tidspunkt og indholdet af papirstrimmelen den arbejder på. Der findes forskellige konventioner for hvordan en Turing-maskine rent faktisk beregner en given funktion eller tal. Turing selv anvender den konvention at maskinen anvender hver anden celle til resultatet af dens udregninger og hver anden til mellemregninger, og at maskinen kan siges at beregne et tal et tal når den fortsætter med at udskrive cifre af tallet i det uendelige (en sådan maskine kaldes cirkel-fri). En udregning der får maskinen til på et tidspunkt enten at gå i stå eller fortsætte i en uendelige løkke hvor der ikke udskrives flere cifre siges ikke at udregne noget tal. En sådan maskine siges at være cirkulær, og en funktionsbeskrivelse der resulterer i dette, siges ikke at være beregnelig. Turing beviser at der er funktioner der ikke kan beregnes af nogen Turing-maskine. Det gør han ved at konstruere en universel Turing-maskine, som kan simulere andre Turing-maskiner. Mekanismen han bruger til at opnå dette minder meget om Gödelnummerering, bortset fra at repræsentationen ikke er i de naturlige tal, men i Turing-maskinens alfabet (som typisk er de binære tal). Den universelle maskine kan så konstrueres således at den udfører symbolmanipulation på den repræsentation af en Turing-maskine der er dens input, svarende til de ændringer i maskinens interne tilstande og indholdet af papirstrimmelen som den simulerede maskine selv ville udføre. Formaliseringen af beregnelighed - et eksempel på matematikkens udvikling Side 19 af 26