Prolog

PROLOG es un lenguaje de programación para ordenadores que se basa en el lenguaje de la Lógica de Primer Orden y que se utiliza para resolver problemas en los que entran en juego objetos y relaciones entre ellos. Por ejemplo, cuando decimos "Jorge tiene una moto", estamos expresando una relación entre un objeto (Jorge) y otro objeto en particular (una moto). Más aún, estas relaciones tienen un orden específico (Jorge posee la moto y no al contrario). Por otra parte, cuando realizamos una pregunta (¿Tiene Jorge una moto?) lo que estamos haciendo es indagando acerca de una relación.

Además, también solemos usar reglas para describir relaciones: "dos personas son hermanas si ambas son mujeres y tienen los mismos padres”.

Una de las ventajas de la programación lógica es que se especifica qué se tiene que hacer (programación declarativa), y no cómo se debe hacer (programación imperativa). A pesar de esto, Prolog incluye algunos predicados predefinidos metalógicos, ajenos al ámbito de la Lógica de Primer Orden, (var, nonvar, ==, ...), otros extra-lógicos, que tienen un efecto lateral, (write, get, ...) y un tercer grupo que nos sirven para expresar información de control de cómo realizar alguna tarea ( el corte, ... ). Por tanto, Prolog ofrece un sistema de programación práctico que tiene algunas de las ventajas de claridad y declaratividad que ofrecería un lenguaje de programación lógica y, al mismo tiempo, nos permite un cierto control y operatividad.

 

El programa Prolog tiene las siguientes características:

 

  • El programa consta de una secuencia de oraciones, que guardan una relación implícita de coyunción. Todas las variables tienen cuantificación universal implícita y cuando las variables aparecen en oraciones distintas se consideran como diferentes.

 

  • Se aceptan únicamente oraciones en forma de cláusula de Horn. Es decir las oraciones son atómicas, o bien una implicación que no tiene antecedentes negados y un consecuente atómico.

 

  • Los términos pueden ser signos de constante, variables o términos funcionales.

 

  • En una consulta puede haber conjunciones, disyunciones, variables y términos funcionales.

 

  • En vez de utilizar antecedentes negados en sus implicaciones, en Prolog se emplea un operador de negación como falla: una meta no P se considera demostrada si el sistema no logra demostrar P.