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


17

Estoy aprendiendo Pruebas automatizadas de teoremas / Solucionadores SMT / Asistentes de pruebas por mí mismo y publico una serie de preguntas sobre el proceso, comenzando aquí .

Sigo leyendo sobre el algoritmo de unificación .

  • Qué es y por qué es tan importante motores de inferencia ?
  • ¿Por qué es tan importante para la informática?

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.

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φ


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).


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.