En Prolog, las reglas son una de las estructuras fundamentales que permiten definir relaciones lógicas entre hechos. Las reglas se utilizan para inferir nueva información a partir de hechos conocidos y otras reglas. En esta sección, aprenderemos cómo definir reglas en Prolog, cómo funcionan y cómo se utilizan en consultas.
Conceptos Clave
- Reglas: Son declaraciones que describen relaciones lógicas entre hechos.
- Cabeza de la Regla: La parte de la regla que se quiere demostrar.
- Cuerpo de la Regla: La parte de la regla que contiene las condiciones necesarias para que la cabeza sea verdadera.
- Operador
:-
: Se utiliza para separar la cabeza de la regla del cuerpo. Se lee como "si".
Sintaxis de las Reglas
La sintaxis básica de una regla en Prolog es la siguiente:
- Cabeza: Es un predicado que queremos demostrar.
- Cuerpo: Es una lista de predicados que deben ser verdaderos para que la cabeza sea verdadera.
Ejemplo Básico
Supongamos que tenemos los siguientes hechos:
Podemos definir una regla para determinar si alguien es un progenitor de otra persona:
En este ejemplo:
progenitor(X, Y)
es la cabeza de la regla.padre(X, Y)
ymadre(X, Y)
son los cuerpos de las reglas.
Esto significa que X
es un progenitor de Y
si X
es el padre de Y
o si X
es la madre de Y
.
Ejemplo Práctico
Vamos a definir una regla más compleja que determine si alguien es un abuelo de otra persona:
En este caso:
abuelo(X, Y)
es la cabeza de la regla.padre(X, Z)
yprogenitor(Z, Y)
son los cuerpos de la regla.
Esto significa que X
es el abuelo de Y
si X
es el padre de Z
y Z
es un progenitor de Y
.
Ejercicios Prácticos
Ejercicio 1: Definir Reglas Básicas
-
Hechos:
hermano(juan, pedro). hermano(pedro, juan). hermano(maria, ana). hermano(ana, maria).
-
Regla: Definir una regla
hermanos(X, Y)
que sea verdadera siX
yY
son hermanos.hermanos(X, Y) :- hermano(X, Y).
Ejercicio 2: Regla con Múltiples Condiciones
-
Hechos:
padre(carlos, juan). madre(luisa, juan).
-
Regla: Definir una regla
hijo(X, Y)
que sea verdadera siX
es hijo deY
.hijo(X, Y) :- padre(Y, X). hijo(X, Y) :- madre(Y, X).
Ejercicio 3: Regla Recursiva
-
Hechos:
ancestro(juan, pedro). ancestro(pedro, maria).
-
Regla: Definir una regla
ancestro(X, Y)
que sea verdadera siX
es ancestro deY
.ancestro(X, Y) :- padre(X, Y). ancestro(X, Y) :- madre(X, Y). ancestro(X, Y) :- padre(X, Z), ancestro(Z, Y). ancestro(X, Y) :- madre(X, Z), ancestro(Z, Y).
Soluciones a los Ejercicios
Solución al Ejercicio 1
Solución al Ejercicio 2
Solución al Ejercicio 3
ancestro(X, Y) :- padre(X, Y). ancestro(X, Y) :- madre(X, Y). ancestro(X, Y) :- padre(X, Z), ancestro(Z, Y). ancestro(X, Y) :- madre(X, Z), ancestro(Z, Y).
Conclusión
En esta sección, hemos aprendido cómo definir reglas en Prolog, cómo funcionan y cómo se utilizan en consultas. Las reglas son fundamentales para la programación lógica, ya que permiten inferir nueva información a partir de hechos conocidos. En la próxima sección, exploraremos cómo realizar consultas simples utilizando las reglas y hechos que hemos definido.
Curso de Programación en Prolog
Módulo 1: Introducción a Prolog
- ¿Qué es Prolog?
- Instalando Prolog
- Primeros Pasos en Prolog
- Sintaxis y Estructura Básica
- Hechos, Reglas y Consultas
Módulo 2: Programación Básica en Prolog
Módulo 3: Estructuras de Datos en Prolog
Módulo 4: Programación Avanzada en Prolog
- Unificación Avanzada
- Corte y Negación
- Meta-Programación
- Gramáticas de Clausulas Definidas (DCGs)
- Programación Lógica con Restricciones
Módulo 5: Prolog en la Práctica
- Entrada/Salida de Archivos
- Depuración de Programas Prolog
- Bibliotecas de Prolog
- Interfaz con Otros Lenguajes
- Construyendo una Aplicación en Prolog