Single-assignment program verification

Detalhes bibliográficos
Autor(a) principal: Lourenço, Cláudio Filipe Belo da Silva
Data de Publicação: 2018
Idioma: eng
Título da fonte: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Texto Completo: http://hdl.handle.net/1822/56332
Resumo: Programa de Doutoramento em Informática (MAP-i)
id RCAP_c12eb409acbf6b0b474c0aa889d49e87
oai_identifier_str oai:repositorium.sdum.uminho.pt:1822/56332
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling Single-assignment program verificationCiências Naturais::Ciências da Computação e da InformaçãoPrograma de Doutoramento em Informática (MAP-i)No contexto da verificação de programas, são várias as ferramentas que assentam na tradução de programas numa forma single-assignment (umas implicitamente e outras explicitamente), e depois num algoritmo que gera condições de verificação. Nesta tese, revisitamos dois grandes métodos tipicamente utilizados para a geração de condições de verificação a partir de programas single-assignment: predicate transformers (utilizados maioritariamente por ferramentas dedutivas) e a transformação baseada em conditional normal form (utilizados em bounded model checking de software). Com isto, identificamos vários aspetos nos quais estes métodos diferem e mostramos como estes podem ser combinados para produzir novos geradores de condições de verificação. Os métodos resultantes, juntamente com os iniciais, formam aquilo que designamos por VCGen cube e que propomos como uma framework para sintetizar e comparar a geração de condições de verificação. A nível teórico, propomos duas abordagens para a verificação baseada na tradução de programas em single-assignment e subsequente geração de condições de verificação. Por um lado, formalizamos uma técnica assente na tradução de programas While, anotados com invariantes de ciclo, em programas single-assignment contendo um comando especial para captar os respetivos ciclos e invariantes. Provas sobre a soundness e completeness do fluxo completo da técnica são apresentadas. A formalização da técnica é baseada numa lógica de programas que é adaptation-complete. Numa segunda abordagem, definimos formalmente a noção de programa single-assignment (sem ciclos) contendo os comandos assume e assert, e também exceções, e introduzimos uma lógica para estes programas que nos permite mostrar que o VCGen cube é sound e complete. Uma técnica de verificação que assenta na tradução de programas em single-assignment é então proposta e mais uma vez, o fluxo completo da framework é provado como sendo sound e complete. Em particular, a tradução concreta (esta também provada correta) traduz programas contendo ciclos em programas sem ciclos. Para a avaliação empírica dos geradores de condições de verificação, recorremos a duas abordagens, uma no contexto da linguagem intermédia LLVM, e outra no contexto da ferramenta de verificação dedutiva Why3. Embora os resultados não indiquem superioridade absoluta de nenhum método, estes revelam tendências interessantes.Many program veri cation tools rely on the translation of code annotated with properties into an intermediate single-assignment form (in a more or less explicit way), and then on an algorithm that generates veri cation conditions from it. In this thesis, we revisit two major methods that are widely used to produce veri cation conditions for single-assignment programs: predicate transformers (used mostly by deductive veri cation tools) and the conditional normal form transformation (used in bounded model checking of software). We identify different aspects in which the methods differ and show that they can be combined to produce new hybrid veri cation condition generators; together with the initial algorithms they form what we call the VCGen cube, which we propose as a framework for synthesizing and comparing veri cation condition generators. Optimizations implemented by veri cation tools are then integrated into the cube. At the theoretical level we propose two fully proved veri cation frameworks based on the translation into single-assignment and subsequent generation of veri cation conditions. On one hand we formalize program veri cation based on the translation of While programs annotated with loop invariants into an iterating single-assignment language with a dedicated iterating construct. Soundness and completeness proofs are given for the entire workflow, including the translation of annotated programs into iterating single-assignment form. The formalization is based on a program logic that we show to be adaptation-complete. On the other hand we formally de fine an iteration-free single-assignment language with assume, assert, and exceptions, and introduce a program logic for this language which allows us to prove the soundness and completeness of the VCGen cube. A veri cation framework based on the translation of programs into (iteration-free) single-assignment form is then proposed, and the entire workflow is proved to be sound and complete. We also suggest a concrete singleassignment translation that transforms annotated loops into assumes and asserts to check that the annotated invariants are valid and preserved during the iterations. Finally, we compare the veri cation condition generators empirically, both for programs of the LLVM intermediate representation (a concrete popular intermediate language that is based on SA form), and in the context of the Why3 deductive veri cation tool. Although the results do not indicate absolute superiority of any given method, they do allow us to identify interesting trends.This work was funded by FCT - Foundation for Science and Technology, the Portuguese Ministry of Science, Technology and Higher Education, through the Operacional Programme for Human Capital (POCH). Grant reference: PD/BD/52236/2013.Pinto, Jorge SousaUniversidade do MinhoLourenço, Cláudio Filipe Belo da Silva2018-07-022018-07-02T00:00:00Zdoctoral thesisinfo:eu-repo/semantics/publishedVersionapplication/pdfhttp://hdl.handle.net/1822/56332eng101509316info:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2024-05-11T05:28:10Zoai:repositorium.sdum.uminho.pt:1822/56332Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-28T15:19:34.910554Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv Single-assignment program verification
title Single-assignment program verification
spellingShingle Single-assignment program verification
Lourenço, Cláudio Filipe Belo da Silva
Ciências Naturais::Ciências da Computação e da Informação
title_short Single-assignment program verification
title_full Single-assignment program verification
title_fullStr Single-assignment program verification
title_full_unstemmed Single-assignment program verification
title_sort Single-assignment program verification
author Lourenço, Cláudio Filipe Belo da Silva
author_facet Lourenço, Cláudio Filipe Belo da Silva
author_role author
dc.contributor.none.fl_str_mv Pinto, Jorge Sousa
Universidade do Minho
dc.contributor.author.fl_str_mv Lourenço, Cláudio Filipe Belo da Silva
dc.subject.por.fl_str_mv Ciências Naturais::Ciências da Computação e da Informação
topic Ciências Naturais::Ciências da Computação e da Informação
description Programa de Doutoramento em Informática (MAP-i)
publishDate 2018
dc.date.none.fl_str_mv 2018-07-02
2018-07-02T00:00:00Z
dc.type.driver.fl_str_mv doctoral thesis
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/1822/56332
url http://hdl.handle.net/1822/56332
dc.language.iso.fl_str_mv eng
language eng
dc.relation.none.fl_str_mv 101509316
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órios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833595244507037696