Soothsharp: A C#-to-Viper translator
Soothsharp: překladač C# do jazyka Viper
diplomová práce (OBHÁJENO)
![Náhled dokumentu](/bitstream/handle/20.500.11956/90340/thumbnail.png?sequence=8&isAllowed=y)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/90340Identifikátory
SIS: 183413
Kolekce
- Kvalifikační práce [10923]
Autor
Vedoucí práce
Oponent práce
Ježek, Pavel
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové a datové inženýrství
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
6. 9. 2017
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
verifikace, programovací jazyky, kontrakty, oprávněníKlíčová slova (anglicky)
verification, programming languages, contracts, permissionsViper je verifikační infrastruktura vyvíjená na univerzitě ETH v Curychu. Pomocí této infrastruktury se dá ověřit, zda programy napsané v jazyku Viper vyhovují svým deklarovaným kontraktům a invariantům. V této práci vyvíjíme knihovnu kontraktů a překladač, který zkompiluje kód v jazyku C# do jazyku Viper, a tak umožní jeho verifikaci. Uživatel může anotovat svůj program těmito kontrakty a pak použít překladač, aby určil, zda je program funkčně korektní. Překladač podporuje podstatnou podmnožinu funkcí jayzku C#, včetně typů a polí. Je integrován s Visual Studiem, a ukazuje tak chyby z překladu a verifikace uživateli přímo v prostředí.
Viper is a verification infrastructure developed at ETH Zurich. Using this infrastructure, programs written in the Viper language may be analyzed for correctness with respect to assertions and contracts. In this thesis, we develop a contracts library and a translator program that compiles C# code into the Viper language and thus allows it to be verified. A user may annotate their C# program with these contracts and then use the translator to determine its functional correctness. The translator supports most C# features, including types and arrays. It also integrates with Visual Studio, showing translation and verification errors to the user on-the-fly.