de la programación lógica
Fundamentos de la proramaci!n l!ica
&epaso de la lógica de primer orden
'nifcación y resolución
Cl(usulas de )orn* &esolución +LD*
Programación lógica con cl(usulas de )orn
+em(ntica de los programas lógicos
&epresentación clausada del conocimiento
Consulta de una $ase de cl(usulas
Espacios de $,s-ueda
Programación lógica con n,meros. listas y (r$oles
Control de $,s-ueda en programas lógicos /anipulación de t%rminos* Predicados metalógicos
Competencia :eneral de la Unidad=
− Conocer las ventajas y desventajas del paradigma de programación lógica. − Identificar los elementos de la programación lógica.
− Aplicar la programación lógica en la resolución de problemas reales. − Diseñar sistemas expertos con programación lógica.
,cti$idades de ,prendi0a@e
• Identificar los conceptos b"sicos de la programación lógica!
• (escribir las clausulas de 1orn y resolución SL(, para identificar reglas
de inferencia lógica y emplearlas en la representación del conocimiento!
• 8econocer los elementos de la sem"ntica de la programación lógica para
interpretar el conocimiento y aplicarlo en su representación!
• Investigar, al menos, un lenguaje de programación lógica diferente al
establecido para la materia!
• )plicar la programación lógica para resolver un problema real,
Uni'icaci!n 2 Resoluci!n
La (educción 'atural consiste en un sistema de reglas de inferencia, es decir, a partir de <algo< podemos deducir o <llegar a< <otra cosa<, hasta #ue encontramos una conclusión
0$2G(G ($ 8$SGL&CIG'
$l 0todo de 8esolución, es un intento de mecanizar el proceso de
deducción natura! Las demostraciones se consiguen utilizando el mtodo refutativo 3reducción al absurdo4, es decir lo #ue intentamos es encontrar contradicciones!
$l mtodo de resolución es una regla de inferencia #ue toma dos clausulas y produce una tercera #ue es consecuencia lógica de estas! $l proceso consiste en identificar y borrar parejas complementarias de dos clausulas, una de cada clausula y luego, combinar las otras literales para formar una clausula nueva!
0$2G(G ($ &'IFIC)CIG'
La &nificación es un procedimiento de emparejamiento #ue compara dos literales y descubre si e:iste un conjunto de sustituciones #ue los haga idnticos!
La idea b"sica de la unificación es muy sencilla!
− $n primer lugar se comprueba si los predicados coinciden! Si es as%,
seguimos adelante9 si no es #ue no son unificables!
− Si el predicado concuerda, comenzamos a comparar los argumentos! Si
el primero de ellos coincide en ambos literales, continuamos con el siguiente!!! y as% hasta completar todos los argumentos!
Proramaci!n l!ica con cl3usulas de 4orn
,o-n Clau"" and P-olo/
Prueba por la resolución consist%a en encontrar la forma normal conjuntiva, #ue inclu%a cl"usulas unidos, cada uno de los cuales era una disyunción de literales J
ie,
71 72 7CGGG
&na ligeramente forma de esta es una cl"usula 1orn, donde la restricción es #ue sólo uno de los literales es en negativo! Por ejemplo.
1G 71 72 7C GGG
2G 71 72 7C GGG U
CG U
4G 71
Son todas las cl"usulas de 1orn! $s f"cil demostrar #ue, por ejemplo, 3+4 es e#uivalente a
71 72 7C GGGA U
or in goalJdirected form:
U A 71 72 7CGGG
$sta es la forma t%pica de una declaración en el lenguaje de programación lógica Prolog! 1ay dos modos en Prolog! $n el modo de consultar, uno suministra el sistema con
a:iomas! 32enga en cuenta #ue el ⇐ JJ se sustituye por JJ. H JA, Kue capitalizan s%mbolos
son variables, y #ue el ! JJ es importante4 Lbuelos(*%V)@ hiWo(*%X)%"ariente(V%X)G MiWos(charles%eliYabeth)G
Harientes(george%eliYabeth)G
$n el modo de consulta podr%amos preguntar Z@ Lbuelos(eliYabeth%charles)G
no
con prólog nos dice #ue no hay hechos de base de datos para verificar el comunicado! G podr%amos preguntar
Z@ nieto([%george)G
) partir de esta consulta, Prolog trata de justificar cada literal en el lado derecho mediante la b6s#ueda de una coincidencia literal en la L1S de otra cl"usula en la base de datos! $n nuestro ejemplo, se encontrar%a declaración de dbase * y llevar a cabo la unificación 3B = , Meorge = @4! (e modo #ue el lado derecho se convierte en hijo 3, N4, el padre 3Meorge, N4! ) continuación, utiliza la declaración de dbase + para llevar a cabo la unificación 3 = charles, N = $lizabeth4, dejando padre 3Meorge, $lizabeth4 para ser verificada! Gbviamente, d5ase
statement # does t)is it) no unification. ")e system returns t)e unification for Z )ic) is -Z1[1c)arles, ie c)arles.
Z@ grandson([%george)G [ charles Z
es
).(. Consulta de una ase de cl3usulas
))..**.. CCoonnssuulltta a dde e uunna a aasse e ddee cl3usulas
cl3usulas ).
).7. Proramaci!n l!ica con n5meros8 listas 2 3roles.
emos %isto ya un +uen n&mero de con%enciones que de+emos utili0ar para escri+ir programas en Prolog . La <ima parte de este tema la dedicaremos a conocer
detalladamente las reglas sintácticas que )emos de seguir para que nuestras +ases de conocimientos sean reconocidas porVisual Prolog .
Como ya )emos estudiado, un programa Prolog no es más que la especificaci(n de una
+ase de conocimientos l(gica con las caracter7sticas siguientes:
• Eonsta de una secuencia de oraciones% todas ellas
Jerdaderas% ue e?"resan un conWunto de realidades sobre los obWetos del mundo re"resentado% as\ como sobre sus relacionesG :odas las Jariables tienen cuantificaci,n uniJersal im"l\cita cuando las Jariables a"arecen en oraciones distintas se consideran tambiQn distintasG
• Ke ace"tan ]nicamente oraciones en forma de Cláusula
de Horn% es decir% las oraciones son at,micas% o bien
una im"licaci,n con un antecedente no negado un consecuente generalmente "expresiones" se"arados "or comas o "or "untos comasG 7as comas significan
conWunci,n los "untos comas significan disunci,nG
• n JeY de utiliYar antecedentes negados en sus
im"licaciones% en Prolog se em"lea un o"erador de
negaci,n basado en el fallo una meta no H se considera demostrada si el sistema no logra demostrar HG