3
Introduction
Il faudrait plus que quelques lignes pour définir fidèlement −si tant est que cela soit
possible− ce que l’appellation d’Intelligence Artificielle recouvre de nos jours. Disons que ce
domaine, d’orientation plus pragmatique que théorique, a pour objet de faire réaliser à des
systèmes informatiques des tâches complexes nécessitant une forme de « raisonnement » dit
« intelligent ». Des activités mentales comme par exemple celles nécessitées par la conduite
d’un véhicule, la pratique des mathématiques, la compréhension d’une langue, la pratique des
échecs ou l’étude d’un cours de l’école de l’air (…) sont habituellement considérées comme
faisant appel à un raisonnement « intelligent ». Durant ces dernières décennies de nombreux
systèmes informatiques pouvant accomplir des tâches de cette nature ont été conçus. Il existe
par exemple des systèmes capables de diagnostiquer une maladie, de battre le champion du
monde aux échecs, de prévoir la synthèse de produits chimiques complexes, de résoudre des
équations différentielles, d’écrire de petits programmes répondant à certaines spécifications
formelles, de traduire des textes de construction assez simple, ou de retranscrire un discours
oral (etc…). Ainsi l’intelligence artificielle est déjà présente dans le monde technologique qui
nous entoure. Plus que cela, son développement est intimement lié aux développements
technologiques à venir.
La conception de tels systèmes repose essentiellement sur des techniques générales
provenant de la logique, des mathématiques, et de l’informatique théorique. Ces techniques
sont encore en nombre relativement restreint −l’IA est une discipline récente−. Nous nous
focaliserons dans ce cours seulement sur l’une d’entre-elle, à cause de son importance et de sa
généralité (certaines techniques de théorie des graphes, d’heuristique, ou d’optimisation
combinatoire seront abordées par ailleurs, pour elles-mêmes, dans d’autres cours de la
mineure de Recherche Opérationnelle). La technique que nous étudierons est le fondement
théorique du langage de programmation logique PROLOG, langage utilisé pour la conception
de nombreux systèmes « intelligents ». Il s’agit grosso modo d’une technique de
démonstration automatique de théorèmes −même si elle sera rarement utilisée pour résoudre
des problèmes mathématiques.
Cette technique utilise la logique des prédicats pour représenter les connaissances dont
on dispose. Le langage des prédicats est suffisamment riche pour représenter formellement un
grand nombre de connaissances ou faits, et leurs relations logiques. A partir d’un ensemble de
connaissances initiales (c'est-à-dire de formules dans le langage des prédicats), on peut se
poser la question de savoir si un fait quelconque (traductible en une formule du même
langage) doit nécessairement être vrai (par exemple si : « Tous les hommes sont mortels » et
si « Socrate est un homme », alors « Socrate est mortel » est nécessairement vrai). Dans ce
cadre logique, la véracité d’un tel fait constitue un théorème, et pour l’établir il s’agit d’en
effectuer une démonstration. Pour qu’un système informatique soit capable à partir de certains
faits exprimés dans le langage des prédicats, d’en déduire d’autres il faut qu’il soit capable
d’effectuer des démonstrations automatiques. C’est d’une telle technique de démonstration
automatique dont ce cours fait l’objet.
Le cours se compose de deux chapitres. Dans le premier chapitre nous introduisons la
logique des prédicats, d’une façon assez classique. Dans le deuxième chapitre nous
établissons la procédure de preuve automatique dite procédure de preuve par réfutation. Nous
terminons ce chapitre par un survol (très rapide) du langage PROLOG, et par quelques
illustrations.
Novembre 2003
Approche logique de l'I.A.
http://www.i2m.univ-amu.fr/~preaux