Program Verification in Elixir

This project addresses the formalization and implementation of a verification system for Elixir, a dynamically typed programming language with functional programming principles. Our system is inspired by projects like Dafny and will likewise rely on a verification intermediate representation, which...

Descripción completa

Detalles Bibliográficos
Autor: Enríquez Ballester, Adrián
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/73938
Acceso en línea:https://hdl.handle.net/20.500.14352/73938
Access Level:acceso abierto
Palabra clave:004(043.3)
Program verification
Elixir
Metaprogramming
SMT
Intermediate representation
Formal methods
Verificación de programas
Metaprogramación
Representación intermedia
Métodos formales
Informática (Informática)
1203.17 Informática
Descripción
Sumario:This project addresses the formalization and implementation of a verification system for Elixir, a dynamically typed programming language with functional programming principles. Our system is inspired by projects like Dafny and will likewise rely on a verification intermediate representation, which will be the translation target of a supported Elixir subset plus ghost verification annotations, and uses SMT solvers for its verification. The metaprogramming capabilities of Elixir through macro expressions make this language suitable for developing domain-specific languages, and allows us to provide our implementation in Elixir itself without requiring us to modify its compiler or to implement a parser. Due to the breadth of the project, we have restricted the scope to sequential code and partial correctness verification.