# Chaînage arrière

Le chaînage arrière ou raisonnement arrière est une méthode d'inférence qui peut être décrite (en termes profanes) comme une manière de travailler en remontant en arrière de l'objectif. Il est utilisé en intelligence artificielle, dans un système expert à base de règles ou encore dans un assistant de preuve.
En théorie des jeux, son utilisation dans les sous-jeux pour trouver une solution au jeu est appelée raisonnement rétrograde. Aux échecs, elle est appelée analyse rétrograde et sert à déterminer quels coups ont été joués pour atteindre une position donnée, pour la fin de la partie d'échecs pour les programmes d'échecs.
Le chaînage arrière est mis en œuvre dans la programmation logique par la SLD-résolution. Les deux règles sont basées sur le modus ponens, qui est une des deux méthodes les plus couramment utilisées de raisonnement avec des règles d'inférence et les implications logiques — l'autre est le chaînage avant. Les systèmes arrières emploient généralement un enchaînement en profondeur, comme Prolog.

## Fonctionnement

Le chaînage arrière commence par une liste d'objectifs ou d'hypothèses et fonctionne à l'envers, de la conséquence à l'antécédent, pour voir s'il y a des données disponibles qui soutiennent l'une de ces conséquences. Un moteur d'inférence, à l'aide du chaînage arrière, pourrait chercher l'inférence des règles jusqu'à ce qu'il trouve celui qui a une conséquence qui correspond à un objectif désiré. Si l'antécédent de cette règle n'est pas connu pour être vrai, alors il est ajouté à la liste des objectifs.
Par exemple, on suppose que l'objectif est de conclure la couleur d'un animal de compagnie nommé Fritz, étant donné qu'il coasse et mange des mouches, et que la base des règles contient les quatre règles suivantes :
* Si X coasse et mange des mouches, alors X est une grenouille.
* Si X piaule et chante, alors X est un canari.
* Si X est une grenouille, alors X est vert.
* Si X est un canari, alors X est jaune.
Sur ces règles de bases examinées, les troisième et quatrième règles seraient choisies, parce que leurs conséquents (alors X est vert, alors X est jaune) correspondent à l'objectif (déterminer la couleur de Fritz). On ne sait pas encore que Fritz est une grenouille, donc les antécédents (Si X est une grenouille, Si X est un canari) sont ajoutés à la liste d'objectifs. Les règles de base sont de nouveau examinées, et cette fois-ci ce sont les deux premières règles qui sont sélectionnées, parce que leurs conséquents (alors X est une grenouille, alors X est un canari) correspondent aux nouveaux objectifs qui viennent d'être ajoutés à la liste. L'antécédent (Si X coasse et mange des mouches) est connu pour être vrai et, par conséquent, on peut conclure que Fritz est une grenouille, et non un canari. L'objectif de détermination de la couleur de Fritz est maintenant atteint (Fritz est vert s'il s'agit d'une grenouille, et jaune s'il est un canari, mais il s'agit d'une grenouille car il coasse et mange les mouches et, par conséquent, Fritz est vert).
Les objectifs correspondent toujours aux versions affirmées des conséquents de conséquences (et non les versions négatives comme dans un modus tollens) et leurs antécédents sont alors considérés comme les nouveaux objectifs (et non les conclusions comme dans l'affirmation du conséquent) qui en fin de compte doivent correspondre à des faits connus, généralement définis comme des conséquents dont les antécédents sont toujours vrais. Ainsi, la règle d'inférence utilisée est le modus ponens.
Cette méthode est appelée « goal-driven » (retranscrit littéralement guidée par un objectif), parce que la liste des objectifs détermine les règles qui sont choisies et utilisées, contrairement au chaînage avant.
Les langages de programmation tels que Prolog, Knowledge Machine et ECLiPSe soutiennent le chaînage arrière au sein des moteurs d'inférence.