On the semantics of exceptions for high level and low level languages
On the semantics of exceptions for high level and low level languages
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/40801Identifikátory
SIS: 120878
Katalog UK: 990014983630106986
Kolekce
- Kvalifikační práce [11985]
Autor
Vedoucí práce
Oponent práce
Kučera, Petr
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Teoretická informatika
Katedra / ústav / klinika
Katedra teoretické informatiky a matematické logiky
Datum obhajoby
3. 9. 2012
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
závisle typované programování, výjimky, certifikovaný kompilátor, korektnostKlíčová slova (anglicky)
dependently-typed programming, exceptions, certified compiler, correctnessV práci se zabýváme korektností kompilátoru jazyka s výjimkami. Předkládáme formální sémantiku; jak denotační sémantiku vysokoúrovňového jazyka, tak operační sémantiku jazyka instrukcí pro zásobníkový stroj. Studujeme metodu odvíjení zásobníku a poté, iterativně ve více krocích, předkládáme modifikovanou metodu. Tato je strukturálně rekurzivní a tudíž vhodná pro implementaci v totálních závisle typovaných jazycích. Nakonec předkládáme implementaci kompilátoru v závisle typovaném jazyce Agda, spolu se strojově ověřitelným důkazem, že předložená implementace kompilátoru při překladu zachovává sémantiku programu.
The thesis deals with correctness of a compiler of a simple language featuring exceptions. We present formal semantics, both denotational semantics of a~high-level language and operational semantics of a low-level language for a~simple stack machine. We study the method of stack unwinding and then iteratively, improving upon a naive solution, we present a different method that is structurally recursive and thus suitable for implementation in total dependently typed languages. Finally, we provide an implementation of the compiler in the dependently typed functional programming language Agda, along with a mechanically verifiable proof of adherence of the implementation to the semantics.
