Mostrando entradas con la etiqueta Prolog. Mostrar todas las entradas
Mostrando entradas con la etiqueta Prolog. Mostrar todas las entradas

domingo, 23 de agosto de 2015

Introducción a Prolog

Hoy les comparto una breve introducción al lenguaje de Programación Prolog.

La palabra PROLOG proviene del acrónimo (PROgrammation LOGique) o programación lógica.

Es un lenguaje de programación que fue introducido por la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel al inicio de los 70's.

Sabiendo lo anterior, pasemos a la sintaxis. Prolog se compone por los siguientes elemento:

-Constantes
-Variables
-Hechos
-Relaciones
-Reglas
-Consultas

Constantes
Pueden ser números enteros o flotantes, cadenas de caracteres en minúsculas o cadenas de caracteres entre comillas ("").

Ejemplos: 56, 873.123, hola, adiós, "Hola"

Variables
Cadena de caracteres que comienza con mayúscula o con "_". 

Ejemplos: X, Juan, _hola, _  

Hechos
Un hecho es una afirmación y se conforma por un predicado, seguido de unos paréntesis, entre los que se coloca un sujeto y posterior a los paréntesis se coloca un punto. 

    predicado(sujeto). 

Ejemplo: hombre(luis).

Y se lee, Pedro es hombre.

Relaciones
Las relaciones dentro de prolog se conforman de un predicado, seguido de unos paréntesis, entre los que se coloca un sujeto seguido de una coma "," y seguido de otro sujeto. Posterior a los paréntesis se coloca un punto.

    predicado(sujeto1,sujeto2).

Ejemplo: progenitor(luis,juan).

Reglas
Las reglas son suposiciones en base a lo que ya sabemos (hechos) y se componen de un hecho sin punto al final, seguido de dos puntos y un guión medio (":-") que significa "entonces" o "si", seguido de un uno o mas hechos o reglas separados por comas (",") o punto y coma (";"), donde la coma es el operador lógico "and" y el punto y coma es el operador lógico "or".

    predicado(sujeto1,...,sujetoN) :- predicado1(sujeto1,...,sujetoN) , predicado2(sujeto1,...,sujetoN) ; predicado3(sujeto1,...,sujetoN).

Ejemplo: padre(luis,juan) :- progenitor(luis,juan) ,  hombre(luis).

El ejemplo anterior se lee, Luis es padre de Juan si, Luis es progenitor de Juan y Luis es hombre.

Consultas
Una consulta en prolog se compone de el predicado de una regla, seguido de paréntesis, que contienen los sujetos o variables requeridas por dicha regla, y los un punto posterior a los paréntesis.

    regla(sujeto1,sujeto2,variable1).

Ejemplo: padre(luis,juan).  padre(X,Y). padre(luis,X). padre(X,juan).

Y se lee, ¿Es Luis, padre de Juan?

Hay dos maneras de realizar una consulta:

1- Mandando como parámetro valores específicos como en el ejemplo 1, donde se obtendrá como resultado "True" o "False", True si es verdad según los hechos y reglas establecidas y False en caso contrario.

    padre(luis,pedro).
    False 
 
2- Mandando una o mas variables como en los ejemplos posteriores, donde se obtendrá como resultado todos los posibles valores que pueden llegar a tomar dichas variables:

    padre(luis,X).
    X=juan

Dato extra
 
Los comentarios van antecedidos del símbolo "%".

    % Esto es un comentario.

Cuando se utiliza el operador lógico AND (","), se debe cumplir la condición tanto de la izquierda como de la derecha del signo para que sea verdadero el resultado.

Cuando se utiliza el operador lógico OR (";"), el resultado solo es falso cuando la condición tanto de la izquierda como la de la derecha son falsas.

Si queremos comparar dos elementos utilizaremos "==", si ambos elementos son iguales, retorna verdadero, si no es así, retorna falso.

El operador "not" nos sirve para negar una comparación, un hecho, una regla, etc. Y va antes de cualquiera de estos elementos.

    not(X==Y)

Donde se indica que esa condición sera verdadera si X es diferente de Y.

Esto es todo por este tutorial, espero que les sea de mucha utilidad, cualquier cosa no duden en comentarla y de antemano muchas gracias.

Fuente:
http://www.itnuevolaredo.edu.mx/takeyas/apuntes/Inteligencia%20Artificial/Apuntes/IA/Prolog.pdf Consulta el 23 de Agosto del 2015.

http://ce.azc.uam.mx/profesores/mjm/pub/prolog.pdf Consulta el 23 de Agosto del 2015.

Instalar SWI-Prolog en Linux

Hoy les comparto un mini tutorial sobre como instalar SWI-Prolog en Linux.

Pero antes que comenzar. ¿Qué es SWI-Prolog?
SWI-Prolog es una implementación en código abierto del lenguaje de programación Prolog, comúnmente utilizado para la enseñanza y aplicaciones web semánticas.

Sabiendo eso, comencemos.

Abrimos nuestra terminal y escribimos el siguiente comando para instalar software-properties-common ya que lo requiere SWI-Prolog:
sudo apt-get install software-properties-common
Una vez hecho esto, generamos un repositorio con:
sudo apt-add-repository ppa:swi-prolog/stable
Nos pedira que oprimamos la tecla "Enter" para continuar.

Ya que se genero el repositorio lo siguiente es actualizar el sistema para que se considere el cambio en el repositorio que generamos:
sudo apt-get update
Actualizar el sistema puede tomar un tiempo.

Y por ultimo instalamos SWI-Prolog con el siguiente comando:
sudo apt-get install swi-prolog
Nos pedira seleccionar la tecla "Enter" para continuar la instalación.

Y con esto, SWI-Prolog estara listo para utilizarse, podemos comprobar si se instalo correctamente con el siguiente comando:
swipl --version
Este comando nos mostrara la versión de nuestro SWI-Prolog.

Para ejecutar SWI-Prolog basta con escribir en nuestra terminal:
swipl
Para utilizarlo de manera sencilla, recomiendo generar nuestro archivo de Prolog (.pl), con cualquier editor de texto y guardarlo con la extensión .pl

Una ves que contemos con nuestro archivo .pl basta con acceder en la terminar a la ubicación de nuestro archivo .pl y ejecutar el siguiente comando:
swipl -f archivo.pl
Y solo sustituimos la palabra "archivo" por el nombre de nuestro archivo y con esto ya podemos hacer consultas y probar nuestro programa.

Espero y este mini tutorial les sea de mucha utilidad para instalar y utilizar SWI-Prolog.

Cualquier duda o aclaración no duden en comentarla, y de antemano muchas gracias.

Fuente:
https://www.nuigalway.ie/information-solutions-services/servicesforstaff/software/softwarea-z/s-t/swi-prolog/ Consultado el 23 de Agosto del 2015.