Introduction à ProLog : les variables et Récursivité.Les faits et les règles forment une base de connaissance.=> Valider des questions à partir des faits et des règles, soit les questions sont des faits qui se trouvent explicitement explicitement explicitement dans la base de connaissance, soit Prolog peut valider la question à partir des faits et des règles à l‘aide de la résolution résolution. Ecrit en Fortran, il a été installé sur la plupart des matériels existants et s'est répandu un peu partout (France, Angleterre, Portugal, Espagne, Etats-Unis, Canada, Pologne, Hongrie,...).Parmi les autres implantations de PROLOG, il faut citer un compilateur écrit pour DEO10 par D.Warren. Prolog - Récursivité (cont. Les limites des implantations existantes ont été atteintes très rapidement, bien sur en ce qui concerne les notions de place mémoire, de facilité d'utilisation et de modularité mais aussi pour certains concepts de base. Ecrire une version récursive de met_sur en définissant un prédicat libere qui rend vraie la pré condition libre en réalisant une action si besoin. En prolog, on ne définit pas de fonction ou de procédures mais des prédicats (à valeur dans {0 , 1}), éventuellement avec 0 argument.Donc : Pour faire l'équivalent d'une procédure, on dit qu'un certain prédicat est vrai à condition qu'un certain nombre d'actions soient faites, par exemple :
On continue jusqu‘on trouve une information mise explicitement dans la base de connaissance qui valide la première règle.Il faut au moins deux clauses : Une clause de base qui peut valider la Il faut au moins deux clauses : Une clause de base qui peut valider la récursivité (terminer le boucle) et une clause qui contient la récursivité. Pour déclarer de tels faits, on déclare certains prédicats comme "dynamiques".On ne peut déplacer qu'un objet qui est "libre", c'est-à-dire en haut d'une pile, et on ne peut le mettre que sur la table (qui est supposée toujours "libre") ou en haut d'une autre pile. Le formalisme obtenu est naturel et élégant. ),xy (AGauche(x,y) AGauche(y,z) => AGauche(x,z)).„Si x est un cube, x n‘est pas une sphère“ :x (Cube(x) => ¬Sphère(x)) (Implication-ou).aGauche(X,Z) :- aGauche(X,Y), aGauche(Y,Z).Récursivité: Example Récursivité: Example,Récursivité: Example (cont.) Série d‘exercices n Série d‘exercices n° 6. Un programme y est constitué d'un ensemble de relations, et son exécution revient  démontrer une nouvelle relation à partir de celles qui constituent le programme. Il est en même temps très puissant et présente des possibilités intrinsèques (non—déterminisme, unification,...) qui, essentielles dans les problèmes d'I.A., ne se retrouvent ni dans les langages classiques, ni dans ceux de la famille de LISP.PROLOG a été utilisé dans diverses applications d'I.A. Révision de la récursivité: exercices corrigés et méthodes. Ici, notre plan sera constitué de l'ensemble des actions de déplacement effectuées, on le visualisera donc par l'instruction listind(deplace). Nous avons donc entrepris l'étude d'une nouvelle version de PROLOG qui essaye d'Apporter une solution à ces différents problèmes.On peut mentionner tout particulièrement les points suivants:PORTABILITE: Grâce à l'utilisation d'une machine virtuelle, le nouveau système Prolog est portable sur des ordinateurs de toutes tailles, y compris les 'micros'. Chaque action dans un plan doit être définie en 3 étapes :les préconditions : ensemble des faits qui doivent être vrais pour que l'action puisse être réalisée,la suppression des faits devenus faux après l'action,l'ajout des nouveaux faits vrais, y compris de l'action réalisée.Dans l’exemple précédent, vous pouvez vérifier que si les pré conditions ne sont pas remplies, l’action n’est pas effectuée:Évidemment, pour que les pré conditions soient vérifiées, il suffit de réaliser des actions qui les rendent vraies, ce qui peut amener à définir des actions récursives. Débuter avec le langage Prolog … c) Etablissez une liste d‘axiomes pour décrire les contraintes physiques de ce système. récursivité (terminer le boucle) et une clause qui contient la récursivité. En réalisant ce déplacement, on retire de l'ensemble des faits l'ancien positionnement du bloc déplacé, et on ajoute son nouveau positionnement. Avec ces fonctions, on peut observer la résolution et corriger les erreurs dans le code.