2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.

Slides:



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

Funktioner och programorganisation
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.
Föreläsning 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Polymorfism.
Föreläsning 12 Matlab J-uppgiften.
Välkommen Vahid Mosavat
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
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.
Programspråkssemantik Hur programspråk ska tolkas.
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
Programmering B PHP Lektion 2
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
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.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Föreläsning 3 Programmeringsteknik och Matlab DD1312
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder 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öreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Problemlösningsmetodik
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
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.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
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.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
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,
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 1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer.
Program. Symboliska samband Symboliska beteenden Matematisk kausalitet (orsak – verkan) 2x = y, y = x^2, y = kx + l.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Logik med tillämpningar
1 Semantik – introduktion Semantik = läran om mening Tvärvetenskapligt filosofi lingvistik psykologi AI Lingvistik motsägelser mångtydighet metaforer Filosofi.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
-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.
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.
Presentationens avskrift:

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk semantik: inferensregler och korrekthetsbevis

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 Statisk semantik Semantik = programmens betydelse Statisk semantik = semantiska aspekter som inte direkt har att göra med programmets exekvering  oftast frågor i samband med deklarationer: typkontroller, (icke) deklarerade identifierare, …  innefattar ”icke kontextfri syntax” int i; i = 3.3; // typfel! Typkontroll i Java: procedure p is end q; -- fel namn! Namnupprepning i Ada:

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 Attributgrammatiker Attributgrammatiker (Knuth 1968) är används ofta för att beskriva statisk semantik men kan t.o.m. användas för att översätta program helt och hållet. Idé: Härledningsträdets noder förses med attribut varje attribut har ett värde (tal, sträng, graf, …) värdet beror på  förälderns och syskonens attributvärden (ärvt attribut) eller  barnens attributvärden (syntetiserat attribut) attributvärden utvärderas rekursivt

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 Attributgrammatiker (2) Typer av attribut i överblick Syntetiserat  värde beror på barnens attributvärden informationsflöde uppåt Ärvt  värde beror på förälderns och syskonens attributvärden informationsflöde nedåt Inneboende (eng. intrinsic)  syntetiserade attribut på trädens löv som är definierade ”på något annat ställe än i attributgrammatiken”  finns inte i ”rena” attributgrammatiker

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Attributgrammatiker – exempel Attribut: syntaktiska regler  assign    var  =  expr   expr  0   expr  1 +  expr  2  expr    integer   expr    real   expr    var  Krav:  expr  0. actual   expr  0. expected ´expected´typen som ett uttryck väntas ha(ärvt) ´actual´typen som ett uttryck faktiskt har(syntetiserat) ´type´variablens typ enligt deklarationen(inneboende)  expr . actual =  var . type  expr . actual = real  expr . actual = int  expr  i. expected =  expr  0. expected där i  {1,2}  expr  0. actual = intom  expr  1. actual   expr  2. actual  int = realannars  expr . expected =  var . type semantiska regler

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 Dynamisk semantik Dynamisk semantik är den delen av semantiken som är nära relaterad till programexekveringen Det finns många sätt att definiera den dynamiska semantiken för ett programspråk, bl a  operationell semantik  denotationell semantik  axiomatisk semantik

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7 Operationell semantik Definiera en abstrakt maskin med enkla primitiva operationer Definiera olika språkkonstruktioners betydelse genom att använda den abstrakta maskinens operationer Fördel: konkret och intuitivt begriplig Nackdelar  Ej lämplig för att bevisa egenskaper (ex korrekthet)  Måste definiera den abstrakta maskinen otvetydigt  Tenderar att föreslå en viss implementation

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 Denotationssemantik Syntaktiska konstruktioner avbildas på matematiska objekt m.h.a semantiska funktioner Dessa matematiska objekt är satsernas/uttryckens värde/betydelse, kan behandlas matematiskt Beskriver hur ett abstrakt tillstånd förändras Ett uttrycks värde definieras m.h.a deluttryckens värde Klarar alla sekvensiella p-språkskonstruktioner (men vissa är komplicerade att beskriva!) Kan vara för detaljerad

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 Axiomatisk semantik Ligger nära programspråket självt Användbar för att bevisa saker om program, men säger bara indirekt något om betydelsen Omständliga bevis, kräver datorstöd Klarar ej komplicerade konstruktioner, t ex sidoeffekter

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 10 Axiomatisk semantik Satsernas semantisk innebörd beskrivs mha inferensregler som tillåter att härleda logiska formler på formen { P } S { Q } Om P är sant direkt före att S exekveras så är Q sant direkt efteråt. förhandsvillkor predikatlogisk formel som antas vara sann innan S exekveras satsen som det handlar om efterhandsvillkor predikatlogisk formel som är sann efter att S exekverats

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 11 De viktigaste inferensreglerna Q där varje förekomst av x ersätts med E { Q x  E } x  E { Q } Tilldelningsaxiomet { P } S { Q } P  P', { P' } S { Q' }, Q'  Q Konsekvensregeln

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 12 De viktigaste inferensreglerna (2) Sekvensregeln { P } S 1; S 2 { Q } { P } S 1 { P' }, { P' } S 2 { Q } Urvalsregeln { P } if B then S 1 else S 2 { Q } { P  B } S 1 { Q }, { P   B } S 2 { Q }

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 13 De viktigaste inferensreglerna Loopregeln (endast partiell korrekthet) { I } while B do S end {  B  I } { B  I } S { I } loopinvarianten I är sann såväl före loopen som efter varje exekvering av S, dvs även efter loopen invarianten brukar beskriva förhållandet mellan variablerna som förekommer i S total korrekthet =partiell korrekthet + loopen kommer att avslutas

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 14 Ett korrekthetsbevis { x  0 } a  0; b  0; while b  x do a  a + y; b  b + 1 end { a = x  y } { x  0  a  0 } { x  0  a  b  0 } tilldelningsaxiom (+konsekvensregel)  { b  x  a  b  y }  I { b  x  a – y  b  y }{ b + 1  x  a  (b + 1)  y } { b  x  a  b  y }  B  I { b  x  a  b  y }  I {  (b  x)  b  x  a  b  y }   B  I { b  x  a  b  y }