2003-12-05Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Programstruktur: C för enchipsdatorer
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
2D1311 Programmeringsteknik med PBL
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Polymorfism.
Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
1 Introduktion till SML Nr 2 Värden, typer och funktioner.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
i olika programmeringsspråk
Programmering B PHP Lektion 2
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Programmeringsbegrepp
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Livets former Djur.
1 Programmeringsmetodik, 8p ML-delen Programmering Programmeringsmetodik Programspråk NR 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Algoritmer. Ordet kommer från en persisk författare som kom från al’Khowârizmi (engelskans algorithm). Han skrev boken ’Kitab al jabr w’al-muqabala’.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 1: Inledning administrativt o dyl kursens mål varför programspråksteori? språkkategorier användningsområden.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Variabler Abstraktion av en minnescell En förvaringslåda som kan beskrivas med 6 attribut –Namn.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck.
2D1311 Programmeringsteknik med PBL
Föreläsning 11 Logik med tillämpningar Innehåll u Generell resolution u Kapitel i Ben-Ari.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Föreläsning 9 Logik med tillämpningar Innehåll u Semantiska tablåer i predikatlogiken u Klausulform u Herbrandmodeller u Kapitel 3.5,
Anders Sjögren Deklarationsområde och funktioner.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer.
Satslogik, forts. DAA701/716 Leif Grönqvist 5:e mars, 2003.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Negativa tal – några exempel
F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Algoritmer och loopar Algoritmer, beräkningsbarhet
Biologi - Livets former.
Föreläsning 3: Booleans, if, switch
Presentationens avskrift:

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 Allmänt om -kalkylen På 1930-talet besvarades några grundläggande frågor Vilka principiella begränsningar gäller för formella bevissystem och deras härledningar (Gödel 1936)? Hur kan begreppet algoritm formaliseras (Turing 1939)? Var ligger gränsen mellan algoritmisk lösbarhet och olösbarhet (Turing 1939)? Men det var inte bara Turing som föreslog en modell. Samma år (1939) definierade Alonzo Church -kalkylen – ett enkelt system i vilket beräkningsbara funktioner kan definieras och evalueras.

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 Allmänt om -kalkylen (2) Medan Turings maskinmodell liknar imperativa språk, är -kalkylen ett abstrakt sätt att definiera och kombinera funktioner, liknar alltså funktionella språk Det överraskande är att båda är precis lika kraftfulla  Church-Turing-tes funktionellimperativ -kalkyl Turingmaskin  

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 -kalkylens syntax Låt  var  stå för en oändlig mängd av variabler (vanligtvis används små bokstäver). Mängden av alla -uttryck definieras med hjälp av följande kontextfria regler:  expr   var  | (  expr   expr  ) | var .  expr  x (y x)  x.(y x) y) x.(y x) y.  x.(y x) y) ( x. y.( x.x (x x)) x.(x y))

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Funktionsapplikation och funktionsdefinition Tanken bakom syntaxen är… (E 1 E 2 )står för funktionsapplikation: E 1 appliceras på E 2 x.Ebeskriver en funktion: x är den (enda) formella parametern och E är kroppen. Uttrycket x.E kallas -abstraktion Vanlig programspråkssyntax för x.E vore t.ex. fun f(x) = E. Den viktigaste skillnaden är att -kalkylens funktioner är anonyma – de har inga namn!

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 Bundna och fria variabler I x.E är x. ”funktionshuvudet” som ”deklarerar” en formell parameter x. Där x förekommer i E används alltså funktionens formella parameter – x sägs vara bunden. Variabler som förekommer i ett uttryck på ställen där de inte är bundna är fria variabler. ( x. y.( x.x (x x)) x.(x y))  bound(E) = {x,y} och free(E) = {y} i det här fallet ( x. y.( x.x (x x)) x.(x y)) fri

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7  -konversion och  -reduktion Notation: Att ersätta alla fria förekomster av x i E 1 med E 2 skrivs som E 1 [x  E 2 ]. Substitution.  -konversion Formella parametrar får alltid döpas om, dvs varje underuttryck x.E får bytas ut mot y.E[x  y] om y inte är fri i E. Man skriver E 1   E 2.  -reduktion Genom att använda  -reduktion evalueras -uttryck. Varje underuttryck ( x.E E') får bytas ut mot E[x := E'] om bound(E)  free(E') = . Man skriver E 1   E 2. (Om bound(E)  free(E')   används  -konversion först.)

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 Church-Rosser-teoremet En beräkning i -kalkylen är en sekvens E 1   E 2 av  -reduktioner (och eventuella  -konversioner).  E 2 är på normalform om inga fler  -reduktioner är möjliga (E 2 betraktas som beräkningens resultat, dvs E 1 s värde) Men kan ett uttryck inte ha flera olika värden då??? Church-Rosser-teorem Om E   E 1 och E   E 2 så finns det ett uttryck E' sådant att både E 1   E' och E 2   E'.     E E2E2 E1E1 E'    

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 Att programmera i -kalkylen Hur kan de vanliga datatyperna definieras i -kalkylen? operationer är -uttryck dataelement är också -uttryck TRUE = x. y.x FALSE = x. y.y IF B THEN E ELSE E' = ((B E) E') B AND B' = ((B B') FALSE ) Datatyp boolean

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 10 Att programmera i -kalkylen (2) PAIR E E' = x. IF x THEN E ELSE E' FIRST P = (P TRUE ) SECOND P = (P FALSE ) Datatyp pair Datatyp integer 0 = x.x SUCC N = PAIR FALSE N IS_ZERO N = FIRST N PRED N = IF IS_ZERO N THEN 0 ELSE SECOND N

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 11 Rekursion Hur kan vi definiera rekursion utan att ge funktionen ett namn för att kunna referera till sig själv?? Ex: Q M N = if iszero M then N else succ (Q (pred M) N) Y-kombinatorn Y = f.( x.(f (x x)) x.(f (x x))) (Y F) = (F (Y F)) !! Gör Q till en parameter P= Q. M. N. if iszero M then N else succ (Q (pred M) N) Definiera PLUS = Y P Det medför PLUS = P (Y P) = (P PLUS) o.s.v