Una cosa que debemos entender de PROLOG es que es un lenguaje con muy pocas instrucciones y que esta basado en hechos y reglas.
Los hechos son situaciones que nosotros declaramos cual si fueran funciones de un programa, en el ejemplo que escribimos en el post pasado usamos un hecho llamado parent para indicar que una persona es pariente de otra, ahora bien la instrucción parent no existe, solo la tomamos de los ejemplos mas comunes de prolog, igual pudimos haber puesto pariente como función y habría funcionado.
A continuación demostraremos esto con el siguiente arbol genealogico.
Lo primero sera comenzar a declarar los hechos, así que usaremos una función a la que llamaremos «pariente» para indicar quienes tienen una relación con quien, estos serán nuestros primeros hechos.
Recordemos que las relaciones solo establecen una dirección, en el caso que nos ocupa pablo es pariente de pedro, pero si enviamos una consulta en el compilador de prolog de la forma pariente(pedro,pablo) obtendremos «no» como respuesta, dado que las relaciones no se crean por defecto en ambas direcciones.
Ahora agregamos una nueva carga de hechos a nuestro programa, en este caso agregamos la función genero, en la que estableceremos quienes son hombre y quienes mujeres, quedando de la siguiente forma:
Muy bien con esto ya tenemos todos los hechos, ahora agregamos algunas reglas, para ello usaremos el símbolo :-
Del lado izquierdo colocaremos el hecho que necesitamos probar y del lado izquierdo del símbolo :- colocaremos las reglas que se deben cumplir, comenzaremos con la regla madre, en la que estableceremos que para que una persona sea madre, debe ser pariente de otra y ademas ser mujer, quedando de la siguiente forma:
Como puede observase, al fondo hemos hecho la prueba con la función madre, para determinar a través de madre(X, paco), quien es la madre de paco, para ello debemos de observar que nunca se estableció como hecho quien era la madre de paco, solo se estableció como regla que madre serian las personas que fueran parientes de otras y que ademas de ello fueran mujeres, de la misma forma podríamos generar las reglas para padre.
Las reglas que ya hemos establecido pueden formar parte de otras reglas, tal y como lo vemos en la regla para saber si dos personas son hermanos, en donde debemos verificar que ambos tienen al mismo padre y la misma madre, tal y como vemos a continuación.
De la misma forma podríamos crear reglas para esposos, suegros, abuelos, nietos, primos, todo es cuestión de una vez integrado los hechos incluir las reglas necesarias para que PROLOG pueda deducir de forma lógica los resultados de las preguntas que elaboramos.
Como siempre dejo el enlace para que descarguen el archivo de ejemplo que se llama arbol.pl