Publicação
A Textbook of Verified OCaml Programs. A deductive study on algorithms and data structures
| Resumo: | We live in a society that has an ever-increasing dependency on critical software. Even minor programming oversights can have disastrous consequences, ranging from endangering human and animal lives to economic loss. Thus, it is crucial to verify the correctness of such programs, which can be achieved with deductive verification techniques. However, the teaching of such techniques is hampered by the small number of bibliographical works in this field. Our goal with this work is ambitious: to write a textbook on verified algorithms and data structures, fully automated or as close to it as possible. We believe that OCaml is the perfect programming language choice for this endeavour, due to its multi-paradigm nature, and its status as a general-purpose language with use cases in both academia and the industry. And, most importantly, it has good support for automated deductive verification with Cameleer and GOSPEL. The current version of the textbook includes more than 1000 lines of verified OCaml code spread across 6 chapters and more than 40 programs. Moreover, we offer a blend of functional and imperative case studies, and, overall, a substantial subset of constructs found in OCaml, including its module system. In this document, we discuss our thought process and design decisions behind the creation of a textbook on verified OCaml algorithms. Namely, identifying which classes of algorithms to tackle, which algorithms were chosen within those classes, and how to orga- nize the contents of the textbook, to name a few topics. Additionally, this is accompanied by an overview of theoretical and practical concepts concerning programming languages, algorithm analysis, deductive verification, and the selected tools. |
|---|---|
| Autores principais: | Gasparinho, Pedro Ramos |
| Assunto: | Deductive Verification OCaml GOSPEL Cameleer Why3 Algorithms |
| 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 |
Registos relacionados
groups Practical Deductive Verification of OCaml Programs
por: Pereira, Mário
Publicado em: (2025)
por: Pereira, Mário
Publicado em: (2025)
school Handle with Care and Confidence – Extending Cameleer with Algebraic Effects and Effect Handlers. An analysis of algebraic effects and techniques to deductively verify them
por: Soares, Tiago Lopes
Publicado em: (2022)
por: Soares, Tiago Lopes
Publicado em: (2022)
school Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
por: Chirica, Ion
Publicado em: (2024)
por: Chirica, Ion
Publicado em: (2024)
school Formal Verification of Programs Equivalence
por: Nini, João Francisco Serrenho
Publicado em: (2025)
por: Nini, João Francisco Serrenho
Publicado em: (2025)
school Formally Verified Bug-free Implementations of (Logical) Algorithms
por: Barroso, Pedro Miguel Laforêt
Publicado em: (2020)
por: Barroso, Pedro Miguel Laforêt
Publicado em: (2020)
school Máquinas de Turing em OCAML-FLAT/OFLAT
por: Lourenço, Miguel de Sousa
Publicado em: (2023)
por: Lourenço, Miguel de Sousa
Publicado em: (2023)
school A Mechanized Proof of Kleene’s Theorem in Why3
por: Trindade, André Duarte Teixeira
Publicado em: (2021)
por: Trindade, André Duarte Teixeira
Publicado em: (2021)
article A deductive reasoning approach for database applications using verification conditions
por: Alam, Imran
Publicado em: (2021)
por: Alam, Imran
Publicado em: (2021)
school Verification of distributed algorithms with the Why3 tool
por: Cruz, Carla Isabel Novais
Publicado em: (2022)
por: Cruz, Carla Isabel Novais
Publicado em: (2022)
article Animated logic
por: Barroso, Pedro
Publicado em: (2020)
por: Barroso, Pedro
Publicado em: (2020)
school Autómatos de Pilha em OCamlFLAT/OFLAT
por: Araújo, Miguel Santos
Publicado em: (2022)
por: Araújo, Miguel Santos
Publicado em: (2022)
school Efficient Declarative Programming in OCaml
por: Silvério, Diogo Rafael Rebocho
Publicado em: (2022)
por: Silvério, Diogo Rafael Rebocho
Publicado em: (2022)
school Análise de sintaxe LR em OCaml-FLAT/OFLAT
por: Sousa, Bernardo Rafael Pereira de
Publicado em: (2022)
por: Sousa, Bernardo Rafael Pereira de
Publicado em: (2022)
school OCaml-Flat on the Ocsigen framework
por: Macedo, Rita Pedroso
Publicado em: (2020)
por: Macedo, Rita Pedroso
Publicado em: (2020)
school Towards a formally verified microkernel using the Frama-C toolset
por: Carloto, Carlos José Abreu Dias da Silva
Publicado em: (2010)
por: Carloto, Carlos José Abreu Dias da Silva
Publicado em: (2010)
school Autómatos de Pilha nas ferramentas OCaml-FLAT/OFLAT
por: Freitas, Carlos Manuel Mendes
Publicado em: (2023)
por: Freitas, Carlos Manuel Mendes
Publicado em: (2023)
article CAOVerif: an open-source deductive verification platform for cryptographic software implementations
por: Almeida, José Bacelar
Publicado em: (2014)
por: Almeida, José Bacelar
Publicado em: (2014)
article Deductive verification of cryptographic software
por: Almeida, José Bacelar
Publicado em: (2010)
por: Almeida, José Bacelar
Publicado em: (2010)
article A generalized program verification workflow based on loop elimination and SA form
por: Belo Lourenco, Claudio
Publicado em: (2019)
por: Belo Lourenco, Claudio
Publicado em: (2019)
article A generalized approach to verification condition generation
por: Belo Lourenco, Claudio
Publicado em: (2018)
por: Belo Lourenco, Claudio
Publicado em: (2018)
article Melissus’and Zeno’s deductive speech
por: Brémond, Mathilde
Publicado em: (2024)
por: Brémond, Mathilde
Publicado em: (2024)
school Unrestricted grammars, context-sensitive grammars and context-free grammars in OCamlFLAT/OFLAT
por: Carlos, Pedro Guilherme Frazão
Publicado em: (2025)
por: Carlos, Pedro Guilherme Frazão
Publicado em: (2025)
article Unlawful Deductions to Fees or Allowances: Fostering Remuneration and Unlawful Deductions to Wages
por: Macleod, Mairin
Publicado em: (2025)
por: Macleod, Mairin
Publicado em: (2025)
school Verificação Formal de Programas com SPARK2014
por: Assunção, Paulo Manuel Fernandes de
Publicado em: (2017)
por: Assunção, Paulo Manuel Fernandes de
Publicado em: (2017)
school Formalization of deep learning techniques with the Why3 proof platform
por: Sousa, Márcio Alexandre Mota
Publicado em: (2022)
por: Sousa, Márcio Alexandre Mota
Publicado em: (2022)
article A case study on model checking and deductive verification techniques of safety-critical software
por: Silva, Rovedy Aparecida Busquim e
Publicado em: (2012)
por: Silva, Rovedy Aparecida Busquim e
Publicado em: (2012)
article A deductive verification platform for cryptographic software
por: Barbosa, Manuel
Publicado em: (2010)
por: Barbosa, Manuel
Publicado em: (2010)
article Formally verifying interactive systems : a review
por: Campos, J. Creissac
Publicado em: (1997)
por: Campos, J. Creissac
Publicado em: (1997)
school Working environment for automated deduction in geometry
por: Baeta, Nuno Miguel dos Santos
Publicado em: (2024)
por: Baeta, Nuno Miguel dos Santos
Publicado em: (2024)
school Working Environment for Automated Deduction in Geometry
por: Baeta, Nuno Miguel dos Santos
Publicado em: (2024)
por: Baeta, Nuno Miguel dos Santos
Publicado em: (2024)
article Fundamentals of expenses’ non-deductibility in the companies' income tax law: Portuguese’s case
por: Aldeia, Susana
Publicado em: (2020)
por: Aldeia, Susana
Publicado em: (2020)
article Verification conditions for single-assignment programs
por: Cruz, Daniela da
Publicado em: (2012)
por: Cruz, Daniela da
Publicado em: (2012)
groups Resorting to non euclidean plane geometries to develop deductive reasoning an onto-semiotic approach
por: Neto, Teresa
Publicado em: (2009)
por: Neto, Teresa
Publicado em: (2009)
article The legitimating fact in the transcendental deduction of the categories: on Dieter Henrich’s reading of Kant.
por: Klotz, Christian
Publicado em: (2013)
por: Klotz, Christian
Publicado em: (2013)
article Towards a canonical classical natural deduction system
por: Espírito Santo, José
Publicado em: (2013)
por: Espírito Santo, José
Publicado em: (2013)
school Conversão para Why3 de formalizações em Coq
por: Ferreira, Bárbara Andreia Cardoso
Publicado em: (2021)
por: Ferreira, Bárbara Andreia Cardoso
Publicado em: (2021)
article Towards a mostly-automated prover for bit-vector arithmetic
por: Abal, Iago
Publicado em: (2013)
por: Abal, Iago
Publicado em: (2013)
article Generalising KAT to verify weighted computations
por: Gomes, Leandro
Publicado em: (2019)
por: Gomes, Leandro
Publicado em: (2019)
article Doping detection in animals: A review of analytical methodologies published from 1990 to 2019
por: Moreira, Fernando Xavier
Publicado em: (2021)
por: Moreira, Fernando Xavier
Publicado em: (2021)
article A multi‐analyses approach of inductive/deductive asymmetry in the affective priming paradigm
por: Foroni, Francesco
Publicado em: (2023)
por: Foroni, Francesco
Publicado em: (2023)
Registos relacionados
-
groups Practical Deductive Verification of OCaml Programs
por: Pereira, Mário
Publicado em: (2025) -
school Handle with Care and Confidence – Extending Cameleer with Algebraic Effects and Effect Handlers. An analysis of algebraic effects and techniques to deductively verify them
por: Soares, Tiago Lopes
Publicado em: (2022) -
school Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
por: Chirica, Ion
Publicado em: (2024) -
school Formal Verification of Programs Equivalence
por: Nini, João Francisco Serrenho
Publicado em: (2025) -
school Formally Verified Bug-free Implementations of (Logical) Algorithms
por: Barroso, Pedro Miguel Laforêt
Publicado em: (2020)