
 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