En este tema, aprenderemos sobre los tres componentes fundamentales de cualquier programa en Prolog: hechos, reglas y consultas. Estos elementos son la base de la programación lógica y nos permiten definir y consultar información en una base de datos lógica.

Hechos

¿Qué es un Hecho?

Un hecho en Prolog es una declaración que se asume como verdadera. Los hechos se utilizan para representar información básica sobre el mundo. Un hecho se compone de un predicado y uno o más argumentos.

Sintaxis de un Hecho

La sintaxis básica de un hecho es:

predicado(argumento1, argumento2, ..., argumentoN).

Ejemplos de Hechos

% Definimos algunos hechos sobre personas y sus relaciones.
es_padre_de(juan, maria).
es_padre_de(juan, pedro).
es_madre_de(ana, maria).
es_madre_de(ana, pedro).

En estos ejemplos, es_padre_de/2 y es_madre_de/2 son predicados con dos argumentos cada uno.

Reglas

¿Qué es una Regla?

Una regla en Prolog es una declaración que define una relación entre hechos. Las reglas permiten inferir nueva información a partir de hechos existentes. Una regla se compone de una cabeza y un cuerpo, separados por :-.

Sintaxis de una Regla

La sintaxis básica de una regla es:

cabeza :- cuerpo.

Ejemplos de Reglas

% Definimos una regla para determinar si alguien es un progenitor.
es_progenitor_de(X, Y) :- es_padre_de(X, Y).
es_progenitor_de(X, Y) :- es_madre_de(X, Y).

% Definimos una regla para determinar si alguien es un abuelo.
es_abuelo_de(X, Y) :- es_padre_de(X, Z), es_progenitor_de(Z, Y).

En estos ejemplos, es_progenitor_de/2 y es_abuelo_de/2 son reglas que se basan en los hechos es_padre_de/2 y es_madre_de/2.

Consultas

¿Qué es una Consulta?

Una consulta en Prolog es una pregunta que hacemos al sistema para verificar si ciertos hechos o reglas son verdaderos. Las consultas permiten extraer información de la base de datos lógica.

Sintaxis de una Consulta

La sintaxis básica de una consulta es:

?- predicado(argumento1, argumento2, ..., argumentoN).

Ejemplos de Consultas

% Consultamos si Juan es el padre de María.
?- es_padre_de(juan, maria).
% Respuesta: true.

% Consultamos quiénes son los hijos de Juan.
?- es_padre_de(juan, X).
% Respuesta: X = maria ; X = pedro.

% Consultamos si alguien es abuelo.
?- es_abuelo_de(juan, Y).
% Respuesta: Y = maria ; Y = pedro.

Ejercicio Práctico

Ejercicio 1

Define los siguientes hechos y reglas en Prolog:

  1. Hechos:

    • es_hermano_de(juan, pedro).
    • es_hermano_de(maria, ana).
    • es_hermano_de(pedro, juan).
    • es_hermano_de(ana, maria).
  2. Reglas:

    • es_tio_de(X, Y) :- es_hermano_de(X, Z), es_progenitor_de(Z, Y).

Solución

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

% Reglas
es_tio_de(X, Y) :- es_hermano_de(X, Z), es_progenitor_de(Z, Y).

Consultas

  1. ¿Quiénes son los tíos de María?

    ?- es_tio_de(X, maria).
    
  2. ¿Es Juan tío de Ana?

    ?- es_tio_de(juan, ana).
    

Conclusión

En esta sección, hemos aprendido sobre los hechos, reglas y consultas en Prolog. Los hechos nos permiten definir información básica, las reglas nos permiten inferir nueva información y las consultas nos permiten extraer información de la base de datos lógica. Estos conceptos son fundamentales para la programación en Prolog y nos preparan para temas más avanzados en los próximos módulos.

© Copyright 2024. Todos los derechos reservados