En las entregas anteriores vimos sobre los hechos y relaciones. Continuaremos ahora con las reglas y, por ende, de las consultas.
En Prolog, las reglas y consultas son el corazón del razonamiento lógico. Los hechos son la base, pero las reglas permiten deducir nueva información y las consultas son la forma de interactuar con el sistema.
Una regla tiene la forma:
cabeza :- cuerpo.
- La cabeza es lo que queremos demostrar.
- El cuerpo son condiciones que deben cumplirse (hechos o sub‑consultas).
Tomemos en cuenta este programa.
objetos.pl
% Hechos monoádicos, hechos simples objeto(cuchara). objeto(lapiz). objeto(puerta). objeto(libros). objeto(tenedor). % Hechos poliádicos, establecen cierta relación es_un_objeto(cuchara, metal). es_un_objeto(lapiz, madera). es_un_objeto(puerta, madera). es_un_objeto(libros, papel). es_un_objeto(tenedor, metal). categoria(cuchara, utensilio). categoria(lapiz, escolar). categoria(puerta, mueble). categoria(libros, escolar). categoria(tenedor, utensilio).
En este programa hemos establecido ciertos hechos simples y con relaciones. Ahora estableceremos algunas reglas, las cuales son las relaciones o clasificaciones derivadas de hechos. Tenemos entonces:
objetos.pl
% Hechos monoádicos, hechos simples objeto(cuchara). objeto(lapiz). objeto(puerta). objeto(libros). objeto(tenedor). % Hechos poliádicos, establecen cierta relación es_un_objeto(cuchara, metal). es_un_objeto(lapiz, madera). es_un_objeto(puerta, madera). es_un_objeto(libros, papel). es_un_objeto(tenedor, metal). categoria(cuchara, utensilio). categoria(lapiz, escolar). categoria(puerta, mueble). categoria(libros, escolar). categoria(tenedor, utensilio). % Reglas es_utensilio(X) :- objeto(X), (X = cuchara; X = tenedor). es_escolar(X) :- objeto(X), (X = lapiz; X = libros). es_mueble(X) :- objeto(X), X = puerta.
Para ejecutar las consultas (definidas en las reglas) debemos cargar el programa.
$ swipl 1 ?- [objetos]. true. 2 ?- es_mueble(X). X = puerta ; false. 3 ?- es_mueble(X). X = puerta . 3 ?- es_utensilio(cuchara). true . 4 ?- es_escolar(libro). false. 5 ?- es_escolar(libros). true.
Resumiendo:
- Hechos: datos básicos (ej. objeto(cuchara).).
- Reglas: relaciones o clasificaciones derivadas de hechos.
- Consultas: preguntas que exploran hechos y reglas, con posibilidad de obtener múltiples soluciones gracias al backtracking.
Enlaces:
https://ferestrepoca.github.io/paradigmas-de-programacion/proglogica/tutoriales/prolog-gh-pages/index.htmlhttps://virtual.cuautitlan.unam.mx/intar/?page_id=218

Comentarios
Publicar un comentario