LE PROTOTYPE: SURVEYOR
L’informatique se définit comme l’ensemble des disciplines scientifiques et des techniques spécifiquement applicables au traitement de l’information, notamment par des moyens automa tiques. L’intelligence artificielle est une discipline très avancée de l’informatique dont elle utilise les techniques pour essayer de réaliser des automates adoptant une démarche proche de la pensée humaine. Ainsi, elle concerne l’ensemble des modélisations de la connaissance et des techniques permettant d’atteindre ce but. En informatique traditionnelle, les programmes traitent essentielle ment de l’information numérique; donc, une information quantitative. Par contre, les programmes de l’intelligence artificielle traitent essentiellement les informations de nature symbolique et qual itative. Une des raisons qui ont poussées au développement des programmes de l’intelligence artificielle est celle de concevoir des machines qui permettent à l’utilisateur de déclarer des faits plutôt que des ordres. L’outil essentiel dans de tels développements est donc la notion ensembliste de relations [J.P. Sansonnet [SANS-85]]. Citons ici J. Pitrat « Presque tout reste encore à faire en intelligence artificielle’1 » [J. Pitrat [PITR-90]]. En effet, malgré les efforts considérables qui ont été déployés dans la recherche dans ce domaine et l’immense succès rapporté dans la conception et le développement de logiciels généraux et donc « réutilisables », il reste encore beaucoup à faire pour améliorer les performances de ces sys tèmes et bien que l’on soit parvenu dans les tarvaux actuels à décrire des procédés pour améliorer les performances d’un certain nombre d’applications, on est encore incapable de pouvoir les généraliser par des méthodes universelles « réutilisables » dans toute autre application. Ces difficultés sont par ticulièrement ressenties par des chercheurs qui ont réalisé des logiciels capables de résoudre une grande classe de problèmes [J.L. Laurière [LAUR-76], D. Fieschi [FIES-84)].
Le système SURVEYOR est un prototype de système algébrique basé sur la réécriture typée1 des expressions formelles. Il permet de traiter des expressions mathématiques par réécriture à partir d’une description déclarative (et/ou semi-déclarative) exprimée par une ou plusieurs spéci fications équationnelles (i.e. réécriture au moyen d’un ou plusieurs systèmes d’équations). Ainsi, l’objectif général du projet SURVEYOR est d’étudier, concevoir et tester des mécanismes et des outils permettant la réduction systématique d’expressions mathématiques à partir de spécifica tions axiomatiques équationnelles. Son implementation était faite dans la perspective de répondre à des questions dont la difficulté se révèle avec l’étude de points délicats concernant les prob lèmes d’évaluation, d’unification, de transformation symbolique, de suspension et de restauration d’informations au toplevel d’un interpréteur symbolique. Ainsi, ce chapitre est dédié à décrire les idées qui nous ont permis de réaliser SURVEYOR et les solutions proposées pour la résolution d’une large catégorie de problèmes oïl le contrôle de la connaissance peut se faire par des spécifications équationnelles.
Pour concevoir un logiciel qui répond à un nombre de critères de qualité, on passe souvent par un prototypage rapide. En général, l’ensemble des besoins et objectifs pour construire un système -qui n’existe pas encore- sont exprimés dans le langage nature!. Par ailleurs, il est souvent difficile et voir même impossible, d’avoir à l’avance une idée complète de ce que sera le système après sa réalisation. On ne pourra le constater qu’une fois le produit fini et testé au bout d’une certaine période. Ainsi, le développement doit être guidé non seulement par des aspects théoriques mais Nous pensons que le choix d’un système quelconque de calcul formel comme langage de pro grammation pour réaliser un logiciel permettant la représentation des connaissances algébriques et équationnelles revient à privilégier un mode de communication Homme-Machine. Le développe ment informatique d’une méthode de représentation des connaissances équationnelles sous une forme déclarative -ou algorithmique- à travers le langage d’un système, aussi puissant soit il, présente toujours l’inconvénient de conditionner la façon de penser du programmeur -dans la ré solution d’un problème mathématique donné- aux impératifs de représentation des connaissances dans le système en question. Ainsi, ce choix n’est pas neutre puisqu’il préjuge de l’efficacité de représentation de ces connaissances (définition des types, algorithmique de résolution d’un problème … etc). En réalité, un prototype peut être écrit dans n’importe quel langage de programmation et, de ce fait, dans les problèmes qui se rattachent à la connaissance, on préfère généralement l’exprimer dans un langage proche du langage naturel et, surtout, un langage qui permettra de modifier facilement les premières ébauches des travaux.