Prolog es un lenguaje de programación de computadoras que se basa en la lógica. La mayoría de los lenguajes informáticos se basan en los pasos necesarios para resolver un problema. El lenguaje Prolog, por otro lado, es un lenguaje «declarativo» que indica las relaciones lógicas entre entidades. La forma de resolver el problema se deja en manos de la computadora. El nombre Prolog proviene del francés PROgrammation en LOGique, es decir, PROgramming LOGic.
El siguiente es un programa Prolog simple:
antepasado (F, C): – padre (F, C)
antepasado (P, Q): – padre (P, R), antepasado (R, Q)
padre (john, jim).
padre (Jim, Jerry).
padre (jerry, jason).
padre (jerry, jeff).
padre (jason, joshua).
El programa anterior indica obviedades. Si F es el padre de C, entonces F es un antepasado de C. Si P es el padre de alguna persona R que es un antepasado de Q, entonces P es un antepasado de Q. Entonces se dan una serie de hechos verdaderos, como john siendo el padre de jim. Si luego se plantea una pregunta problemática sobre si john es un antepasado de jeff, obtenemos la respuesta «Sí» como se muestra a continuación:
? – antepasado (john, jeff).
Sí
Si los antepasados de joshua son de interés, el programa muestra todos los antepasados de la siguiente manera:
? – antepasado (A, joshua)
A = jason
A = jerry
A = jim
A = juan
Tenga en cuenta que en los dos casos anteriores, el programa no indicó cómo realizar la evaluación. Por ejemplo, no indicó si comenzar por la persona mayor y avanzar hacia la persona más joven o viceversa. También intercambiando las partes de la siguiente manera:
antepasado (P, Q): – antepasado (R, Q), padre (P, R)
No haría ninguna diferencia para el programa, ya que ambas partes del lado derecho deben ser verdaderas para que el lado izquierdo sea verdadero.
Por tanto, el lenguaje Prolog se centra en las relaciones y no en cómo resolver el problema. Durante la ejecución del programa, Prolog acumula una serie de declaraciones verdaderas, creando una base de conocimientos. En el ejemplo anterior, la base de conocimientos, sin ningún orden en particular, tendría antepasado (juan, jim), antepasado (jim, jerry), antepasado (juan, jerry), antepasado (jim, jason), antepasado (juan, jason), y así. Esta base de conocimientos puede continuar desarrollándose a medida que se ejecuta el programa y se puede buscar de manera eficiente para obtener soluciones. La ejecución puede usar procesamiento paralelo, ejecución simultánea por múltiples computadoras.
El lenguaje Prolog se utiliza en varias áreas. Comenzó en sistemas orientados a lenguajes naturales como el inglés; El lenguaje natural es una de las áreas de la Inteligencia Artificial. El lenguaje Prolog también se usa en matemáticas simbólicas, incluido el álgebra. Se utiliza para probar teoremas, en sistemas expertos y en sistemas de control, entre muchas otras aplicaciones.