Prolog es un lenguaje de programación declarativo, basado en las matemáticas y la lógica.
Se basa en la lógica de primer orden. El cual es un sistema formal utilizado en matemáticas, lógica e informática para expresar y razonar sobre relaciones y propiedades de una manera clara y estructurada.
Este lenguaje es muy útil para resolver problemas que involucran objetos y relaciones.
"Un programa en Prolog responde preguntas sobre el tema del cual tiene conocimiento".
Prolog se basa en éstos tres mecanismos:
- Unificación.
- Estructuras de datos basadas en árboles.
- Backtracking automático.
Crear un programa en Prolog consiste en:
- Establecer hechos sobre objetos y sus relaciones.
- Hacer preguntas sobre (esos) objetos y sus relaciones.
- Definir reglas sobre objetos y sus relaciones.
Hechos en Prolog
En palabras simples, los hechos son afirmaciones sobre el mundo que se consideran verdaderas.
Por ejemplo:
- Mi mamá es prima de la hija de su tía.
- Laura es hermana de Juana.
- Oscar es profesor de matemáticas.
- Los coreanos hablan coreano.
Sintaxis de los hechos:
Se escriben como un nombre de predicado (relación) seguido de cero o más argumentos entre paréntesis y finalizando con un punto (.). Los nombres de las relaciones y argumentos que se refieren a objetos siempre comienzan con minúscula.
predicado(argumento1, argumento2).
Veamos un ejemplo.
profesor(juana, mateo).
Donde:
profesor es el nombre de la relación o nombre del predicado
y
juana y mateo son los argumentos
Si lo leyeramos como humanos diríamos que: "Juana es profesor(a) de Mateo".
Tomando en cuenta esto, entonces un hecho es información proporcionada a la base de datos de Prolog. Y ésta infomación Prolog la puede "aprender".
Observemos otros ejemplos.
son_primos(mariana, hortencia). da_premio(karen, puntualidad, antonio). no_tiene(jacobo, auto). es_animal(gato).
Leyendo esto como humanos diríamos que:
"Mariana y Hortencia son primo(a)s".
"Karen da premio de puntualidad a Antonio".
"Jacobo no tiene auto".
"El gato es un animal".
Algo que nos pudiera confundir es lo que es un hecho y una relación.
Un hecho es: información que proporcionamos a Prolog. Como:
es_animal(gato).
"El gato es un animal".
Un hecho no depende de condiciones o de cálculos.
Simplemente se declaran.
Una relación es: es el nombre que decidimos ponerle. Como:
son_primos(mariana, hortencia).
"Mariana y Hortencia son primo(a)s".
Las relaciones son hechos que conectan dos o más entidades, mostrando como están vinculadas.
Es importante hacer notar que: un conjunto de hechos, junto con un conjunto de reglas, conforman una base de datos en Prolog.
En Prolog, las reglas es una forma de deducir relaciones nuevas a partir de hechos ya conocidos.
Hecho, relación y regla
1. Tomemos el hecho declarado de "El gato es un animal".
es_animal(gato).
2. Creamos una relación:
come(gato, raton).
"El gato come ratón".
También puede ser algo como esto:
amigo(gato, perro). amigo(perro, gato).
"El gato es amigo del perro".
"El perro es amigo del ratón".
3. Ahora definamos una regla:
% X es depredador si X come ratón es_depredador(X) :- come(X, raton)
El programa completo puede ser:
gatos.pl
% --- Hechos --- es_animal(gato). es_animal(perro). es_animal(raton). come(gato, raton). come(perro, hueso). % --- Relaciones --- amigo(perro, gato). amigo(gato, perro). % --- Reglas --- % X es depredador si X come ratón es_depredador(X) :- come(X, raton).
Las consultas serían las siguientes:
?- es_animal(gato). true. ?- come(gato, raton). true. ?- es_depredador(gato). true. ?- es_depredador(perro). false.
Hemos visto lo que es un hecho en Prolog. Continuaremos sobre los conceptos de este lenguaje en próximas entregas.
Enlaces:
https://virtual.cuautitlan.unam.mx/intar/?page_id=235
Comentarios
Publicar un comentario