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

  1. Reglas: Son declaraciones que describen relaciones lógicas entre hechos.
  2. Cabeza de la Regla: La parte de la regla que se quiere demostrar.
  3. Cuerpo de la Regla: La parte de la regla que contiene las condiciones necesarias para que la cabeza sea verdadera.
  4. 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 :- cuerpo.
  • 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:

padre(juan, maria).
padre(juan, jose).
madre(ana, maria).
madre(ana, jose).

Podemos definir una regla para determinar si alguien es un progenitor de otra persona:

progenitor(X, Y) :- padre(X, Y).
progenitor(X, Y) :- madre(X, Y).

En este ejemplo:

  • progenitor(X, Y) es la cabeza de la regla.
  • padre(X, Y) y madre(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:

abuelo(X, Y) :- padre(X, Z), progenitor(Z, Y).

En este caso:

  • abuelo(X, Y) es la cabeza de la regla.
  • padre(X, Z) y progenitor(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

  1. Hechos:

    hermano(juan, pedro).
    hermano(pedro, juan).
    hermano(maria, ana).
    hermano(ana, maria).
    
  2. Regla: Definir una regla hermanos(X, Y) que sea verdadera si X y Y son hermanos.

    hermanos(X, Y) :- hermano(X, Y).
    

Ejercicio 2: Regla con Múltiples Condiciones

  1. Hechos:

    padre(carlos, juan).
    madre(luisa, juan).
    
  2. Regla: Definir una regla hijo(X, Y) que sea verdadera si X es hijo de Y.

    hijo(X, Y) :- padre(Y, X).
    hijo(X, Y) :- madre(Y, X).
    

Ejercicio 3: Regla Recursiva

  1. Hechos:

    ancestro(juan, pedro).
    ancestro(pedro, maria).
    
  2. Regla: Definir una regla ancestro(X, Y) que sea verdadera si X es ancestro de Y.

    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

hermanos(X, Y) :- hermano(X, Y).

Solución al Ejercicio 2

hijo(X, Y) :- padre(Y, X).
hijo(X, Y) :- madre(Y, X).

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.

© Copyright 2024. Todos los derechos reservados