¿Por qué la unificación es tan importante para los motores de inferencia?

Respuestas:

11

La unificación es un concepto tan fundamental en ciencias de la computación que quizás a veces incluso lo damos por sentado. Cada vez que tenemos una regla o ecuación o patrón y queremos aplicarlo a algunos datos, la unificación se utiliza para especializar la regla a los datos. O si queremos combinar dos reglas generales pero superpuestas, la unificación nos proporciona la regla combinada más general. La unificación es el núcleo de

  • Los probadores de teoremas y asistentes de pruebas, incluyen algunos basados ​​en la unificación de orden superior.
  • Prolog implementaciones (como resolución).
  • Algoritmos de inferencia de tipo.
  • Lingüística computacional / procesamiento del lenguaje natural.
  • Sistemas de reescritura de términos como Maude, que pueden utilizarse como base de la semántica del lenguaje de programación.
  • Bases de datos deductivas.
  • Sistemas expertos o, más en general, inteligencia artificial.
  • Sistemas de álgebra computacional.
  • Coincidencia de patrones en lenguajes funcionales (al menos en parte ... solo coincidencia).
  • Algunos enfoques de análisis.
  • Algunos lenguajes de consulta, especialmente relacionados con la Web Semántica.
Dave Clarke
fuente
8

Asistentes de prueba como Isabelle / HOL trabajan a nivel sintáctico en un cálculo lógico. Imagina que tienes la regla modus ponens (MP)

PAGQ,PAG  Q

y el objetivo de la prueba

(unsi)(Cre),unsi !Cre

apply rule mpapply simpφφ(PAG)=unsiφ(Q)=Cre

Lo bueno de los métodos de los asistentes como simpahora es que si su objetivo es

(unsi)(Cre),un !re

PAGQPAGPAGPAGQ


Γ={φ1,...,φnorte}

Γψ

significa lo siguiente:

Γψ

Γψψ

PAGQφ

Rafael
fuente
3
a menudo se usa para la semántica, mientras que esta es una manipulación sintáctica, para lo cual se usa generalmente. Sin embargo, puede depender de la comunidad.
Dave Clarke
2

No creo que sea importante inferenciar motores . Sin embargo, el algoritmo de unificación es muy útil para inferencia de tipos . Estos son dos tipos muy diferentes de inferencia.

La inferencia de tipos es importante para la informática porque tipos son importantes en la teoría de los lenguajes de programación, que es una parte importante de la informática. Los tipos también están cerca de la lógica y se usan intensivamente en la demostración automatizada de teoremas. Hay implementaciones de algoritmos de unificación en muchos, si no todos, asistentes de prueba y solucionadores SMT.

Los motores de inferencia están relacionados con la inteligencia artificial, que también es importante pero muy diferente. (He visto vínculos entre aprendizaje y lógica, pero esto parece descabellado).

jmad
fuente
No creo que la primera oración sea válida; mira mi respuesta
Raphael
1
También estoy en desacuerdo con la primera oración. La resolución (una especialización de unificación) es el núcleo de Prolog, que es uno de los lenguajes de implementación más comunes para sistemas expertos y otros motores de inferencia.
Dave Clarke
@Raphael y Dave: ¿entonces dice que el algoritmo de unificación se usa directamente en los motores de inferencia?
jmad
@ jmad: No estoy seguro de que exista el algoritmo de unificación, y tampoco estoy seguro de qué tipo de sistemas se llaman "motor de inferencia". Sé que la unificación se usa ampliamente dondequiera que surjan lógicas y / o semánticas formales; Vea la respuesta de Dave para una lista.
Raphael
@Raphael: ese es más o menos el problema que quería abordar: parece que los motores de inferencia no son sobre la inferencia que sé sobre el tipo y la lógica.
jmad