Le dépôt institutionnel Papyrus sera indisponible pour quelques heures le mercredi 10 juin dès 20h, en raison d'une mise à jour logicielle. Merci de votre compréhension.
Repository logo

Vérification automatisée de programmes impératifs dans un langage à typage dépendant


Thèse ou mémoire / Thesis or Dissertation
Loading...
Thumbnail Image

Contributor(s)

Advisor(s)

Published in

Conference Date

Conference Place

Publisher

Degree Level

Maîtrise / Master's

Discipline

Affiliation

Keywords

  • Vérification formelle
  • Théorie des types
  • Imperative programming
  • Proof assistants
  • Dependent typing
  • Separation logic
  • Programmation fonctionnelle
  • Programmation impérative
  • Assistants à la preuve
  • Typage dépendant
  • Logique de séparation
  • Formal verification
  • Type theory
  • Functional programming

Funding organization(s)

Abstract

Les langages de programmation disposant d'un système de typage statique encouragent généralement une meilleure robustesse des programmes qui y sont écrits, car les risques de bogues introduits par inadvertance sont réduits par rapports aux systèmes à typage dynamique : plusieurs classes d'erreurs sont identifiées par le compilateur avant qu'un programme ne soit exécuté. Plusieurs travaux actuels visent à exploiter le typage statique pour pousser plus loin ces garanties de robustesse, en permettant d'exprimer formellement, sur un programme ou sur une partie de celui-ci, des contraintes arbitraires et d'en vérifier mécaniquement la conformité. Les techniques actuellement développées sont conçues pour s'appliquer à des langages fonctionnels. Cependant, la programmation fonctionnelle, en dépit de ses avantages au plan de la robustesse, est limitée en ce sens qu'elle n'autorise pas directement la manipulation de la mémoire, ce qui complique, dans certains cas, l'écriture d'algorithmes efficaces. Ce travail vise à introduire une extension dans un langage fonctionnel existant afin de permettre d'écrire des programmes dans un style impératif, c'est-à-dire qui manipulent directement la mémoire, et de vérifier statiquement leur conformité à des propriétés formelles.


Programming languages using static type systems generally make for more robust programs, as the risk of bugs being inadvertently introduced into a program written in a statically typed language is lower compared to dynamically typed languages, because compilers are able to flag certain kinds of errors before a program is run. A portion of the current research on the topic aims to leverage static type systems to enforce stronger robustness guarantees by allowing formal properties of a program, or part of it, to be mechanically verified. Methods being currently developed are meant to be used in functional languages. However, despite its advantages in terms of program robustness, the functional programming paradigm prohibits direct memory access and manipulation, which hinders the development of efficient algorithms. This work aims at extending an existing functional language to allow writing programs in an imperative style—that is, programs that directly manipulate their memory—while statically verifying and enforcing their conformity with formal properties.

Table of contents

Notes

Notes

Other language versions

Related research dataset(s)

Endorsement

Review

Supplemented By

Referenced By

This document disseminated on Papyrus is the exclusive property of the copyright holders and is protected by the Copyright Act (R.S.C. 1985, c. C-42). Unless the document is published under a Creative Commons licence, it may be used for fair dealing and non-commercial purposes, for private study or research, criticism and review as provided by law. For any other use, written authorization from the copyright holders is required.