Séparation et interférence en jeux concurrents
| 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 |
Mots clés
Résumé
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.