Semantics and proof calculus for communicating unstructured code

Detalhes bibliográficos
Autor(a) principal: Azzi, Guilherme Grochau
Data de Publicação: 2015
Tipo de documento: Trabalho de conclusão de curso
Idioma: eng
Título da fonte: Repositório Institucional da UFRGS
Texto Completo: http://hdl.handle.net/10183/126048
Resumo: Die Korrektheit von Software ist besonders bei sicherheitskritischen Anwendungen von entscheidender Bedeutung, wenn Fehler das Leben von Menschen gefahrden konnen oder gro en nanziellen Schaden anrichten. Um die Korrektheit sicherzustellen, sind formale Veri kationsverfahren wichtig, da sie Eigenschaften der Systeme mathematisch beweisen konnen. Fur die Veri kation von Programmen, die in hoheren, strukturierten Programmiersprachen geschrieben wurden, werden diese Verfahren schon hau g in der Praxis angewendet. Strukturierte Programmiersprachen unterscheiden sich allerdings sehr von unstrukturiertem Maschinencode, in den sie ubersetzt werden und der anschlie end tatsachlich durchgefuhrt wird. Die Formalisierung unstrukturierter Sprachen ist also in gewissen Fallen notwendig, beispielsweise fur die Veri kation von Compilern. Obwohl einige Verfahren fur die Veri kation von unstrukturiertem Code schon existieren und weitere fur nebenlau- ge, kommunizierende Programme, konnen sie mit beiden Eigenschaften umgehen. In dieser Arbeit wird eine operationale Semantik im Small-Step- und Big-Step- Stil sowie ein Korrektheitskalkul fur Low-Level Do (LLDo) entwickelt. LLDo ist eine kleine, exible und unstrukturierte Programmiersprache, die nebenlau ge und kommunizierende Prozesse beschreibt. Um unstrukturierte und kommunizierende Programme kompositional behandeln zu konnen, werden existierende Ansatze fur die jeweiligen Problemstellungen kombiniert. Die Anwendbarkeit des Kalkuls wird mit einigen einfachen Beispielen gezeigt.
id UFRGS-2_c317b9bfcd1c3302b55a4eb54f6826cc
oai_identifier_str oai:www.lume.ufrgs.br:10183/126048
network_acronym_str UFRGS-2
network_name_str Repositório Institucional da UFRGS
repository_id_str
spelling Azzi, Guilherme GrochauMachado, RodrigoGlesner, SabineJähnig, Nils2015-08-29T02:40:04Z2015http://hdl.handle.net/10183/126048000971092Die Korrektheit von Software ist besonders bei sicherheitskritischen Anwendungen von entscheidender Bedeutung, wenn Fehler das Leben von Menschen gefahrden konnen oder gro en nanziellen Schaden anrichten. Um die Korrektheit sicherzustellen, sind formale Veri kationsverfahren wichtig, da sie Eigenschaften der Systeme mathematisch beweisen konnen. Fur die Veri kation von Programmen, die in hoheren, strukturierten Programmiersprachen geschrieben wurden, werden diese Verfahren schon hau g in der Praxis angewendet. Strukturierte Programmiersprachen unterscheiden sich allerdings sehr von unstrukturiertem Maschinencode, in den sie ubersetzt werden und der anschlie end tatsachlich durchgefuhrt wird. Die Formalisierung unstrukturierter Sprachen ist also in gewissen Fallen notwendig, beispielsweise fur die Veri kation von Compilern. Obwohl einige Verfahren fur die Veri kation von unstrukturiertem Code schon existieren und weitere fur nebenlau- ge, kommunizierende Programme, konnen sie mit beiden Eigenschaften umgehen. In dieser Arbeit wird eine operationale Semantik im Small-Step- und Big-Step- Stil sowie ein Korrektheitskalkul fur Low-Level Do (LLDo) entwickelt. LLDo ist eine kleine, exible und unstrukturierte Programmiersprache, die nebenlau ge und kommunizierende Prozesse beschreibt. Um unstrukturierte und kommunizierende Programme kompositional behandeln zu konnen, werden existierende Ansatze fur die jeweiligen Problemstellungen kombiniert. Die Anwendbarkeit des Kalkuls wird mit einigen einfachen Beispielen gezeigt.Software tende a se tornar cada vez mais onipresente e complexo. Seu uso em aplicações críticas, onde defeitos podem causar grandes danos materiais, ambientais ou até mortes, exige um alto grau de confiança em sua corretude. Para garantir tais níveis de confiança, a verificação formal é uma boa ferramenta, dado que pode provar propriedades do sistema ou de seus modelos. Métodos formais já são frequentemente empregados na verificação de hardware e software, sendo o software normalmente implementado ou modelado em linguagens com alto nível de abstração, cuja análise é mais simples. Tais linguagens são, no entanto, bastante diferentes do código de máquina que é efetivamente executado. A formalização de código não-estruturado pode, portanto, ser necessária para algumas aplicações, como a verificação de compiladores. Enquanto a verificação de programas sequenciais e estruturados já foi extensivamente explorada, programas concorrentes ou não-estruturados ainda são um problema em aberto. Além disso, a maioria das abordagens existentes lida apenas com um dos dois aspectos, e não com a sua combinação. Neste trabalho é definida uma semântica formal para a linguagem Low-Level Do (LLDO), uma linguagem não-estruturada pequena e flexível que permite a especificação de processos comunicantes. A semântica operacional é apresentada tanto em estilo Small-Step quanto Big-Step. Além disso, um cálculo é proposto para a verificação de corretude de tais programas. Tanto a semântica Big-Step quanto o cálculo são definidos de maneira composicional ao combinar técnicas existentes que lidam individualmente com concorrência ou código não-estruturado. A aplicabilidade do cálculo é testada em alguns exemplos, e todo o trabalho é formalizado no assistente de provas Isabelle/HOL.Software becomes ever more ubiquitous and complex. Its use in safety-critical environments, where errors may harm people or cost great amounts of money, requires a high level of con dence in its correctness. In order to ensure such levels of con- dence, the use of formal veri cation methods to prove properties of the systems is an important tool. Such formal methods are widely applied to verify hardware and software, the latter usually written or modelled in high-level languages which are much easier to reason about. Such languages are, however, very di erent from the machine code which is actually executed. Therefore, the formalization of unstructured code may be necessary for some applications, such as the veri cation of compilers. Formal veri cation of sequential, structured programs has been extensively explored, but the techniques for concurrent or unstructured code are still an open problem. Furthermore, most approaches contemplate either concurrency and communication or unstructured code, not supporting the combination of the two. In this thesis, operational semantics in small- and big-step style and a proof calculus are de ned for Low-Level Do (LLDo), a small and exible unstructured language for communicating processes which should be general enough to model more complex languages. The big-step semantics and the proof calculus are de ned in a compositional way, unifying techniques already used for dealing with communicating or unstructured code individually. The applicability of the calculus is tested on some simple examples.application/pdfengAlgoritmos : AnaliseSemântica formalSemantics and proof calculus for communicating unstructured codeinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisUniversidade Federal do Rio Grande do SulInstituto de InformáticaPorto Alegre, BR-RS2015Ciência da Computação: Ênfase em Ciência da Computação: Bachareladograduaçãoinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRGSinstname:Universidade Federal do Rio Grande do Sul (UFRGS)instacron:UFRGSORIGINAL000971092.pdf000971092.pdfTexto completo (inglês)application/pdf697030http://www.lume.ufrgs.br/bitstream/10183/126048/1/000971092.pdf59529a4155a831bb86a8fb38887f9db5MD51TEXT000971092.pdf.txt000971092.pdf.txtExtracted Texttext/plain121425http://www.lume.ufrgs.br/bitstream/10183/126048/2/000971092.pdf.txt91db0b038d1d149dc43599ad951ad1afMD52THUMBNAIL000971092.pdf.jpg000971092.pdf.jpgGenerated Thumbnailimage/jpeg1174http://www.lume.ufrgs.br/bitstream/10183/126048/3/000971092.pdf.jpgf8e875e63067ace3cab0ed089a5b39b1MD5310183/1260482021-05-07 04:33:19.919369oai:www.lume.ufrgs.br:10183/126048Repositório InstitucionalPUBhttps://lume.ufrgs.br/oai/requestlume@ufrgs.bropendoar:2021-05-07T07:33:19Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)false
dc.title.pt_BR.fl_str_mv Semantics and proof calculus for communicating unstructured code
title Semantics and proof calculus for communicating unstructured code
spellingShingle Semantics and proof calculus for communicating unstructured code
Azzi, Guilherme Grochau
Algoritmos : Analise
Semântica formal
title_short Semantics and proof calculus for communicating unstructured code
title_full Semantics and proof calculus for communicating unstructured code
title_fullStr Semantics and proof calculus for communicating unstructured code
title_full_unstemmed Semantics and proof calculus for communicating unstructured code
title_sort Semantics and proof calculus for communicating unstructured code
author Azzi, Guilherme Grochau
author_facet Azzi, Guilherme Grochau
author_role author
dc.contributor.author.fl_str_mv Azzi, Guilherme Grochau
dc.contributor.advisor1.fl_str_mv Machado, Rodrigo
Glesner, Sabine
dc.contributor.advisor-co1.fl_str_mv Jähnig, Nils
contributor_str_mv Machado, Rodrigo
Glesner, Sabine
Jähnig, Nils
dc.subject.por.fl_str_mv Algoritmos : Analise
Semântica formal
topic Algoritmos : Analise
Semântica formal
description Die Korrektheit von Software ist besonders bei sicherheitskritischen Anwendungen von entscheidender Bedeutung, wenn Fehler das Leben von Menschen gefahrden konnen oder gro en nanziellen Schaden anrichten. Um die Korrektheit sicherzustellen, sind formale Veri kationsverfahren wichtig, da sie Eigenschaften der Systeme mathematisch beweisen konnen. Fur die Veri kation von Programmen, die in hoheren, strukturierten Programmiersprachen geschrieben wurden, werden diese Verfahren schon hau g in der Praxis angewendet. Strukturierte Programmiersprachen unterscheiden sich allerdings sehr von unstrukturiertem Maschinencode, in den sie ubersetzt werden und der anschlie end tatsachlich durchgefuhrt wird. Die Formalisierung unstrukturierter Sprachen ist also in gewissen Fallen notwendig, beispielsweise fur die Veri kation von Compilern. Obwohl einige Verfahren fur die Veri kation von unstrukturiertem Code schon existieren und weitere fur nebenlau- ge, kommunizierende Programme, konnen sie mit beiden Eigenschaften umgehen. In dieser Arbeit wird eine operationale Semantik im Small-Step- und Big-Step- Stil sowie ein Korrektheitskalkul fur Low-Level Do (LLDo) entwickelt. LLDo ist eine kleine, exible und unstrukturierte Programmiersprache, die nebenlau ge und kommunizierende Prozesse beschreibt. Um unstrukturierte und kommunizierende Programme kompositional behandeln zu konnen, werden existierende Ansatze fur die jeweiligen Problemstellungen kombiniert. Die Anwendbarkeit des Kalkuls wird mit einigen einfachen Beispielen gezeigt.
publishDate 2015
dc.date.accessioned.fl_str_mv 2015-08-29T02:40:04Z
dc.date.issued.fl_str_mv 2015
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10183/126048
dc.identifier.nrb.pt_BR.fl_str_mv 000971092
url http://hdl.handle.net/10183/126048
identifier_str_mv 000971092
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRGS
instname:Universidade Federal do Rio Grande do Sul (UFRGS)
instacron:UFRGS
instname_str Universidade Federal do Rio Grande do Sul (UFRGS)
instacron_str UFRGS
institution UFRGS
reponame_str Repositório Institucional da UFRGS
collection Repositório Institucional da UFRGS
bitstream.url.fl_str_mv http://www.lume.ufrgs.br/bitstream/10183/126048/1/000971092.pdf
http://www.lume.ufrgs.br/bitstream/10183/126048/2/000971092.pdf.txt
http://www.lume.ufrgs.br/bitstream/10183/126048/3/000971092.pdf.jpg
bitstream.checksum.fl_str_mv 59529a4155a831bb86a8fb38887f9db5
91db0b038d1d149dc43599ad951ad1af
f8e875e63067ace3cab0ed089a5b39b1
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)
repository.mail.fl_str_mv lume@ufrgs.br
_version_ 1834472179969818624