Publicação

Formal Verification of Programs Equivalence

Ver documento

Detalhes bibliográficos
Resumo:Ensuring that a program functions as intended is a complex issue that has been approached many times and in various ways throughout history. Human-assisted software verification is the most complete and reliable method, despite its inherent additional effort. The objective of this work is to ease proofs of complex programs by taking advantage of a relation to an equivalent program that is easier to prove. If it is possible to establish that two different programs are equivalent, it is also very likely that reusing the simplest specification will lead to a faster and easier proof of the more sophisticated program. Relational Hoare Logic paved the way to the development of several techniques to reason about the similarities of two different programs. In this work, we will base our approach on the concept of product programs to reduce relational verification into standard verification. Furthermore, there will be a description of the relevant background in order to effectively comprehend the approach we chose, as well as a presentation of the other possible methods to achieve what we propose. Finally, we describe the details of our implementation and showcase the capabilities of our tool using several real-world examples.
Autores principais:Nini, João Francisco Serrenho
Assunto:Deductive verification Program equivalence OCaml Cameleer Relational Hoare logic Product programs
Ano:2025
País:Portugal
Tipo de documento:dissertação de mestrado
Tipo de acesso:acesso aberto
Instituição associada:Universidade Nova de Lisboa
Idioma:inglês
Origem:Repositório Institucional da UNL
Descrição
Resumo:Ensuring that a program functions as intended is a complex issue that has been approached many times and in various ways throughout history. Human-assisted software verification is the most complete and reliable method, despite its inherent additional effort. The objective of this work is to ease proofs of complex programs by taking advantage of a relation to an equivalent program that is easier to prove. If it is possible to establish that two different programs are equivalent, it is also very likely that reusing the simplest specification will lead to a faster and easier proof of the more sophisticated program. Relational Hoare Logic paved the way to the development of several techniques to reason about the similarities of two different programs. In this work, we will base our approach on the concept of product programs to reduce relational verification into standard verification. Furthermore, there will be a description of the relevant background in order to effectively comprehend the approach we chose, as well as a presentation of the other possible methods to achieve what we propose. Finally, we describe the details of our implementation and showcase the capabilities of our tool using several real-world examples.