Como hemos especificado antes, para construir programas en Prolog necesitamos una serie
de elementos. Vamos a especificarlos :
tomos: Es una definicin genrica de un objeto del mundo que queremos representar.
Predicados: Nos permite especificar caractersticas de los objetos de nuestro mundo o las
relaciones entre ellos.
Hechos: es algo que est ocurriendo en nuestro mundo,caracterstica o relacin entre
objetos. En el lenguaje natural un hecho podra ser por ejemplo que Lgica y
Computabilidad es una asignatura de Ingenera Informtica.
Variables: no es variable con el concepto que tenemos de ella en la programacin
habitual. En Prolog, una variable representa el valor de un tomo.
Socrates es un hombre
------------------------------
Socrates es mortal
Conclusiones
Aunque a primera vista pueda parecer que este tipo de programacin est muy limitada a
resolver puzzles y cosas por el estilo, lo cierto es que (tericamente) puedes realizar
cualquier tipo de programa con ellos.
Aun as, lo lgico (valga la redundacia) es utilizar programacin lgica en las reas en que
ms sentido tiene: inteligencia artificial, sistemas expertos, procesamiento de lenguajes,
etc.
El poder utilizar este paradigma a travs de libreras hace sea mucho ms atractivo,
porque hace que sea ms sencillo usarlo slo en aquellas partes del problema que tiene
sentido.
Regla: implicacin o inferencia lgica que deduce nuevo conocimiento, la regla permite definir nuevas
relaciones apartir de otras ya existentes
Ej.:
x es mortal si x es humano
Hecho: declaracin, clusula o proposicin cierta o falsa, el hecho establece una relacin entre
objetos y es la forma ms sencilla de sentencia
Ej.:
% Hechos:
es_espaol("Manolo").
es_italiano("Marco").
es_colombiano("Marcelo").
% Reglas:
es_europeo(A) :- es_espaol(A).
es_europeo(A) :- es_italiano(A).
es_americano(A) :- es_colombiano(A).
son_del_mismo_continente(A,B) :- es_europeo(A), es_europeo(B).
son_del_mismo_continente(A,B) :- es_americano(A), es_americano(B)
1 ?- es_europeo(A).
2 A = Manolo
3 A = Marco
Adems de este tipo de proposiciones basadas en hechos y relaciones, la
mayora de los lenguajes de programacin lgica soportan
tambin predicados basados en restricciones, del tipo X > 5 o A * Z = 58.
1 son_del_mismo_continente("Manolo", A).
Estamos preguntando al sistema qu valores de A cumplen que son del
mismo continente que Manolo. Para resolverlo, empezaramos por tomar
la primera regla que tenemos para son_del_mismo_continente y la
aplicaramos, conviertiendo nuestro objetivo en:
1 es_europeo("Manolo"), es_europeo(B).
Ahora procesaramos cada objetivo de izquierda a derecha. Aplicando la
regla es_europeo(A) :- es_espaol(A), nos quedara:
1 es_espaol("Manolo"), es_europeo(B).
Que Manolo es espaol lo sabemos porque est definido directamente
(es_espaol("Manolo")), as que pasaramos a resolver la segunda
clasula:
1 es_europeo(B).
Ahora habra que encontrar todos aquellos valores de B para los que se
cumple que B es europeo, y as alcanzaramos la solucin. Como eso es un
poco largo, os dejo un video en el que alguien se entretiene haciendo
una resolucin SLD en Prolog.
% Hechos:
es_espaol("Manolo").
es_italiano("Marco").
es_colombiano("Marcelo").
% Reglas:
es_europeo(A) :- es_espaol(A).
es_europeo(A) :- es_italiano(A).
es_americano(A) :- es_colombiano(A).
es_terricola(A) :- es_europeo(A).
es_terricola(A) :- es_americano(A).
a es europeo si a es espaol
La programacin lgica: construye base de conocimientos mediante reglas y hechos
Regla: implicacin o inferencia lgica que deduce nuevo conocimiento, la regla permite
definir nuevas relaciones apartir de otras ya existentes
Ej.:
x es mortal si x es humano
Hecho: declaracin, clusula o proposicin cierta o falsa, el hecho establece una relacin
entre objetos y es la forma ms sencilla de sentencia
Ej.:
1. p o q
2. No q
3. Por lo tanto, p
Y el tercer argumento, a pesar de no ser vlido, se puede reescribir as:
1. Ni p ni q
2. No q
3. Por lo tanto, p
Conectivas lgicas[editar]
Artculo principal: Conectiva lgica
Conectivas lgicas
Tautologa
Conjuncin opuesta
Implicacin opuesta
Implicacin
Disyuncin lgica
Negacin lgica
Disyuncin exclusiva
Bicondicional
Afirmacin lgica
Disyuncin opuesta
Adjuncin lgica
Adjuncin opuesta
Conjuncin lgica
Contradiccin
A continuacin hay una tabla que despliega todas las conectivas lgicas que ocupan a la
lgica proposicional, incluyendo ejemplos de su uso en el lenguaje natural y los smbolos que
se utilizan para representarlas en lenguaje formal.
Expresin Smbolo
en el en Smbolos
Conectiva Ejemplo
lenguaje este alternativos
natural artculo