Verification of Greedy Algorithms in Dafny

The proof that a program works according to a previously established behavior is known as formal verification. The use of formal verification techniques is increasing in recent years and in areas of the software industry. In this paper, the behavior of some greedy algorithms will be formally verifie...

Descripción completa

Detalles Bibliográficos
Autor: Pastor Pérez, Paula Eugenia
Tipo de recurso: tesis de maestría
Fecha de publicación:2022
País:España
Institución:Universidad Complutense de Madrid (UCM)
Repositorio:Docta Complutense
Idioma:inglés
OAI Identifier:oai:docta.ucm.es:20.500.14352/73993
Acceso en línea:https://hdl.handle.net/20.500.14352/73993
Access Level:acceso abierto
Palabra clave:004(043.3)
Formal verification
Greedy algorithms
Mathematical proofs
Dafny
Specification
Programming methodology.
Verificación formal
Algoritmos voraces
Demostraciones matemáticas
Especificación
Metodología de programación.
Informática (Informática)
1203.17 Informática
Descripción
Sumario:The proof that a program works according to a previously established behavior is known as formal verification. The use of formal verification techniques is increasing in recent years and in areas of the software industry. In this paper, the behavior of some greedy algorithms will be formally verified in Dafny. This will involve carrying out rigorous mathematical proofs in Dafny. In this paper, Dafny will be introduced first. It is a programming language that allows the user to check the correctness of his/her code. This will require a detailed specification of the expected behavior of the code. Secondly, greedy algorithms will be explained in detail, different problems where the greedy method is applied will be presented, and the strategy they follow to obtain an optimal solution will be studied. The specification of the code of each problem will be developed in Dafny and then the implementation of the greedy algorithm that solves it will be carried out in order to finally verify it. In addition, a generic methodology will be designed with the idea of being able to establish some steps to follow in the verification of these greedy algorithms for specific problems.