Précédent : Présentation
générale et objectifs Remonter : Projet
LOCO, Programmation en LOgique Suivant : Grands domaines d'application
Participants : Philippe Codognet , Jean-Hugues Réty ,
Nicolas Romero , Nadine Richard , Arnaud Lallouet
Mots-clés : programmation par contraintes, sémantique,
implantation, compilation, satisfaction de contraintes,
concurrence, programmation en logique, langage de programmation,
modèle d'exécution, parallélisme de données, monde virtuel,
VRML
Les aspects langages concurrents avec contraintes ont plus
particulièrement été étudiés. Ils permettent de combiner les
avantages des deux approches, c'est-à-dire d'une part la
possibilité de raisonner (symboliquement) et calculer
(numériquement) sur des domaines spécifiques (PLC) et d'autre
part la possibilité d'avoir un contrôle dynamique des calculs
dirigé par les données (concurrence) et non plus dirigé par les
instructions du programme.
L'idée fondamentale des langages concurrents avec contraintes est l'utilisation de contraintes pour étendre les mécanismes de synchronisation et de contrôle des langages logiques concurrents. Ainsi, différents agents (processus) communiquent et se synchronisent par l'intermédiaire d'un ensemble de contraintes global, où l'information s'accumule de manière monotone au fil du temps. Chaque agent peut soit ajouter une nouvelle contrainte (opération Tell), soit demander si une certaine contrainte est vraie dans (i.e. impliquée par) l'ensemble global (opération Ask). L'opération Tell correspond à l'ajout classique d'une contrainte en PLC. La synchronisation s'effectue par une opération Ask bloquante : si l'on ne peut décider si la contrainte est vraie ou fausse dans l'ensemble global de contraintes (i.e. il faut attendre d'avoir plus d'informations), l'agent est suspendu jusqu'à ce que d'autres agents ajoutent (Tell) les contraintes suffisantes pour décider.
Notre travail dans le domaine des langages concurrents avec contraintes a porté essentiellement sur l'extension du cadre CC aux systèmes distribués, par la définition de nouvelles primitives de communication (par message) et d'un cadre sémantique adéquat.
Participants : Philippe Codognet , Daniel Diaz , Yan
Georget , Frédéric Benhamou , Frédéric Goualard , Laurent
Granvilliers , Nicolas Romero
Mots-clés : programmation par contraintes, sémantique,
implantation, compilation, satisfaction de contraintes, modèle
d'exécution,
Parmi les différents domaines de calcul étudiés en PLC, les
domaines finis semblent être les plus prometteurs, car ils sont
très utiles dans de nombreuses applications industrielles comme
par exemple les problèmes combinatoires, l'ordonnancement,
cutting-stock, la simulation de circuits, le diagnostic,
l'aide à la décision ou même les problèmes booléens.
Nos travaux se poursuivent sur trois axes :
De plus, dans la continuité de nos travaux sur la résolution de contraintes hétérogènes et la résolution de contraintes numériques non-linéaires, nous nous sommes principalement intèressés aux problèmes suivants:
Résumé : Les faits marquants cette année ont été:
- La première version du système DecLIC de type PLC(intervalles).
- Une version améliorée de clp(FD), Calypso plus rapide et conforme au standard ISO.
Participants : Pierre Deransart , Christophe Aillaud ,
Frédéric Benhamou , Michel Bergère , Philippe Codognet , Daniel
Diaz , Gérard Ferrand , Frédéric Goualard , Laurent Granvilliers
, François Le Berre , Alexandre Tessier , Pascal Chambre ,
Bernard Malfon , Pierre Deransart , Ali Ed-Dbali , José de
Siqueira , Khaled El Qorchi
Mots-clés : programmation par contraintes, sémantique,
spécification formelle, débogage, Prolog, environnement de
programmation, grammaire attribuée, interprétation abstraite,
vérification de programme
Une caractéristique importante de la PLC est de permettre une approche uniforme du langage et de son environnement. En effet, les domaines de contraintes peuvent être utilisés à la fois pour décrire le programme et ses propriétés. L'aspect très « déclaratif » de la programmation logique avec contraintes permet de mettre en pratique des idées développées dans le cadre de la programmation en logique traditionnelle et sa réalisation « Prolog », qui n'avaient pu trouver d'applications réelles, faute d'être suffisamment déclaratives.
Notre approche vise alors à surmonter deux difficultés
majeures : à savoir, d'une part, comment dominer la complexité
des calculs développés dans des systèmes de contraintes
hétérogènes avec des outils de mise au point adaptés; et d'autre
part, comment consigner dans un document unique l'ensemble de
l'expérience de développement et de maintenance acquise pour une
application donnée (expérience résultant de sessions d'essais et
de tentatives de validation en particulier). Etayés par des
travaux théoriques sur la validation, le débogage et la
propagation, deux projets visent à explorer et proposer des
solutions pratiques : le projet européen DiSCiPl (,
) et du projet HyperPro (
,
).
Résumé : Les faits marquants cette année ont été:
- Le première revue du projet DiSCiPl consacrant une collaboration bénéfique avec nos différents partenaires, en particulier industriels.