1 Opsumering fra tidligere. 2 Dagsorden 3 BIMS. 4 Programtilstande. Statements/kommandoer (Stm) i bims. 3.1 Abstrakt syntaks for bims

Relaterede dokumenter
1 Program for forelæsningen

OBS! Prøveeksamen med syntaks på tirsdag! Kursusgang 8

Rettelser til Pilen ved træets rod

Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

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

Regularitet og Automater. Tobias Brixen Q4-2012

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Bevisteknikker (relevant både ved design og verifikation)

En karakteristik af de regulære sprog. Ugens emner. FA minimering [ ] MyHill-Nerode-sætningen en algoritme til minimering af FA er

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Python 3 kursus lektion 1:

Sproget Rascal (v. 2)

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

Sip2Sep. Gruppe d206a Jakob Svane Knudsen Mikkel Larsen Pedersen Simon Nicholas M Tinggaard Rune Leth Wejdling

Ja! det beviste vi uge 16+17

Algoritmer og invarianter

Regularitet & Automater Eksamensnotater

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

Invarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen.

Noter til C# Programmering Iteration

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

Programmering og Problemløsning, 2017

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Python programmering. Per Tøfting. MacFest

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Ugeseddel 4 1. marts - 8. marts

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

Pilen ved træets rod. Hans Hüttel

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Introduktion til Domæneteori

"# $%$ " # $ % $ $ " & ( ) *+!,! Sum_Cost >= 5000SirName = Beltov Continue = %!- + ( ( - True) Continue *! If Antal <= 20 Then EnhedsOmk = 1.

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Programmering I Java/C#

At klippe en streng over på det mest hensigtsmæssige sted

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Kontrol-strukturer i PHP

Skriftlig Eksamen Beregnelighed (DM517)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Programmering i C. Lektion november 2008

BOSK F2011, 1. del: Udsagnslogik

Programmering og Problemløsning, 2017

Løsningsforslag Skriftlig eksamen 9. januar 2012

Udsagnslogik. Anker Mørk Thomsen. 6. december 2013

Deadlocks dopsys 1 onsdag den 8. december 2010

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Kapitel 4 Løkker i C#

DM517:Supplerende noter om uafgørlighedsbeviser:

Undersøgende aktivitet om primtal. Af Petur Birgir Petersen

3 Algebraisk Specifikation af Abstrakte Datatyper.

GEOMETRI-TØ, UGE 12. A σ (R) = A f σ (f(r))

BOSK F2011, 1. del: Induktion

SWC eksamens-spørgsmål. Oversigt

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Baggrundsnote om logiske operatorer

Start på Arduino og programmering

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

Obligatorisk Projekt MM512 Kurver og Flader 4. kvartal 2007

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DANMARKS TEKNISKE UNIVERSITET

Programmering i C. Lektion september 2009

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Lad os som eksempel se på samtidigt kast med en terning og en mønt:

Kursusgang Rekursive definitioner. 14. april Mystiske eksempler. Hvad er en rekursiv definition egentlig? Partielle ordninger

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

6. december. Motivation. Internettet: Login til DIKU (med password) Handel med dankort Fortrolig besked Digital signatur

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Regularitet og Automater

Forelæsning Uge 2 Torsdag

Løsningsforslag Skriftlig eksamen 3. januar 2013

Mircobit Kursus Lektion 2

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Selvstudium 1, Diskret matematik

Oversættere / Datalogi 1E

1 Palm teori. Palm teori 1

! "# $$ &'()*"* +*, & &"*0* & "# % %- %

BOSK F2012, 1. del: Prædikatslogik

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

16. december. Resume sidste gang

5. Kontrolstrukturer - Motivation og Oversigt

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Skriftlig eksamen i Datalogi

Transkript:

1 Opsumering fra tidligere Hvis A er kontekstfrit, S er der et p > 0 s Alle s A hvor s p kan splittes op som s = uvxyz så argument 1-3 holder A er ikke kontekstfrit, hvis for ethvert bud på p kan findes en s A, s p så ingen opsplitning overholder 1-3. Der ligger en eksemplarisk løsning af opgaverne fra sidste gang på SS siden. 2 Dagsorden Statements/kommandoer (Stm) i bims programtilstande Aexp-semantik (nu med variabler) Big-step-semantik for Stm Et stort deriviationstræ! small-step-semantik for Stm Terminering/ikke terminering ækvivalenten af big-step og small-step 3 BIMS 3.1 Abstrakt syntaks for bims n Num x, y V ar a Aexp, a ::= n x a 1 + a 2 a 1 a 2 a 1 a 2 (a 1 ) b Bexp, b ::= a 1 = a 2 a 1 < a 2 b 1 b b 2 (b 1 ) S Stm, S ::= skip x := a S 1 ; S 2 if b then S 1 else S 2 while b do S 1 4 Programtilstande Noget om Hans mor... Programtilstande er en fortegnelse over variablens værdier; hverken mere eller mindre! Intuitivt: En program tilstand er en fortegnelse over variablers værdier. 1

Definition: En tilstand s er en partiel funktion så: s : V ar Z Mængden af tilstande: states = V ar Z Husk fra kapitel 2: En partiel funktion f : A B, er en funktion der ikke nødvendigvis er defineret for alle variabler i A Definition (opdatering) S[x v] (S, bortset fra at x bindes til v) er tilstanden s givet ved { s v y = sy y = x ellers Tit skriver vi tilstande som en liste af bindinger: [x 2, y 3, z 484000] (1) 4.1 Bigstepsemantik for Aexp med variabler Transitioner er på formen: S a v Transitionssystem (Γ,, T ) hvor Γ = Aexp Z T = Z er givet ved regler [var] s x v hvor sx = v hvor at hvis jeg slår op i s, så får jeg at vide at x er bundet til v. [plus] s a 1 v 1 s a 2 v 2 s a 1 +a 2 v hvor v = v 1 + v 2 5 Stm semantik - ny og forbedret udgave; nu med variabler(bigstep) Transitions-system: er på form S, s s givet en kommando og en tilstand, finder jeg den nye tilstand. En kommando(statement) kan ændre på en tilstand. En kommando kan ændre variablers værdier. Transitionssystem: (Γ,,T ) Γ = stm states states T = states givet ved regler Der skal være regler for hver eneste tilstand vi kan forestille os. Skip er en statement der intet gør!. [skip] skip, s s 2

[ass] x := a, s s[x v] hvor s a a v [comp] S 1,s s S 2,s s S 1 ;S 2,s s [if-true] [if-false] S 1,s s if b then S 1 else S 2,s s hvor s b b tt S 2,s s if b then S 1 else S 2,s s hvor s b b ff [while-true] S,s s while b do S,s s while b do S,s s [while-false] while b do S, s s hvor s b b ff hvor s b b tt Husk at alt evaluere til noget! While-løkker (true) er ikke kompositionel (også selvom vi ikke syntes om det), det betyder at den ikke nødvendigvis terminerer. 3

4 Figur 1: Big Step Deriviationstræ

6 Small-step-semantik for Stm Givet et statement og en tilstand, kan jeg få en ny statement og tilstand - eller jeg kan få en tilstand (vi er færdige). Henholdsvis: S, s S, s eller S, s s Transitionssystem: (Γ,,T ) Γ = stm states states T = states givet ved regler [skip] skip, s s [ass] x := a, s s[x v] hvor s a a v [comp 1 ] [comp 2 ] S 1,s S 1,s S 1 ;S 2,s S 1 ;S 2,s S 1,s s S 1 ;S 2,s S 2,s [if-true] if b then S 1 else S 2, s S 1, s hvor s b b tt [if-false] if b then S 1 else S 2, s S 2, s hvor s b b ff [while] while b do S, s if b then S; while b do S; else skip, s Eksempel på small-step for Stm x := x + 2, s = s[x 2] s = [x 0] x := x + 2; While x 0 do x := x 2, s While x 0 do x := x 2, s[x 2] if x 0 then x := x 2; While x 0 do x := x 2 else skip, s[x 2] x := x 2, s = s[x 0] x := x 2; While x 0 do x := x 2, s[x 2] While x 0 do x := x 2, s[x 0] if x 0 then x := x 2; While x 0 do x := x 2 else skip, s[x 0] skip, s[x 0] s[x 0] 7 Ikke terminering I small-step semantik, der ser vi at ikke terminering beskrives som en uendelige transitionsfølge: while 0 = 0 do skip, s if 0 = 0 then skip; while 0 = 0 do skip else skip, s 5

skip; while 0 = 0 do skip, s while 0 = 0 do skip, s I big-step-semantikken bliver vi aldrig færdige med at bygge et deriviationstræ: skip, s s while 0 = 0 do skip, s s skip, s s while 0 = 0 do skip, s s while 0 = 0 do skip, s s Dvs. at der er INGEN transition while 0 = 0 do skip, s s, der kan ikke være nogen transition når vi ikke kan bygge et deriviationstræ. Small-step; ikke terminering er en uendelig transitionsfølge. Big-step; ikke terminering er fravær af en transition. 8 Ækvivalens af big-step og small-step (ADVARSEL; dette er kun et resultat for dagens semantik!; perverse semantikker er mulige der gør at det ikke gælder) Der er en sætning der siger at big-step og small-step for Stm er ækvivalente. Det vil sige at for alle S Stm (statements) og for alle s States (states), så gælder det at vi har en transition i big-step-semantikken S, s s hvis og kun hvis - S i et antal skridt kan blive til s S, s a Definition (et antal transitionskridt) S, s k γ γ hvis k = 0 og γ = S, s eller k > 0 og S, s k γ γ Vi skriver S, s γ hvis der er et k så S, s k γ Hvilket vil sige at S, s kan i k skridt nå frem til konfigurationen γ Bevis(skitse) for ækvivalens Vi skal vise: A: Hvis vi har en big-step-transition ( S, s s ), så kan vi konstruere en transitionsfølge i small-step der havner i s ( S, s a ). Vi skal altså kunne vise hvordan man kan simulere big-step-reglerne med small-step-reglerne. B: Derudover skal det vises at der for enhver transitionsfølge ( S, s a ) findes et transitionstræ med et tilsvarende resultat ( S, s s ). Vi skal altså kunne vise hvordan et big-step-derivationstræ rummer skridt fra small-stepsemantikken. A vises ved induktion i højden af deriviationstræet for hver big-step transition ( S, s s ) B vises ved induktion i længden af transitionsfølgen for s ( S, s a ). 6