L'unification est un concept si fondamental en informatique que peut-être même à un moment donné, nous le tenons pour acquis. Chaque fois que nous avons une règle ou une équation ou un modèle et que nous voulons l'appliquer à certaines données, l'unification est utilisée pour spécialiser la règle aux données. Ou si nous voulons combiner deux règles générales mais qui se chevauchent, l'unification nous fournit la règle combinée la plus générale. L'unification est au cœur de
Les prouveurs de théorèmes et assistants de preuve, incluent certains basés sur une unification d'ordre supérieur.
Implémentations de Prolog (en tant que résolution).
Tapez des algorithmes d'inférence.
Linguistique informatique / traitement du langage naturel.
Des systèmes de réécriture de termes tels que Maude, qui peuvent être utilisés comme base de la sémantique du langage de programmation.
Bases de données déductives.
Systèmes experts ou plus généralement Intelligence artificielle.
Systèmes d'algèbre informatique.
Correspondance de modèles dans les langages fonctionnels (au moins en partie ... correspondance uniquement).
Quelques approches d'analyse.
Certains langages de requête, notamment impliquant le Web sémantique.
Les assistants de preuve comme Isabelle / HOL travaillent au niveau syntaxique sur un calcul logique. Imaginez que vous ayez la règle du modus ponens (MP)
P→ Q , P⟹ Q
et l'objectif de preuve
( a ∨ b ) → ( c ∧ d) , a ∨ b ⟹!c ∧ d
Nous, les humains, voyons immédiatement que cela suit avec le modus ponens, mais la machine doit correspondre à l'objectif de gouverner syntaxiquement (que vous le fassiez apply rule mpou non apply simp), et c'est ce que fait l'unification. L'algorithme trouve avec φ ( P ) = a ∨ b et φ ( Q ) = c ∧ d , instancie la règle et l'applique.φφ ( P) = a ∨ bφ ( Q ) = c ∧ d
La bonne chose à propos des méthodes des assistants comme simpmaintenant est que si votre objectif est
Je ne pense pas qu'il soit important d' inférer des moteurs . L'algorithme d'unification est cependant très utile pour l' inférence de type . Il s'agit de deux types d'inférence très différents.
L'inférence de type est importante pour l'informatique car les types sont importants dans la théorie des langages de programmation, qui est une partie importante de l'informatique. Les types sont également proches de la logique et sont intensivement utilisés dans la démonstration automatisée des théorèmes. Il existe des implémentations d'algorithmes d'unification dans de nombreux, sinon tous, assistants de preuve et solveurs SMT.
Les moteurs d'inférence sont liés à l'intelligence artificielle, qui est également importante mais très différente. (J'ai vu des liens entre l'apprentissage et la logique, mais cela semble tiré par les cheveux.)
Je ne pense pas que la première phrase soit valide; voir ma réponse.
Raphael
1
Je suis également en désaccord avec la première phrase. La résolution (une spécialisation de l'unification) est au cœur de Prolog, qui est l'un des langages d'implémentation les plus courants pour les systèmes experts et autres moteurs d'inférence.
Dave Clarke
@Raphael et Dave: vous dites donc que l'algorithme d'unification est directement utilisé dans les moteurs d'inférence?
2012
@jmad: Je ne suis pas sûr qu'il existe l' algorithme d'unification et je ne sais pas non plus quel type de systèmes sont appelés "moteur d'inférence". Je sais que l'unification est largement utilisée partout où des logiques et / ou des sémantiques formelles apparaissent; voir la réponse de Dave pour une liste.
Raphael
@Raphael: c'est à peu près le problème que je voulais aborder: il semble que les moteurs d'inférence ne concernent pas l'inférence que je connais sur le type et la logique.
Je ne pense pas qu'il soit important d' inférer des moteurs . L'algorithme d'unification est cependant très utile pour l' inférence de type . Il s'agit de deux types d'inférence très différents.
L'inférence de type est importante pour l'informatique car les types sont importants dans la théorie des langages de programmation, qui est une partie importante de l'informatique. Les types sont également proches de la logique et sont intensivement utilisés dans la démonstration automatisée des théorèmes. Il existe des implémentations d'algorithmes d'unification dans de nombreux, sinon tous, assistants de preuve et solveurs SMT.
Les moteurs d'inférence sont liés à l'intelligence artificielle, qui est également importante mais très différente. (J'ai vu des liens entre l'apprentissage et la logique, mais cela semble tiré par les cheveux.)
la source