T~oestatavalt korrektne transleerimine

Σχετικά έγγραφα
Kirjeldab kuidas toimub programmide täitmine Tähendus spetsifitseeritakse olekuteisendussüsteemi abil Loomulik semantika

Funktsiooni diferentsiaal

Kontekstivabad keeled

Kontekstivabad keeled

Lokaalsed ekstreemumid

ITI 0041 Loogika arvutiteaduses Sügis 2005 / Tarmo Uustalu Loeng 4 PREDIKAATLOOGIKA

Kompleksarvu algebraline kuju

MATEMAATIKA TÄIENDUSÕPE MÕISTED, VALEMID, NÄITED LEA PALLAS XII OSA

MATEMAATIKA TÄIENDUSÕPE MÕISTED, VALEMID, NÄITED, ÜLESANDED LEA PALLAS VII OSA

Suhteline salajasus. Peeter Laud. Tartu Ülikool. peeter TTÜ, p.1/27

2.2.1 Geomeetriline interpretatsioon

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

HULGATEOORIA ELEMENTE

Formaalsete keelte teooria. Mati Pentus

Geomeetrilised vektorid

Keerukusteooria elemente

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

Λύσεις Σειράς Ασκήσεων 5

ΔΗΜΟΤΙΚΕΣ ΕΚΛΟΓΕΣ 18/5/2014 ΑΚΥΡΑ

Lambda-arvutus. λ-termide süntaks. Näiteid λ-termidest. Sulgudest hoidumine. E ::= V muutuja (E 1 E 2 ) aplikatsioon (λv.

Overview. Transition Semantics. Configurations and the transition relation. Executions and computation

9. AM ja FM detektorid

Semantiline analüüs. Süntaksipuu dekoreeritakse tüübi- ja muu kontekstist sõltuva

Λύσεις Σειράς Ασκήσεων 5

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

KATEGOORIATEOORIA. Kevad 2010

Arvuteooria. Diskreetse matemaatika elemendid. Sügis 2008

YMM3740 Matemaatilne analüüs II

Βασικές Δομές μοντέλων Petri Nets. C.A. Petri

Mudeliteooria. Kursust luges: Kalle Kaarli september a. 1 Käesoleva konspekti on L A TEX-kujule viinud Indrek Zolk.

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

KATEGOORIATEOORIA. Kevad 2016

Punktide jaotus: kodutööd 15, nädalatestid 5, kontrolltööd 20+20, eksam 40, lisapunktid Kontrolltööd sisaldavad ka testile vastamist

Neformalna verifikacija

Diskreetne matemaatika 2016/2017. õ. a. Professor Peeter Puusemp

1 MTMM Kõrgem matemaatika, eksamiteemad 2014

Graafiteooria üldmõisteid. Graaf G ( X, A ) Tippude hulk: X={ x 1, x 2,.., x n } Servade (kaarte) hulk: A={ a 1, a 2,.., a m } Orienteeritud graafid

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

ΒΑΣΙΚΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΔΟΜΕΣ ΣΕ ΨΕΥΔΟΚΩΔΙΚΑ ΚΑΙ ΣΕ ΔΡΠ

Avaliku võtmega krüptograafia

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ;

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ιαφάνειες παρουσίασης #11

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

1 Funktsioon, piirväärtus, pidevus

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ

Σειρά Προβλημάτων 4 Λύσεις

6. Επιστροφή ελέγχου στο σημείο εκκίνησης

Λύσεις Σειράς Ασκήσεων 5

Δομές Δεδομένων (Data Structures)

Δομές ελέγχου ροής προγράμματος

Συναρτησιακός Προγραμματισμός 2008 Λύσεις στο Δεύτερο Φύλλο Ασκήσεων

ιαφάνειες παρουσίασης #3

ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

Βασικά Στοιχεία της Java

Περιεχόμενα ΜΤ Τυχαίας Προσπέλασης Θεωρία Υπολογισμού Ενότητα 23: Μηχανές Turing Τυχαίας Προσπέλασης Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Εντολή If-Then-Else Σκοπός Μαθήματος

Οργάνωση Υπολογιστών (Ι)

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραμματισμός Ι. Θεματική ενότητα 4: Έλεγχος ροής Προτάσεις υπό συνθήκη διακλάδωσης

Algebraliste võrrandite lahenduvus radikaalides. Raido Paas Juhendaja: Mart Abel

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Κατανεμημένα Συστήματα. Javascript LCR example

Σειρά Προβλημάτων 1 Λύσεις

Aritmeetilised ja loogilised operaatorid. Vektor- ja maatriksoperaatorid

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

MIPS functions and procedures

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δομές Δεδομένων & Αλγόριθμοι. Στοίβες. Εργαστήριο Γνώσης & Ευφυούς Πληροφορικής 1

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

2. HULGATEOORIA ELEMENTE

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

ιαφάνειες παρουσίασης #3

Button & MotionSensor

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Βασικά Στοιχεία της Java

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Διοχέτευση (Pipeline)

Οργάνωση Υπολογιστών

Άσκηση 1 (α) Να διατυπώσετε την πιο κάτω λογική έκφραση στη Visual Basic κάνοντας χρήση μεταβλητών:

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΛΥΣΕΙΣ

Αρχιτεκτονική Υπολογιστών

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

ΔΑΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ 1. Επανάληψη Θεωρίας 22/1/09

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Matemaatiline analüüs I iseseisvad ülesanded

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

Ehitusmehaanika harjutus

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 30 min κάθε «φάση»

Transcript:

T~oestatavalt korrektne transleerimine Transleerimisel koostatakse lähtekeelsele programmile vastav sihtkeelne programm. Transleerimine on korrektne, kui transleerimisel programmi tähendus säilib. Formaalsemalt: Olgu antud lähtekeel L ja sihtkeel M. Transleerimise spetsifitseerime transleerimisfunktsiooniga T : L M lähtekeele programmidest sihtkeele programmideks. Defineerime relatsiooni lähtekeele ja sihtkeele semantiliste objektide vahel. NB! V~ordusest üldiselt ei piisa, kuna sihtkeel on reeglina lähtekeelest vähem abstraktne. Transleerimine on korrektne, kui iga lähtekeelse programmi p korral S L [[p]] S M [[T [[p]]]]

Abstraktne masin Konfiguratsioonid on kujul c, e, s Code Stack State, kus c Code on käskude jada (kood) e Stack = (Z B) s State Instruktsioonid (elementaarkäsud): on väärtustusmagasin on kuhi i ::= push-n add mult sub true false eq le and neg fetch-x store-x noop branch(c, c) loop(c) c ::= ε i c; c

Abstraktse masina operatsioonsemantika Salvestuskäsud: push-n; c, e, s c, n : e, s true; c, e, s c, tt : e, s false; c, e, s c, ff : e, s fetch-x; c, e, s c, (s x) : e, s store-x; c, z : e, s c, e, s[x z] if z Z

Abstraktse masina operatsioonsemantika Arvutuskäsud: add; c, z 1 : z 2 : e, s c, (z 1 + z 2 ) : e, s if z 1, z 2 Z mult; c, z 1 : z 2 : e, s c, (z 1 z 2 ) : e, s if z 1, z 2 Z sub; c, z 1 : z 2 : e, s c, (z 1 z 2 ) : e, s if z 1, z 2 Z eq; c, z 1 : z 2 : e, s c, (z 1 = z 2 ) : e, s if z 1, z 2 Z le; c, z 1 : z 2 : e, s c, (z 1 z 2 ) : e, s if z 1, z 2 Z and; c, t 1 : t 2 : e, s c, (t 1 t 2 ) : e, s if t 1, t 2 B neg; c, t : e, s c, t : e, s if t B

Abstraktse masina operatsioonsemantika Juhtkäsud: noop; c, e, s c, e, s branch(c 1, c 2 ); c, tt : e, s c 1 ; c, e, s branch(c 1, c 2 ); c, ff : e, s c 2 ; c, e, s loop(c 1 ); c, tt : e, s c 1 ; loop(c 1 ); c, e, s loop(c 1 ); c, ff : e, s c, e, s

Abstraktse masina operatsioonsemantika näide push-1; fetch-x; add; store-x, ε, [x 3] fetch-x; add; store-x, [1], [x 3] add; store-x, [3, 1], [x 3] store-x, [4], [x 3] ε, ε, [x 4]

Abstraktse masina operatsioonsemantika näide C = push-1; store-y; C 2 ; loop(c 1 ) C 1 = C 3 ; C 4 ; C 2 C 2 = fetch-x; push-1; eq; neg C 3 = fetch-x; fetch-y; mult; store-y C 4 = push-1; fetch-x; sub; store-x push-1; store-y; C 2 ; loop(c 1 ), ε, [x 2]

Abstraktse masina operatsioonsemantika näide C = push-1; store-y; C 2 ; loop(c 1 ) C 1 = C 3 ; C 4 ; C 2 C 2 = fetch-x; push-1; eq; neg C 3 = fetch-x; fetch-y; mult; store-y C 4 = push-1; fetch-x; sub; store-x push-1; store-y; C 2 ; loop(c 1 ), ε, [x 2] store-y; C 2 ; loop(c 1 ), [1], [x 2] fetch-x; push-1; eq; neg; loop(c 1 ), ε, [x 2, y 1] push-1; eq; neg; loop(c 1 ), [2], [x 2, y 1] eq; neg; loop(c 1 ), [1, 2], [x 2, y 1] neg; loop(c 1 ), [ff], [x 2, y 1] loop(c 1 ), [tt], [x 2, y 1] C 3 ; C 4 ; C 2 ; loop(c 1 ), ε, [x 2, y 1]

Abstraktse masina operatsioonsemantika näide C = push-1; store-y; C 2 ; loop(c 1 ) C 1 = C 3 ; C 4 ; C 2 C 2 = fetch-x; push-1; eq; neg C 3 = fetch-x; fetch-y; mult; store-y C 4 = push-1; fetch-x; sub; store-x push-1; store-y; C 2 ; loop(c 1 ), ε, [x 2]... C 3 ; C 4 ; C 2 ; loop(c 1 ), ε, [x 2, y 1] fetch-y; mult; store-y; C 4 ; C 2 ; loop(c 1 ), [2], [x 2, y 1] mult; store-y; C 4 ; C 2 ; loop(c 1 ), [1, 2], [x 2, y 1] store-y; C 4 ; C 2 ; loop(c 1 ), [2], [x 2, y 1] C 4 ; C 2 ; loop(c 1 ), ε, [x 2, y 2] fetch-x; sub; store-x; C 2 ; loop(c 1 ), [1], [x 2, y 2] sub; store-x; C 2 ; loop(c 1 ), [2, 1], [x 2, y 2] store-x; C 2 ; loop(c 1 ), [1], [x 2, y 2] C 2 ; loop(c 1 ), ε, [x 1, y 2]

Abstraktse masina operatsioonsemantika näide C = push-1; store-y; C 2 ; loop(c 1 ) C 1 = C 3 ; C 4 ; C 2 C 2 = fetch-x; push-1; eq; neg C 3 = fetch-x; fetch-y; mult; store-y C 4 = push-1; fetch-x; sub; store-x push-1; store-y; C 2 ; loop(c 1 ), ε, [x 2]... C 2 ; loop(c 1 ), ε, [x 1, y 2] push-1; eq; neg; loop(c 1 ), [1], [x 1, y 2] eq; neg; loop(c 1 ), [1, 1], [x 1, y 2] neg; loop(c 1 ), [tt], [x 1, y 2] loop(c 1 ), [ff], [x 1, y 2] ε, ε, [x 1, y 2]

Abstraktse masina semantika omadusi Lemma: Kui c 1, e 1, s k c, e, s, siis c 1 ; c 2, e 1 e 2, s k c ; c 2, e e 2, s. Lemma: Kui c 1 ; c 2, e, s k ε, e, s siis leiduvad konfiguratsioon ε, e, s ja naturaalarvud k 1, k 2 sellised et c 1, e, s k 1 ε, e, s ja c 2, e, s k 2 ε, e, s, kus k = k 1 + k 2. Lemma: Abstraktse masina semantika on ühene.

Abstraktse masina operatsioonsemantika Operatsioonsemantika indutseerib semantilise funktsiooni M : Code (State State) so. iga koodijada c jaoks defineerime (osalise) funktsiooni M[[c]] State { State s if c, ε, s M[[c]]s = ε, ε, s undef otherwise

Keele While transleerimine Igale süntatilisele kategooriale seame vastavusse transleerimsfunktsiooni: CA : AExp Code CB : BExp Code CS : Stm Code

Keele While transleerimine Aritmeetiliste avaldiste transleerimine: CA[[n]] = push-n CA[[x]] = fetch-x CA[[a 1 + a 2 ]] = CA[[a 2 ]]; CA[[a 1 ]]; add CA[[a 1 a 2 ]] = CA[[a 2 ]]; CA[[a 1 ]]; mult CA[[a 1 a 2 ]] = CA[[a 2 ]]; CA[[a 1 ]]; sub

Keele While transleerimine T~oeväärtusavaldiste transleerimine: CB[[true]] = true CB[[false]] = false CB[[a 1 = a 2 ]] = CA[[a 2 ]]; CA[[a 1 ]]; eq CB[[a 1 a 2 ]] = CA[[a 2 ]]; CA[[a 1 ]]; le CB[[ b]] = CB[[b]]; neg CB[[b 1 b 2 ]] = CB[[b 2 ]]; CB[[b 1 ]]; and

Keele While transleerimine Lausete transleerimine: CS[[x := a]] = CA[[a]]; store-x CS[[skip]] = noop CS[[S 1 ; S 2 ]] = CS[[S 1 ]]; CS[[S 2 ]] CS[[if b then S 1 else S 2 ]] = CB[[b]]; branch(cs[[s 1 ]], CS[[S 2 ]]) CS[[while b do S]] = CB[[b]]; loop(cs[[s]]; CB[[b]])

Keele While transleerimine näited CS[[x := x + 1]] = CA[[x + 1]]; store-x = CA[[1]]; CA[[x]]; add; store-x = push-1; fetch-x; add; store-x CS[[while true do skip]] = CB[[true]]; loop(cs[[skip]]; CB[[true]]) = true; loop(noop; true)

Keele While transleerimine näide CS[[y := 1; while (x = 1) do (y := y x; x := x 1)]] = CS[[y := 1]]; CS[[while (x = 1) do (y := y x; x := x 1)]] = CA[[1]]; store-y; CB[[ (x = 1)]]; loop(cs[[y := y x; x := x 1]]; CB[[ (x = 1)]]) = push-1; store-y; CB[[x = 1]]; neg; loop(cs[[y := y x]]; CS[[x := x 1]]; CB[[x = 1]]; neg) = push-1; store-y; CA[[x]]; CA[[1]]; eq; neg; loop(cs[[y := y x]]; CS[[x := x 1]]; CA[[x]]; CA[[1]]; eq; neg) = push-1; store-y; fetch-x; push-1; eq; neg; loop(cs[[y := y x]]; CS[[x := x 1]]; fetch-x; push-1; eq; neg) = push-1; store-y; fetch-x; push-1; eq; neg; loop(ca[[y x]]; store-y; CA[[x 1]]; store-x; fetch-x; push-1; eq; neg) = push-1; store-y; fetch-x; push-1; eq; neg; loop(fetch-x; fetch-y; mult; store-y; push-1; fetch-x; sub; store-x; fetch-x; push-1; eq; neg)

Transleerimisfunktsioonide omadusi Lemma: Iga aritmeetilise avaldise a, magasini e ja oleku s korral CA[[a]], e, s ε, A[[a]]s : e, s Lemma: Iga t~oeväärtusavaldise b, magasini e ja oleku s korral CB[[b]], e, s ε, B[[b]]s : e, s Lemma: Iga While-keelse lause S, magasini e ja oleku s korral, kui leidub konfiguratsioon ε, e, s selline, et siis e = e. CS[[S]], e, s ε, e, s,

Transleerimise korrektsus (1) Teoreem: Iga While-keelse lause S korral S ns [[S]] = M[[CS[[S]]]] (so. transleerimine on korrektne keele While loomuliku semantika suhtes). Lemma: Iga While-keelse lause S ja olekute s, s korral S, s s = CS[[S]], ε, s ε, ε, s Lemma: Iga While-keelse lause S ja olekute s, s korral CS[[S]], ε, s k ε, ε, s = S, s s

Transleerimise korrektsus (1) Teoreem: Iga While-keelse lause S korral S ns [[S]] = M[[CS[[S]]]] (so. transleerimine on korrektne keele While loomuliku semantika suhtes). Lemma: Iga While-keelse lause S ja olekute s, s korral S, s s = CS[[S]], ε, s ε, ε, s Lemma: Iga While-keelse lause S ja olekute s, s korral CS[[S]], ε, s k ε, ε, s = S, s s

Transleerimise korrektsus (1) Teoreem: Iga While-keelse lause S korral S ns [[S]] = M[[CS[[S]]]] (so. transleerimine on korrektne keele While loomuliku semantika suhtes). Lemma: Iga While-keelse lause S ja olekute s, s korral S, s s = CS[[S]], ε, s ε, ε, s Lemma: Iga While-keelse lause S ja olekute s, s korral CS[[S]], ε, s k ε, ε, s = S, s s

Transleerimise korrektsus (2) bisimulatsioon Defineerime seose S, s CS[[S]], ε, s s ε, ε, s Lemma: Kui γ sos γ am ja γ sos γ sos, siis leidub γ am selline, et γ am + γ am ja γ sos γ am. Järeldus: Kui S, s s, siis CS[[S]], ε, s ε, ε, s. Lemma: Olgu γ sos γ 1 am ja γ 1 am γ 2 am... γ k am (k > 1), kus γ i am = S i, e i, s i ja e i = ε i {1, k}. Siis leidub konfiguratsioon γ sos selline, et γ sos γ sos ja γ sos γ k am. Järeldus: Kui CS[[S]], ε, s ε, ε, s, siis S, s s.

Transleerimise korrektsus (2) bisimulatsioon Defineerime seose S, s CS[[S]], ε, s s ε, ε, s Lemma: Kui γ sos γ am ja γ sos γ sos, siis leidub γ am selline, et γ am + γ am ja γ sos γ am. Järeldus: Kui S, s s, siis CS[[S]], ε, s ε, ε, s. Lemma: Olgu γ sos γ 1 am ja γ 1 am γ 2 am... γ k am (k > 1), kus γ i am = S i, e i, s i ja e i = ε i {1, k}. Siis leidub konfiguratsioon γ sos selline, et γ sos γ sos ja γ sos γ k am. Järeldus: Kui CS[[S]], ε, s ε, ε, s, siis S, s s.

Transleerimise korrektsus (2) bisimulatsioon Defineerime seose S, s CS[[S]], ε, s s ε, ε, s Lemma: Kui γ sos γ am ja γ sos γ sos, siis leidub γ am selline, et γ am + γ am ja γ sos γ am. Järeldus: Kui S, s s, siis CS[[S]], ε, s ε, ε, s. Lemma: Olgu γ sos γ 1 am ja γ 1 am γ 2 am... γ k am (k > 1), kus γ i am = S i, e i, s i ja e i = ε i {1, k}. Siis leidub konfiguratsioon γ sos selline, et γ sos γ sos ja γ sos γ k am. Järeldus: Kui CS[[S]], ε, s ε, ε, s, siis S, s s.

Transleerimise korrektsus (2) bisimulatsioon Defineerime seose S, s CS[[S]], ε, s s ε, ε, s Lemma: Kui γ sos γ am ja γ sos γ sos, siis leidub γ am selline, et γ am + γ am ja γ sos γ am. Järeldus: Kui S, s s, siis CS[[S]], ε, s ε, ε, s. Lemma: Olgu γ sos γ 1 am ja γ 1 am γ 2 am... γ k am (k > 1), kus γ i am = S i, e i, s i ja e i = ε i {1, k}. Siis leidub konfiguratsioon γ sos selline, et γ sos γ sos ja γ sos γ k am. Järeldus: Kui CS[[S]], ε, s ε, ε, s, siis S, s s.

Transleerimise korrektsus (2) bisimulatsioon Defineerime seose S, s CS[[S]], ε, s s ε, ε, s Lemma: Kui γ sos γ am ja γ sos γ sos, siis leidub γ am selline, et γ am + γ am ja γ sos γ am. Järeldus: Kui S, s s, siis CS[[S]], ε, s ε, ε, s. Lemma: Olgu γ sos γ 1 am ja γ 1 am γ 2 am... γ k am (k > 1), kus γ i am = S i, e i, s i ja e i = ε i {1, k}. Siis leidub konfiguratsioon γ sos selline, et γ sos γ sos ja γ sos γ k am. Järeldus: Kui CS[[S]], ε, s ε, ε, s, siis S, s s.