Thèse en cours

Séparation et interférence en jeux concurrents

FR  |  
EN
Auteur / Autrice : Victor Blanchi
Direction : Pierre Clairambault
Type : Projet de thèse
Discipline(s) : Informatique
Date : Inscription en doctorat le 01/09/2024
Etablissement(s) : Aix-Marseille
Ecole(s) doctorale(s) : Ecole Doctorale Mathématiques et Informatique de Marseille
Partenaire(s) de recherche : Laboratoire : LIS Laboratoire d'Informatique et Systèmes

Résumé

FR  |  
EN

Une évolution notable du monde des langages de programmation dans la dernière décennie est l'essor du langage Rust. Rust permet de combiner une gestion bas niveau de la mémoire (sans GC) avec une sûreté des accès mémoire garantie par typage. Pour ce faire, son système de types se base sur un principe d'ownership des ressources mémoire. Un processus ne peut affecter une ressource que s'il détient l'ownership, garantissant que la ressource n'a pas été désallouée. De même, le caractère affine du système de types garantit qu'aucun autre processus n'a l'ownership, interdisant les conflits mémoire. Bien que Rust vienne du monde de l'industrie, plusieurs des idées que ce langage met en œuvre ont des précurseurs dans la littérature scientifique: son système de type affine rappelle la logique linéaire, et en particulier son instrumentalisation pour formaliser le langage Syntactic Control of Interference (SCI) de Reynolds; à noter que l'étude sémantique de SCI a également inspiré la logique de séparation, qui a récemment amené avec Infer à une des applications industrielles les plus marquantes de ce côté des méthodes formelles. Pour autant, Rust n'a pas de sémantique claire, son système de types n'est pas prouvé sûr. Récemment, le projet RustBelt mené par Dreyer a visé à prouver corrects des fragments de Rust au sein de l'outil de formalisation en logique de séparation Iris. Rust est basé sur la sémantique opérationnelle; d'autres approches plus compositionnelles existent pour approcher la sémantique de Rust, par exemple via des traductions fonctionnelles. Mais à notre connaissance, personne ne s'est essayé à étudier même des fragments minimes de Rust avec des outils de sémantique dénotationnelle. Ceux-ci pourraient pourtant être complémentaires des approches existantes et s'avérer plus explicatives; l'enjeu est de mieux comprendre les structures mathématiques compositionnelles interactives, s'il y en a, derrière la sûreté à la Rust. Le fil central de cette thèse est l'objectif de proposer une sémantique dénotationnelle justifiant la sûreté de langages concurrents, d'ordre supérieur avec ressources partagées (e.g. références mutables) et munis d'un système de types qui, à l'instar de Rust, interdit certaines fautes mémoire. Crucialement, le modèle doit prouver cette sûreté (par exemple, en représentant les programmes par des structures satisfaisant une forme adéquate de déterminisme) et faire apparaître les structures compositionnelles interactives qui la sous-tendent. Notre outil pour attaquer ce problème sera le cadre des jeux concurrents, qui rendent explicite la structure causale présente dans le comportement interactif des programmes: un programme est représenté par une stratégie qui trace les événements calculatoires observables, avec leurs dépendances et indépendances causales. Les jeux concurrents sont un modèle expressif proposant une des représentations du comportement interactif des programmes les plus fines sur le marché. Cette structure causale semble naturelle (voire nécessaire) pour exprimer l'absence d'interférence entre processus, propriété qui ressemble à une indépendance causale.