Les théories unificatrices de la programmation ( UTP ) en informatique traitent de la sémantique des programmes . Elles montrent comment la sémantique dénotationnelle , la sémantique opérationnelle et la sémantique algébrique peuvent être combinées dans un cadre unifié pour la spécification formelle , la conception et la mise en œuvre des programmes et des systèmes informatiques .
L'ouvrage portant ce titre, écrit par CAR Hoare et He Jifeng a été publié dans la collection Prentice Hall International Series in Computer Science en 1998 et est disponible gratuitement sur le Web.
Une série de symposiums UTP a été lancée en 2006.
Théories
Le fondement sémantique de l'UTP repose sur le calcul des prédicats du premier ordre , enrichi de constructions à point fixe issues de la logique du second ordre. Dans la lignée des travaux d' Eric Hehner , les programmes sont des prédicats en UTP, et aucune distinction n'est faite entre programmes et spécifications au niveau sémantique. Comme l'affirme Hoare :
Un programme informatique est identifié par le prédicat le plus fort décrivant chaque observation pertinente qui peut être faite du comportement d'un ordinateur exécutant ce programme.
Dans le jargon UTP, une théorie est un modèle d'un paradigme de programmation particulier. Une théorie UTP est composée de trois éléments :
- un alphabet , qui est un ensemble de noms de variables désignant les attributs du paradigme qui peuvent être observés par une entité externe ;
- une signature , c'est-à-dire l'ensemble des constructions du langage de programmation intrinsèques au paradigme ; et
- un ensemble de conditions de validité , qui définissent l'espace des programmes qui s'inscrivent dans le paradigme. Ces conditions de validité sont généralement exprimées sous forme de transformateurs de prédicats idempotents monotones .
Le perfectionnement des programmes est un concept important dans l'UTP.
où
Rapports
La théorie UTP la plus élémentaire est le calcul des prédicats alphabétique, qui ne comporte aucune restriction d'alphabet ni condition de validité. La théorie des relations est légèrement plus spécialisée, car l'alphabet d'une relation ne peut comprendre que :
- variables non décorées (
- variables primées (
Certaines constructions linguistiques courantes peuvent être définies dans la théorie des relations comme suit :
- L'instruction skip, qui ne modifie en aucune façon l'état du programme, est modélisée comme l'identité relationnelle :
- L'attribution de valeur
- La composition séquentielle de deux programmes n'est autre qu'une composition relationnelle d'états intermédiaires :
- Le choix non déterministe entre les programmes constitue leur plus grande limite inférieure :
- Le choix conditionnel entre programmes s'écrit en notation infixe :
- La sémantique de la récursivité est donnée par le plus petit point fixe.