Resolución lineal y, en particular, Resolución SLD Paradigmas de Lenguajes de Programación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 7 de Junio de 2011 Resolución en Lógica de Primer Orden Resolución SLD Repaso Ejercicio Resolución en lógica de primer orden Repaso Estrategia Para demostrar que la fórmula F es universalmente válida Demostramos que ¬F es insatisfactible. Para demostrar que F se deduce de H1 , . . . Hn Demostramos que H1 , . . . , Hn , ¬F es insatisfactible. Esquema general Expresar la o las fórmulas como cláusulas. Aplicar sucesivamente un paso de resolución (generando nuevas cláusulas)... Hasta llegar a la cláusula vacı́a o concluir que no es posible llegar a ella. Resolución en Lógica de Primer Orden Resolución SLD Repaso Ejercicio Cómo mantenernos en lı́nea Si un conjunto de cláusulas es insatisfactible, existe una secuencia de pasos de resolución lineal que lo refuta (prueba su insatisfactibilidad). Es decir, una secuencia de la forma: B1 SSS C0 SSSS SS B2 SSS C1 SSSS SS B3 SSS C2 SSSS SS C3 ... Bp−1 SS SSSS S C Bp SSS SSSS p−1 Cp = 2 σ1 σ2 σ3 σp−1 σp donde C0 y cada Bi es un elemento de S o algún Cj con j < i. Resolución en Lógica de Primer Orden Resolución SLD Repaso Ejercicio Ejemplo Recuperatorio 2◦ parcial 2◦ Cuat. 2006 Las siguientes son expresiones1 de público conocimiento: Cast.: Para un peronista no hay nada mejor que otro peronista 1◦ o.: ∀x1 , y1 (peronista(x1 ) ∧ mejorPara(x1 , y1 ) ⇒ peronista(y1 )) Claus.: {¬peronista(x1 ), ¬mejorPara(x1 , y1 ), peronista(y1 )} Cast.: 1◦ o.: Claus.: Cast.: 1◦ o.: Claus.: Lo mejor que hizo la vieja es el pibe que maneja ∀x2 (viejo(x2 ) ⇒ (∃y2 (pibe(y2 ) ∧ maneja(y2 ) ∧ mejorPara(x2 , y2 )))) {¬viejo(x2 ), pibe(hijoDe(x2 ))} {¬viejo(x3 ), maneja(hijoDe(x3 ))} {¬viejo(x4 ), mejorPara(x4 , hijoDe(x4 ))} Viejos son los trapos ∀x5 (viejo(x5 ) ⇒ trapo(x5 )) {¬viejo(x5 ), trapo(x5 )} Cast.: Todavı́a quedan peronistas de los viejos 1◦ o.: ∃x6 (viejo(x6 ) ∧ peronista(x6 )) Claus.: {viejo(elViejoPeronista)} {peronista(elViejoPeronista)} Resolución en Lógica de Primer Orden Resolución SLD Repaso Ejercicio Ejemplo (cont.) Recuperatorio 2◦ parcial 2◦ Cuat. 2006 A partir de ellas, se desea demostrar que: Cast.: Existe un pibe peronista que es lo mejor para un trapo 1◦ o.: ∃x8 (pibe(x8 ) ∧ peronista(x8 ) ∧ ∃y8 (trapo(y8 ) ∧ mejorPara(y8 , x8 ))) Neg.: ∀x8 (¬pibe(x8 ) ∨ ¬peronista(x8 ) ∨ ∀y8 (¬trapo(y8 ) ∨ ¬mejorPara(y8 , x8 ))) Claus.: {¬pibe(x8 ), ¬peronista(x8 ), ¬trapo(y8 ), ¬mejorPara(y8 , x8 )} Resolución en Lógica de Primer Orden Resolución SLD Repaso Ejercicio Ejemplo Recuperatorio 2◦ parcial 2◦ Cuat. 2006 Las siguientes son expresiones1 de público conocimiento: Cast.: Para un peronista no hay nada mejor que otro peronista 1◦ o.: ∀x1 , y1 (peronista(x1 ) ∧ mejorPara(x1 , y1 ) ⇒ peronista(y1 )) Claus.: {¬peronista(x1 ), ¬mejorPara(x1 , y1 ), peronista(y1 )} Cast.: 1◦ o.: Claus.: Cast.: 1◦ o.: Claus.: Lo mejor que hizo la vieja es el pibe que maneja ∀x2 (viejo(x2 ) ⇒ (∃y2 (pibe(y2 ) ∧ maneja(y2 ) ∧ mejorPara(x2 , y2 )))) {¬viejo(x2 ), pibe(hijoDe(x2 ))} {¬viejo(x3 ), maneja(hijoDe(x3 ))} {¬viejo(x4 ), mejorPara(x4 , hijoDe(x4 ))} Viejos son los trapos ∀x5 (viejo(x5 ) ⇒ trapo(x5 )) {¬viejo(x5 ), trapo(x5 )} Cast.: Todavı́a quedan peronistas de los viejos 1◦ o.: ∃x6 (viejo(x6 ) ∧ peronista(x6 )) Claus.: {viejo(elViejoPeronista)} {peronista(elViejoPeronista)} Resolución en Lógica de Primer Orden Resolución SLD Repaso Ejercicio Ejemplo (cont.) Recuperatorio 2◦ parcial 2◦ Cuat. 2006 A partir de ellas, se desea demostrar que: Cast.: Existe un pibe peronista que es lo mejor para un trapo 1◦ o.: ∃x8 (pibe(x8 ) ∧ peronista(x8 ) ∧ ∃y8 (trapo(y8 ) ∧ mejorPara(y8 , x8 ))) Neg.: ∀x8 (¬pibe(x8 ) ∨ ¬peronista(x8 ) ∨ ∀y8 (¬trapo(y8 ) ∨ ¬mejorPara(y8 , x8 ))) Claus.: {¬pibe(x8 ), ¬peronista(x8 ), ¬trapo(y8 ), ¬mejorPara(y8 , x8 )} Resolución en Lógica de Primer Orden Resolución SLD Repaso Ejercicio Ejemplo (resolviendo) Recuperatorio 2◦ parcial 2◦ Cuat. 2006 {A1 , ..., Am , P1 , ..., Pk } {B1 , ..., Bn , ¬Q1 , ..., ¬Ql } σ({A1 , ..., Am , B1 , ..., Bn }) donde σ es el MGU de {P1 , ..., Pk , Q1 , ..., Ql }. 1 {¬peronista(x1 ), ¬mejorPara(x1 , y1 ), peronista(y1 )} 2 {¬viejo(x2 ), pibe(hijoDe(x2 ))} 3 {¬viejo(x3 ), maneja(hijoDe(x3 ))} 4 {¬viejo(x4 ), mejorPara(x4 , hijoDe(x4 ))} 5 {¬viejo(x5 ), trapo(x5 )} 6 {viejo(elViejoPeronista)} 7 {peronista(elViejoPeronista)} 8 {¬pibe(x8 ), ¬peronista(x8 ), ¬trapo(y8 ), ¬mejorPara(y8 , x8 )} Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Resolución SLD (Selective Linear Definite) La resolución es cara, pero hay cupones de descuento... El método de resolución es completo, pero ineficiente. Búsqueda - selección. Resolución lineal reduce el espacio de búsqueda. Resolución SLD es lineal y (un poco) más eficiente, preservando completitud... ¡pero no puede aplicarse a cualquier conjunto de cláusulas! Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Cláusulas de Horn Cláusulas con a lo sumo un literal positivo {P(x), P(y ), ¬Q(y , z)} {Q(E , z)} X → cláusula de definición (hecho) {P(x), ¬P(E )} X → cláusula de definición (regla) {P(x), ¬P(E ), Q(x, y )} {P(x), ¬P(E ), ¬Q(x, y )} X→ cláusula de definición (regla) {¬P(x), ¬P(E ), ¬Q(x, y )} X → cláusula objetivo No toda fórmula puede expresarse como una cláusula de Horn ∀x(P(x) ∨ Q(x)) Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Resolución SLD Un caso particular de la resolución general Cláusulas de Horn con exactamente una cláusula objetivo Resolvemos la cláusula objetivo con una cláusula de definición Eso nos da otra cláusula objetivo Repetimos el proceso con esta nueva cláusula Hasta llegar a la cláusula vacı́a Sustitución respuesta obj. def. z }| { z }| { {R, ¬B1 , . . . , ¬Bn } {¬A1 , . . . , ¬Ak−1 , ¬Ak , ¬Ak+1 , . . . , ¬Am } σ({¬A1 , . . . , ¬Ak−1 , ¬B1 , . . . , ¬Bn , ¬Ak+1 , . . . , ¬Am }) {z } | nuevo obj. donde σ es el MGU de {R, Ak }. Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Resolución SLD Ejemplo “Los enemigos de mis enemigos son mis amigos.” 1 {amigo(a, b), ¬enemigo(a, c), ¬enemigo(c, b)} 2 {enemigo(Reed, Dr. Doom)} 3 4 {enemigo(Dr. Doom, Ben)} {enemigo(Dr. Doom, Johnny)} 5 {¬amigo(Reed, x)} 6 (1 y 5) {¬enemigo(Reed, c), ¬enemigo(c, x)} σ = {a ← Reed, b ← x}2 7 (2 y 6) {¬enemigo(Dr. Doom, x)} σ = {a ← Reed, b ← x, c ← Dr. Doom} (3 y 7) 2 σ = {a ← Reed, b ← Ben, c ← Dr. Doom, x ← Ben} 8 2 En este ejemplo σ es siempre el resultado de la composición de todas las sustituciones hasta el momento. Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Árbol de resolución ¡Es una secuencia! La resolución SLD es lineal: no hay vuelta atrás posible. Si el objetivo puede resolverse con más de una regla, elegir la correcta. Si hay más de una, elegir cualquiera. Si nos equivocamos, entonces lo que hicimos no es parte de la resolución SLD. Puede haber varias resoluciones SLD posibles. Prolog intenta buscar todas (resolución SLD + backtracking). Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Resolución SLD y Prolog Preguntas generales El método de resolución SLD ¿es determinı́stico? ¿Es completo? ¿Prolog usa resolución SLD? ¿Su método es completo? ¿Es determinı́stico? ¿Dónde está el problema (o la diferencia)? Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Resolución SLD y Prolog El ejemplo anterior en Prolog “Los enemigos de mis enemigos son mis amigos.” {amigo(a, b), ¬enemigo(a, c), ¬enemigo(c, b)} {enemigo(Reed, Dr. Doom)} {enemigo(Dr. Doom, Ben)} {enemigo(Dr. Doom, Johnny)} amigo(A, B) :- enemigo(A, C), enemigo(C, B). enemigo(reed, drdoom). enemigo(drdoom, ben). enemigo(drdoom, johnny). {¬amigo(Reed, x)} ?- amigo(reed, X). ¿Cuál es la relación? ¿Cualquier ejemplo se puede traducir ası́? ¿Qué hay que tener en cuenta? Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Ejemplo ◦ ◦ 2 parcial 2 Cuat. 2006 El juego “Seis grados de Kevin Bacon” (six degrees of Kevin Bacon) propone que cualquier actor está vinculado en a lo sumo seis pasos a Kevin Bacon, a través de la participación en una pelı́cula. El grado Kevin Bacon de un actor es el número de dichos vı́nculos. Por ejemplo, Nicole Kidman tiene grado 2: estuvo en Ojos bien cerrados con Tom Cruise, y él en Cuestión de Honor con Kevin Bacon. Usaremos los sı́mbolos actuó(actor, peli) para expresar que el actor actor actuó en la pelı́cula peli, y juntos(a1 , a1 ) para decir que los actores a1 y a2 actuaron juntos en alguna pelı́cula. Además, usaremos constantes como Rı́oMı́stico, RobertDeNiro, etc. para referirnos a actores y pelı́culas. Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Ejemplo (cont.) 2◦ parcial 2◦ Cuat. 2006 1 Regla: “Dos actores se consideran juntos si actuaron en la misma pelı́cula”. 2 Objetivo: “Jorge Porcel tiene grado Kevin Bacon 3” (en términos de juntos) 3 Hechos: de la forma actuó(actor, peli), tomados de la siguiente información de pelı́culas: Dos por el dinero: Con Al Pacino, Matthew McConaughey, Rene Russo y Kevin Chapman. Rı́o Mı́stico: Con Tim Robbins, Kevin Bacon, Laurence Fishbourne, y Kevin Chapman. Carlito’s Way: Con Al Pacino, Sean Penn, Penelope Ann Miller, John Leguizamo y Jorge Porcel. Demostrar que vale el objetivo usando resolución SLD. Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Ejemplo (cont.) 2◦ parcial 2◦ Cuat. 2006 1 {juntos(a1 , a2 ), ¬actuó(a1 , peli), ¬actuó(a2 , peli)} 2 {actuó(KevinChapman, DosPorElDinero)} 3 {actuó(AlPacino, DosPorElDinero)} 4 {actuó(KevinChapman, Rı́oMı́stico)} 5 {actuó(KevinBacon, Rı́oMı́stico)} 6 {actuó(AlPacino, CarlitosWay)} 7 {actuó(Porcel, CarlitosWay)} .. . 8 {¬juntos(Porcel, x), ¬juntos(x, y ), ¬juntos(y , KevinBacon)} Resolución en Lógica de Primer Orden Resolución SLD Motivación Cláusulas de Horn Resolución Árbol de resolución Fin 2