previous up next top index
Précédent : Mécanisation de la déduction Remonter : Mécanisation de la déduction Suivant : Preuves par récurrence


Logique exécutable

 

Participants : Peter Borovanský, Claude Kirchner, Hélène Kirchner, Pierre-Etienne Moreau, Marian Vittek

ELAN est un cadre logique qui permet de formaliser, sur une base uniforme, différentes logiques et différents résolveurs de contraintes. La logique de réécriture introduite par J. Meseguer (SRI, Menlo Park) est à la base de la sémantique du mécanisme d'évaluation d'ELAN. En ELAN, les règles peuvent être conditionnelles et sont enrichies par une construction d'affectations locales. Nous avons ajouté à ce formalisme une notion de stratégie qui constitue la principale originalité du langage. Un système de calcul est une théorie de la logique de réécriture qui est enrichie par un ensemble de stratégies décrivant des calculs et contrôlant l'application des règles de réécriture. Elles sont utilisées à la fois pour décrire le déroulement des preuves menant à un résultat, et pour restreindre l'espace de recherche. Les stratégies s'expriment dans un langage d'expressions construites à partir de noms de règles et de stratégies, par l'opérateur de concaténation, les opérateurs d'itération et les opérateurs de choix qui permettent une gestion relativement fine de l'exploration de l'arbre de recherche. Ainsi ELAN peut être utilisé soit comme un cadre logique pour coder d'autres logiques, soit pour décrire et exécuter des processus décrits par des règles déterministes ou non. Une présentation générale du langage et de ses principales caractéristiques est faite dans [16]. Un certain nombre d'applications y sont mentionnées (voir également en section 3.1.1 et section 3.1.7 ).

Un compilateur décrit dans [44] a été conçu et implanté pour ELAN. Son originalité principale est de permettre une exécution efficace de la réécriture avec stratégies non déterministes. Son efficacité provient d'une implantation astucieuse du non déterminisme, d'une gestion optimisée de la mémoire, et de techniques de filtrage efficaces. Sur des programmes ne comportant pas d'opérateurs associatifs commutatifs, ELAN compilé se compare avantageusement avec les versions compilées de CAML ou ECLIPSE. Notre effort porte maintenant sur la généralisation du compilateur à l'ensemble des programmes ELAN incluant des opérateurs associatifs et/ou commutatifs.

La logique de réécriture permet de coder d'autres logiques mais aussi de se coder elle-même et présente par là un caractère réflexif connu depuis une dizaine d'années. Dans [34], les capacités reflexives d'ELAN sont étudiées et une théorie universelle pour la classe des programmes ELAN est proposée. Un interpréteur de programmes ELAN est écrit en ELAN et construit, en même temps qu'une dérivation, le terme de preuve associé. Deux modules prédéfinis sont proposés pour la réalisation d'un système réflexif et diverses applications sont mentionnées.

Dans [17], l'idée de contrôler la réécriture par des stratégies est développée en proposant un langage de stratégies plus puissant, dont la sémantique opérationnelle est encore basée sur la réécriture. Un premier langage de stratégies dites élémentaires correspond à la version d'ELAN décrite dans [16]. L'interprétation de stratégies comme ensemble de termes de preuves y est détaillée. Ce langage est ensuite enrichi par des stratégies définies par l'utilisateur sous forme de règles de réécriture. L'implantation de ces idées se poursuit en exploitant la réflexivité de la logique de réécriture.



previous up next top index Précédent : Mécanisation de la déduction Suivant : Preuves par récurrence Remonter : Mécanisation de la déduction