Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml

Bibliographic Details
Main Author: Chirica, Ion
Publication Date: 2024
Format: Master thesis
Language: eng
Source: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Download full: http://hdl.handle.net/10362/182680
Summary: When it comes to software development, programmers find themselves hardly implement- ing anything from scratch, relying on internal or third-party libraries with pre-written code. Besides providing genericity, abstraction, and performant features, by encapsulat- ing everything in a library, we are more keen to standardize code that has been formally proved correct. This work aims to formally prove a subset of the OCamlGraph library, with special concern on algorithms that employ higher-order iteration. By asserting the correctness of its algorithms, its users can feel safer knowing that the library is not error-inducing. We will base ourselves on GOSPEL specifications that can be consumed by the verification framework Cameleer. As most graph algorithms in the OCamlGraph library employ some sort of higher-ordered iteration, we seek to answer the question: “How to soundly and reliably formally verify implementations and clients of OCaml higher-order iteration, using mostly automated proof tools?”. In this document, we outline some theoretical and practical background concerning deductive verification in the functional paradigm and available techniques for specifying and verifying higher-order iteration. We also present our methodology for the specifica- tion and verification of higher-order iterators in OCaml using GOSPEL specifications. We complement this methodology with a collection of case studies that sustain our work.
id RCAP_fbd0ca027e1653b28dccb674d08c05cd
oai_identifier_str oai:run.unl.pt:10362/182680
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 Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCamlFormal VerificationHigher-Order IterationGraphsOCamlWhy3GOSPELDomínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaWhen it comes to software development, programmers find themselves hardly implement- ing anything from scratch, relying on internal or third-party libraries with pre-written code. Besides providing genericity, abstraction, and performant features, by encapsulat- ing everything in a library, we are more keen to standardize code that has been formally proved correct. This work aims to formally prove a subset of the OCamlGraph library, with special concern on algorithms that employ higher-order iteration. By asserting the correctness of its algorithms, its users can feel safer knowing that the library is not error-inducing. We will base ourselves on GOSPEL specifications that can be consumed by the verification framework Cameleer. As most graph algorithms in the OCamlGraph library employ some sort of higher-ordered iteration, we seek to answer the question: “How to soundly and reliably formally verify implementations and clients of OCaml higher-order iteration, using mostly automated proof tools?”. In this document, we outline some theoretical and practical background concerning deductive verification in the functional paradigm and available techniques for specifying and verifying higher-order iteration. We also present our methodology for the specifica- tion and verification of higher-order iterators in OCaml using GOSPEL specifications. We complement this methodology with a collection of case studies that sustain our work.No que toca ao desenvolvimento de software, os programadores raramente implementam muita coisa de raiz, dando uso a bibliotecas, quer internas ou de terceiros, com código pré-escrito. Para além da genericidade, da abstracção, e de componentes com um alto desempenho que costumam oferecer, a encapsulação de código numa biblioteca permite a sua normalização, se este for provado correto. Este trabalho propõe verificar formalmente um subconjunto da biblioteca OCamlGraph, com especial interesse em algoritmos que empreguem iteração de ordem superior. Ao afirmarmos a correção dos seus algoritmos, os seus utilizadores podem sentir-se mais confiantes ao saber que, pelo menos, a biblioteca não induzirá em erros. O trabalho vai ser baseado em especificações na linguagem GOSPEL que, por sua vez, serão consumidas pela plataforma de verificação Cameleer. A observação de que grande parte dos algoritmos da biblioteca OCamlGraph utiliza iteração de ordem superior, leva-nos a procurar responder à questão: “Como verificar formalmente, de modo completo e fiável, implementações e o consumo da iteração de ordem superior em OCaml, recorrendo a ferramentas de prova automática?”. Neste documento, vamos abordar algum fundamento teórico e prático no que diz respeito a verificação dedutiva no paradigma de programação funcional e algumas técnicas para especificação e verificação de iteração de ordem superior. Apresentamos ainda a nossa metodologia para a especificação e verificação destes mesmos iteradores, em OCaml, com o uso de especificaçãos na linguagem GOSPEL. Complementamos a nossa metodologia com uma coleção de casos de estudos que sustêm o nosso trabalho.Pereira, MárioRUNChirica, Ion2025-05-06T15:04:11Z2024-122024-12-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10362/182680enginfo: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:RCAAP2025-05-12T01:46:15Zoai:run.unl.pt:10362/182680Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-29T07:13:43.974145Repositó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 Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
title Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
spellingShingle Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
Chirica, Ion
Formal Verification
Higher-Order Iteration
Graphs
OCaml
Why3
GOSPEL
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
title_full Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
title_fullStr Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
title_full_unstemmed Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
title_sort Unfolding Iterators. Specification and Verification of Higher-Order Iterators, in OCaml
author Chirica, Ion
author_facet Chirica, Ion
author_role author
dc.contributor.none.fl_str_mv Pereira, Mário
RUN
dc.contributor.author.fl_str_mv Chirica, Ion
dc.subject.por.fl_str_mv Formal Verification
Higher-Order Iteration
Graphs
OCaml
Why3
GOSPEL
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Formal Verification
Higher-Order Iteration
Graphs
OCaml
Why3
GOSPEL
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description When it comes to software development, programmers find themselves hardly implement- ing anything from scratch, relying on internal or third-party libraries with pre-written code. Besides providing genericity, abstraction, and performant features, by encapsulat- ing everything in a library, we are more keen to standardize code that has been formally proved correct. This work aims to formally prove a subset of the OCamlGraph library, with special concern on algorithms that employ higher-order iteration. By asserting the correctness of its algorithms, its users can feel safer knowing that the library is not error-inducing. We will base ourselves on GOSPEL specifications that can be consumed by the verification framework Cameleer. As most graph algorithms in the OCamlGraph library employ some sort of higher-ordered iteration, we seek to answer the question: “How to soundly and reliably formally verify implementations and clients of OCaml higher-order iteration, using mostly automated proof tools?”. In this document, we outline some theoretical and practical background concerning deductive verification in the functional paradigm and available techniques for specifying and verifying higher-order iteration. We also present our methodology for the specifica- tion and verification of higher-order iterators in OCaml using GOSPEL specifications. We complement this methodology with a collection of case studies that sustain our work.
publishDate 2024
dc.date.none.fl_str_mv 2024-12
2024-12-01T00:00:00Z
2025-05-06T15:04:11Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10362/182680
url http://hdl.handle.net/10362/182680
dc.language.iso.fl_str_mv eng
language eng
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_ 1833602924490522624