Cours1
Prolog:
l’histoire
ECLiPSe
Programmation declarative Deux exemples de programme
Syntaxe de
Prolog
Sémantique
(opérationnelle) de
Prolog
Les nombres en Prolog
Résumé
• Les origines du Prolog (vers 1970):
• A. Colmerauer et al., Univ. d’Aix-Marseille.
Un système de communication homme-machine en français
• R. A. Kowalski, Imperial College, London.
Predicate logic as a programming languages
• L’age d’or (1982-1992): projet de recherche “Ordinateurs de
5ème génération” au Japon.
• La Programmation par Contraintes (dépuis 1987): extension de
Prolog. Applications industrielles et intérêt académique.
Prolog: l’histoire ECLiPSe
Programmation
declarative
Deux exemples de programme
Syntaxe de
Prolog
Sémantique
(opérationnelle) de
Prolog
Les nombres en Prolog
Résumé
Un grand nombre d’implementations disponibles. Voir par exemple: http://fr.wikipedia.org/wiki/Prolog La version que nous allons utiliser:
ECLiPSe
http://eclipseclp.org/
Principale avantage d’ECLiPSe par rapport à d’autres implémentations libres (GNU prolog, SWIProlog, YAP, . . . ), pour ce cours: traitement satisfaisant de la Programmation par Contraintes.
Prolog: l’histoire The user states the problem, the computer solves it
ECLiPSe
Programmation
declarative
Deux exemples de programme
Syntaxe de
Prolog
Sémantique
(opérationnelle) de
Prolog
Les nombres en Prolog
Résumé
Exemple: trier la liste L revient à produire une liste G ayant les mêmes éléments que L et qui soit triée. tri(L,G) :- meme_elts(L,G),triee(G).
La liste G est triée si chaque élément de G est plus petit que l’élément qui le suit (version itérative).
La liste G est triée si son premier élément est plus petit que son deuxième (à condition qu’ils existent), et si la sous-liste commençant au deuxième élément est elle-même triée (version récursive). triee([]). triee([_]). triee([X,Y|L]) :- X=<Y, triee([Y|L]).
L et G ont les mêmes éléments si . . .
Prolog: l’histoire Un programme prolog: assertions et règles ECLiPSe