Programación Lógica
Paradigmas de Lenguajes
LSI – LCC
FCEFN - UNSJ
◼
◼
Lenguaje Lógico
Fundamentos
Desarrollado en la Universidad de Aix-Marseille (Marsella, Francia) en
1970 por los profesores Alain Colmerauer y Philippe Roussel.
Modelo subyacente es la Teoría de Lógica Formal una de las más
antiguas formas de representación del conocimiento.
−
Conocimiento explícito
BD
−
Conocimiento implícito
Mecanismo de deducción del
nuevo conocimiento.
Basado en la Lógica de Predicado de 1er orden bajo las reglas de
inferencia de “Modus Ponens”:
Si A es Verdadero y
A => B
entonces B es Verdadero
Un sistemas de programación lógica:
⚫
Permite al programador enunciar una colección de axiomas a
partir de los cuales se pueden probar teoremas.
Lenguaje Lógico
Fundamentos
⚫
El usuario establece un teorema u objetivo (Goal), y
⚫
La implementación del lenguaje busca satisfacer el objetivo
basado en una colección de axiomas y en el motor de
inferencia.
Goal
madre(maria, carlos).
madre(maria, ana).
madre(ana, juan).
padre(daniel, juan).
padre(carlos, silvia).
Quienes son hijos de Maria?
Ejemplo:
Axiomas
Sistema
Los axiomas se escriben en una forma estándar conocida como
cláusula de Horn.
H←B1,B2,...,Bn
Consecuente / solo uno
(cabeza)
Lenguaje Lógico
Términos (varios)
(cuerpo)
Hechos: la cláusula no tiene cuerpo
⚫
Ej.: madre(maria, carlos).
Reglas: la cláusula tiene cabeza y cuerpo.
⚫
Ej.:
tio(X,Y) :- hombre(X), hermano(X,Z), progenitor(Z,Y).
⚫
Goal: no tiene cabeza.
El paradigma lógico se basa en:
* Dos principios potentes descubiertos por Robinson (65)
1. Resolución: deriva nuevos conocimiento cancelando
términos similares
Lenguaje Lógico
Fundamentos
C ←A,B
D←C
D←A,B
2. Unificación: variables libres toman valores.
* Dos características fundamentales:
1. No determinismo: puede tener varias soluciones para
un problema y no una sola, como sería normalmente en
otros dominios de aplicación.
2. Backtracking: mecanismo de búsqueda de retroceso.
➢
➢
SwiProlog
➢
Fundamentos
https://www.swi-prolog.org/
➢
Un Alfabeto: constante, variable, predicados
Un Lenguaje: El lenguaje formal asociado con la
lógica de predicados, es el conjunto de todas las
fórmulas que se pueden construir a partir del alfabeto.
Un conjunto de enunciados básicos – axiomas:
describen un fragmento de conocimiento.
Un conjunto de Reglas de Inferencias: se aplican a los
axiomas para deducir nuevos enunciados verdaderos.
➢
➢
Programa
SwiProlog
Características
➢
El nombre del predicado debe ser representativo de la
realidad a representar.
Todos los predicados de igual nombre deben ir juntos.
El numero de argumentos que tiene un predicado se
llama aridad y esta puede tomar valores: 0<= aridad < n
➢
Los argumentos se escriben con minúsculas.
➢
Solo las variables van con mayúsculas
Base de
Conocimiento
HECHOS
alumno(juan).
alumno(alicia).
alumno(marcela).
alumno(carlos).
Código
14/03/21
docente(laura).
docente(mario).
docente(carlos).
docente(adriana).
Consultas
→ Hace match en la cuarta clausula alumno
Si es alumno ?
→ Hace match en la primera clausula docente
?- alumno(X).
Consulta
Busca todos los alumnos
→ X instancia con un valor
Consultas
Compuestas
Basadas en operadores como and , or ; <
?- alumno(X) , docente(X).
>
Seguimiento
?-
alumno(X), docente(X).
12345678-
Para satisfacer un objetivo:
El sistema busca
de arriba abajo
⚫ de izquierda a derecha a través de las cláusulas
hasta identificar el objetivo.
⚫ si llega al final, volverá atrás hasta encontrar otra
bifurcación por la que seguir buscando de modo de
encontrar todas las soluciones posibles.
⚫
Backtracking
Motor de búsqueda
Base de
conocimiento
REGLAS y HECHOS
Reglas: Permiten inferir nuevo conocimiento a partir de información ya
conocida
Consulta
X UNIFICA con Y
X unifica con Y
◆
Cuando una variable se “liga” a un valor, éste se
propaga a lo largo de toda la regla.
El alcance de una variable es la regla.
Para tener en
cuenta
◆
◆
◆
Si una regla invoca a una regla o hecho los
argumentos se ligarán en el mismo orden en que se
encuentran en la regla llamadora, no pudiendo
faltar ninguno de ellos (parecido al pasaje de
parámetros por posición).
Los argumentos podrán funcionar indistintamente
como de entrada o de salida de datos pero no como
de entrada y salida simultáneamente.
No existe el pasaje de parámetro como en otros
lenguajes. Trabaja con un proceso de unificación
buscando concordancia de patrones coincidencia
del nombre de la relación y la aridad
Otros
predicados de
interes
read(X) Lee el siguiente término del canal de entrada activo
(teclado)
nl Genera una nueva línea en el canal de salida activo
tab(X) Escribe X espacios en el canal de salida activo
write(X) Escribe el término X en el canal de salida activo (display)
write_ln(X) Escribe el término X en el canal de salida activo y salta
la línea
Ejercicio
1) Qué materias se dictan
en el 2 C ?
2) Qué docentes trab en 1
año?
3) Qué docente trab en el
1C?
4) Quién dicta Sistema?
5) Qué materias dicta
Lucia?
materia(algoritmo,1,1).
materia(matematica,1,1).
materia(sistema,1,2).
Código
14/03/21
docente(mario,algoritmo).
docente(lucia,matematica).
docente(juan,sistema).
Seguimiento
1 hombre(homero).
2 hombre(pericles).
?- hijo(X, homero).
3 hombre(tio_cosas).
4 hombre(lucas).
5 hombre(abuelo).
6 mujer(morticia).
7 mujer(merlina).
8 mujer(abuela).
9 padre(homero, pericles).
10 padre(abuelo, homero).
11 padre(abuelo, lucas).
12 adre(homero, merlina).
13 madre(morticia, pericle).
14 hijo(X, Y) :- hombre(X), padre(Y, X).
15 hijo(X, Y) :- hombre(X), madre(Y, X).