Programando en Prolog: Relaciones

Un programa en Prolog se compone principalmente de hechos, reglas y consultas, organizados como cláusulas terminadas en punto. Estos elementos forman la base de conocimiento y permiten que el intérprete deduzca respuestas mediante el mecanismo de unificación y backtracking.

Recordemos los componentes de un programa Prolog:

  1. Hechos:  Definen relaciones básicas entre objetos.
  2. Reglas:  Expresan implicaciones lógicas: un hecho depende de otros.
  3. Consultas:  Son las preguntas que el usuario hace al intérprete.
  4. Variables: Representan objetos desconocidos que Prolog intentará instanciar.

En la entrega anterior nos enfocamos en los hechos. Ahora veremos las relaciones.

Observemos el siguiente programa.

parientes.pl

% Hechos
padre(juan, maria).
padre(juan, pedro).
padre(pedro, ana).

% Regla
abuelo(X, Y) :- padre(X, Z), padre(Z, Y).

Consulta:

?- [parientes].
?- abuelo(juan, Quien).

Salida:

Quien = ana

Aquí se establece la relación padre-hijo:

  • Juan es padre de María. 
  • Juan es padre de Pedro. 
  • Pedro es padre de Ana.

Por lo que el Abuelo de Ana es Juan. La consulta activa el motor lógico para encontrar coincidencias y construir la relación abuelo-nieto.

Tenemos entonces que: cada hecho es una relación binaria entre dos individuos.

Enlaces:

https://ferestrepoca.github.io/paradigmas-de-programacion/proglogica/tutoriales/prolog-gh-pages/index.html
https://www.tutorialspoint.com/prolog/prolog_relations.htm

Comentarios