Articulo de referencia

lenguaje deductivo

Un lenguaje deductivo es un lenguaje de programación en el que el programa consiste en una colección de predicados («hechos») y reglas que los conectan. Este tipo de lenguaje se...

Un lenguaje deductivo es un lenguaje de programación en el que el programa consiste en una colección de predicados («hechos») y reglas que los conectan. Este tipo de lenguaje se utiliza para crear sistemas basados ​​en el conocimiento o sistemas expertos que pueden deducir soluciones a problemas aplicando las reglas a los hechos proporcionados. Un ejemplo de lenguaje deductivo es Prolog , o su variante para consultas a bases de datos, Datalog .

Historia

Como su nombre lo indica, los lenguajes deductivos se basan en los principios del razonamiento deductivo ; realizar inferencias a partir del conocimiento actual. La primera recomendación para usar una forma clausal de lógica para representar programas informáticos fue hecha por Cordell Green (1969) en el Instituto de Investigación de Stanford (ahora SRI International ). Esta idea también se puede vincular con la batalla entre la representación de información procedimental y declarativa en los primeros sistemas de inteligencia artificial. Los lenguajes deductivos y su uso en la programación lógica también se pueden datar en el mismo año en que Foster y Elcock presentaron Absys , el primer lenguaje de programación deductivo/lógico. Poco después, el primer sistema Prolog fue presentado en 1972 por Colmerauer en colaboración con Robert Kowalski .

Componentes

Los componentes de un lenguaje deductivo son un sistema de lógica formal y una base de conocimientos sobre la cual se aplica dicha lógica.

Lógica formal

La lógica formal estudia la inferencia en relación con el contenido formal. La diferencia entre la lógica formal e informal radica en que, en la primera, la regla lógica aplicada al contenido no es específica de una situación. Las leyes se mantienen independientemente de un cambio de contexto. Si bien en el siguiente ejemplo se describe la lógica de primer orden para ilustrar los usos de un lenguaje deductivo, no se impone ningún sistema formal y el uso de un sistema específico se define dentro de las reglas o la gramática del lenguaje.

Un predicado toma como entrada cualquier objeto del dominio de interés y produce uno de dos valores booleanos: verdadero o falso. Por ejemplo, consideremos las oraciones "Barack Obama es el 44.º presidente" y "Si llueve hoy, llevaré un paraguas". La primera es una proposición con un valor de verdad asociado . La segunda es una proposición condicional que depende del valor de otra proposición. Cualquiera de estas oraciones se puede descomponer en predicados que se pueden comparar y conforman la base de conocimiento de un lenguaje deductivo.

Además, variables como 'Barack Obama' o 'presidente' pueden cuantificarse. Por ejemplo, consideremos 'Barack Obama' como la variable 'x'. En la oración "Existe un 'x' tal que si 'x' es el presidente, entonces 'x' es el comandante en jefe", este es un ejemplo del cuantificador existencial en lógica de primer orden. Consideremos 'presidente' como la variable 'y'. En la oración "Para cada 'y', 'y' es el líder de su nación", este es un ejemplo del cuantificador universal.

Base de conocimientos

Un conjunto de hechos o predicados y variables conforman la base de conocimiento de un lenguaje deductivo. Dependiendo del lenguaje, el orden de declaración de estos predicados dentro de la base de conocimiento puede o no influir en el resultado de la aplicación de reglas lógicas. Al aplicar ciertas reglas o inferencias, se pueden agregar nuevos predicados a la base de conocimiento. A medida que se establecen o agregan nuevos hechos, estos constituyen la base para nuevas inferencias. Como núcleo de los primeros sistemas expertos, sistemas de inteligencia artificial capaces de tomar decisiones como un experto humano, las bases de conocimiento proporcionaban más información que las bases de datos. Contenían datos estructurados, con clases, subclases e instancias.

Prólogo

Prolog es un ejemplo de lenguaje declarativo deductivo que aplica lógica de primer orden a una base de conocimiento. Para ejecutar un programa en Prolog, se formula una consulta y, en función del motor de inferencia y los hechos específicos de la base de conocimiento, se devuelve un resultado. Este resultado puede ser cualquier cosa, desde una nueva relación o predicado hasta un literal como un valor booleano (verdadero/falso), dependiendo del motor y del sistema de tipos .

Referencias

  • JM Foster y EW Elcock. ABSYS 1: Un compilador incremental para aserciones: una introducción, Machine Intelligence 4, Edinburgh U Press, 1969, págs.  423–429 .
  • Cordell Green. Aplicación de la demostración de teoremas a la resolución de problemas. IJCAI 1969.
  • Cordell Green, exalumno del Centro de Inteligencia Artificial de SRI International , consultado el 12/09/14.
  • Robert Kowalski y Donald y Kuehner, Resolución lineal con función de selección , Inteligencia artificial, vol. 2, 1971, págs.  227–60.
  • Robert Kowalski, Lógica de predicados como lenguaje de programación, Memorando 70, Departamento de Inteligencia Artificial, Universidad de Edimburgo. 1973. También en P