Prolog es un lenguaje de programación lógica basado en el Paradigma Lógico. Propone programar con lógica de predicados, la cual es similar a la lógica proposicional pero además tiene acceso a los elementos constitutivos de cada proposición, porque expresa cualidades y relaciones entre objetos.

Los objetos se denominan argumentos o términos del predicado.

amigo(matias, X) :- gusta(X, rock)  % matias es amigo de los que les gusta el rock
gusta(diego, rock)                  % relación: a diego le gusta el rock
gusta(matias, julia)                % relación: a matias le gusta julia

Unificación

La unificación soluciona cómo resolver dos predicados con el mismo símbolo predicativo pero distintos argumentos. Se hace mediante la sustitución: un conjunto de asignaciones del tipo X := t con una sola asignación a cada variable y que tiene alcance clausular.

Dada una sustitución y un predicado , la aplicación de a produce un nuevo predicado donde toda variable asignada en se cambia por su término correspondiente.

Dadas dos expresiones y , se llama unificador a una sustitución tal que , por lo que se vuelven expresiones idénticas. Por ejemplo, dados padre(Z, diego) y padre(jorge, diego), se ve que es unificador.

Supóngase , se dice que es más general que porque asigna menos variables.

Algoritmo de Unificación de Robinson

  1. Si y son unificables, y un MGU es , con .
  2. Si se busca el primer par de discordancia entre y .
  3. Si posee una variable y un término se continúa. Sino, y no son unificables.
  4. Si la variable de aparece en el término entonces no unifican. Sino, podemos continuar.
  5. Se construye un que vincule la variable con el término de . Usando esta nueva sustitución, se construyen y . Se hace y se vuelve al paso 1.

Sean un símbolo predicativo, sean y unificables con un MGU , y sean y cláusulas. Se define la regla de resolución .