Search engine for discovering works of Art, research articles, and books related to Art and Culture
ShareThis
Javascript must be enabled to continue!

Differential program semantics

View through CrossRef
Sémantique différentielle des programmes Les programmes informatiques sont rarement écrits d'un seul coup, et sont au contraire composés de changements successifs. Il est également fréquent qu'un logiciel soit mis à jour après sa sortie initiale. De tels changements peuvent avoir lieu pour diverses raisons, comme l'ajout de fonctionnalités ou la correction de bugs. Il est en tout cas important d'être capable de représenter ces changements et de raisonner à leur propos pour s'assurer qu'ils implémentent les changements voulus.En pratique, les différences entre programmes sont très souvent représentées comme des différences textuelles sur le code source, listant les lignes de textes ajoutées, supprimées ou modifiées. Cette représentation, bien qu'exacte, ne dit rien de leurs conséquences sémantiques. Pour cette raison, il existe un besoin pour de meilleures représentations des différences sémantiques entre programmes.Notre première contribution est un algorithme de construction de programmes de corrélation, c'est-à-dire, des programmes entrelaçant les instructions de deux autres programmes de telle sorte qu'ils simulent leur sémantiques. Ces programmes de corrélation peuvent alors être analysés pour calculer une sur-approximation des différences sémantiques entre les deux programmes d'entrée. Ce travail est directement inspiré d'un article de Partush et Yahav, qui décrit un algorithme similaire, mais incorrect en présence de boucles avec des instructions `break` ou `continue`. Pour garantir la correction de notre algorithme, nous l'avons formalisé et prouvé à l'aide de l'assistant de preuve Coq.Notre seconde et plus importante contribution est un cadre formel permettant de décrire précisément et de formellement vérifier des différences sémantiques. Ce cadre, complètement formalisé en Coq, représente la différence entre deux programmes à l'aide d'un troisième programme que nous appelons oracle. Contrairement à un programme de corrélation, un oracle n'entrelace pas nécessairement les instructions des deux programmes à comparer, et peut « sauter » des calculs intermédiaires.Un tel oracle est généralement écrit dans un langage de programmation différent des programmes à comparer, ce qui permet de concevoir des langages d'oracles spécifiques à certaines classes de différences, capables de mettre en relation des programmes qui plantent avec des programmes qui s'exécutent correctement.Nous avons conçu de tels langages d'oracles pour couvrir un large éventail de différences sur un langage impératif jouet. Nous avons également prouvé que notre cadre est au moins aussi expressif que celui de la Logique Relationnelle de Hoare en encodant plusieurs variantes de cette dernière sous forme de langages d'oracles, prouvant leur correction dans la foulée.
Agence Bibliographique de l'Enseignement Supérieur
Title: Differential program semantics
Description:
Sémantique différentielle des programmes Les programmes informatiques sont rarement écrits d'un seul coup, et sont au contraire composés de changements successifs.
Il est également fréquent qu'un logiciel soit mis à jour après sa sortie initiale.
De tels changements peuvent avoir lieu pour diverses raisons, comme l'ajout de fonctionnalités ou la correction de bugs.
Il est en tout cas important d'être capable de représenter ces changements et de raisonner à leur propos pour s'assurer qu'ils implémentent les changements voulus.
En pratique, les différences entre programmes sont très souvent représentées comme des différences textuelles sur le code source, listant les lignes de textes ajoutées, supprimées ou modifiées.
Cette représentation, bien qu'exacte, ne dit rien de leurs conséquences sémantiques.
Pour cette raison, il existe un besoin pour de meilleures représentations des différences sémantiques entre programmes.
Notre première contribution est un algorithme de construction de programmes de corrélation, c'est-à-dire, des programmes entrelaçant les instructions de deux autres programmes de telle sorte qu'ils simulent leur sémantiques.
Ces programmes de corrélation peuvent alors être analysés pour calculer une sur-approximation des différences sémantiques entre les deux programmes d'entrée.
Ce travail est directement inspiré d'un article de Partush et Yahav, qui décrit un algorithme similaire, mais incorrect en présence de boucles avec des instructions `break` ou `continue`.
Pour garantir la correction de notre algorithme, nous l'avons formalisé et prouvé à l'aide de l'assistant de preuve Coq.
Notre seconde et plus importante contribution est un cadre formel permettant de décrire précisément et de formellement vérifier des différences sémantiques.
Ce cadre, complètement formalisé en Coq, représente la différence entre deux programmes à l'aide d'un troisième programme que nous appelons oracle.
Contrairement à un programme de corrélation, un oracle n'entrelace pas nécessairement les instructions des deux programmes à comparer, et peut « sauter » des calculs intermédiaires.
Un tel oracle est généralement écrit dans un langage de programmation différent des programmes à comparer, ce qui permet de concevoir des langages d'oracles spécifiques à certaines classes de différences, capables de mettre en relation des programmes qui plantent avec des programmes qui s'exécutent correctement.
Nous avons conçu de tels langages d'oracles pour couvrir un large éventail de différences sur un langage impératif jouet.
Nous avons également prouvé que notre cadre est au moins aussi expressif que celui de la Logique Relationnelle de Hoare en encodant plusieurs variantes de cette dernière sous forme de langages d'oracles, prouvant leur correction dans la foulée.

Related Results

The Formal Semantics of Programming Languages
The Formal Semantics of Programming Languages
The Formal Semantics of Programming Languages provides the basic mathematical techniques necessary for those who are beginning a study of the semantics and logics of programming la...
ON FORMAL AND COGNITIVE SEMANTICS FOR SEMANTIC COMPUTING
ON FORMAL AND COGNITIVE SEMANTICS FOR SEMANTIC COMPUTING
Semantics is the meaning of symbols, notations, concepts, functions, and behaviors, as well as their relations that can be deduced onto a set of predefined entities and/or known co...
Measure semantics and qualitative semantics for epistemic modals
Measure semantics and qualitative semantics for epistemic modals
In this paper, we explore semantics for comparative epistemic modals that avoid the entailment problems shown by Yalcin (2006, 2009, 2010) to result from Kratzer’s (1991) semantics...
Measure semantics and qualitative semantics for epistemic modals
Measure semantics and qualitative semantics for epistemic modals
In this paper, we explore semantics for comparative epistemic modals that avoid the entailment problems shown by Yalcin (2006, 2009, 2010) to result from Kratzer’s (1991) semantics...
Run-Based Semantics for RPQs
Run-Based Semantics for RPQs
RPQs (regular path queries) are an important building block of most query languages for graph databases. They are generally evaluated under homomorphism semantics; in particular o...
Semantic Search in Solar-Terrestrial Sciences
Semantic Search in Solar-Terrestrial Sciences
The interdisciplinary research and application fields of solar, solar-terrestrial and space physics encompasses a wide variety of physical and chemical phenomena. And increasingly ...
Lexical Semantics
Lexical Semantics
Lexical semantics is the study of word meaning. Two issues of demarcation are relevant in this respect. First, although the definition of lexical semantics may suggest otherwise, m...
cf2 Semantics Revisited
cf2 Semantics Revisited
Abstract argumentation frameworks nowadays provide the most popular formalization of argumentation on a conceptual level. Numerous semantics for this paradigm have been proposed, w...

Back to Top