Resolución General Resolución lineal y SLD Clase práctica Resolución en lógica de primer orden Paradigmas de Lenguajes de Programación Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 05/06/2014 Resolución General Agenda 1 Resolución General Repaso Método de resolución En lógica proposicional En lógica de primer orden Ejercicios 2 Resolución lineal y SLD Resolución lineal Motivación Cláusulas de Horn Resolución Árbol de resolución Preguntas generales Ejemplo completo Resolución lineal y SLD Resolución General Resolución lineal y SLD Método de resolución ¿Qué es? Procedimiento para determinar la insatisfactibilidad de una fórmula. Es útil como técnica de demostración por refutación (i.e., probar que A es válida mostrando que ¬A es insatisfactible). Consiste en la aplicación sucesiva de una regla de inferencia a un conjunto de cláusulas. Resolución General Resolución lineal y SLD Método de resolución Satisfactibilidad y validez En general, Una asignación asocia variables a valores del dominio. Una fórmula A es válida sii toda asignación la hace verdadera. Una fórmula A es satisfactible sii alguna asignación la hace verdadera. El siguiente hecho permite utilizar al método como técnica de demostración: A es válida sii ¬A es insatisfactible Resolución General Resolución lineal y SLD Método de resolución Cláusulas y FNC El método trabaja con fórmulas en forma normal conjuntiva. Conjunción de disyunciones de literales, siendo un literal una fórmula atómica o su negación. Una cláusula es cada una de estas disyunciones de literales. Las representamos en notación conjuntista. Ejemplo: {¬menor(X , Y ), menor(c, Y )} representa la cláusula ∀X , Y .(¬menor(X , Y ) ∨ menor(c, Y )) Resolución General Resolución lineal y SLD Método de resolución Cláusulas y FNC De esta manera, notamos a una fórmula en FNC como un conjunto de cláusulas. Éste se entiende como la conjunción de las mismas. Por ejemplo, el conjunto que contiene a las cláusulas {¬menor(X , Y ), menor(c, Y )} {impar(Z ), mayor(Z , w )} representa la fórmula ∀X , Y .(¬menor(X , Y )∨menor(c, Y ))∧∀Z .(impar(Z )∨mayor(Z , w )) Resolución General Resolución lineal y SLD Método de resolución Pasaje a FNC Paso a paso 1 Eliminar implicación 2 Forma normal negada 3 Forma normal prenexa (opcional) 4 Forma normal de Skolem (dependencias = variables libres dentro del alcance del ∃) 5 Forma normal conjuntiva 6 Distribución de cuantificadores y renombre de variables Resolución General Resolución lineal y SLD En lógica proposicional La regla de resolución en el marco proposicional Ai = {A1 , . . . , Am , Q} Aj = {B1 , . . . , Bn , ¬Q} B = {A1 , . . . , Am , B1 , . . . , Bn } A B se lo llama resolvente (de Ai y Aj ) La regla se apoya en el hecho de que la siguiente proposición es una tautologı́a: (A ∨ P) ∧ (B ∨ ¬P) ⇔ (A ∨ P) ∧ (B ∨ ¬P) ∧ (A ∨ B) El conjunto de cláusulas {A1 , . . . , Ak } es lógicamente equivalente a {A1 , . . . , Ak , B} Resolución General Resolución lineal y SLD En lógica de primer orden La regla de resolución en primer orden Ai = {A1 , . . . , Am , P1 , . . . , Pk } Aj = {B1 , . . . , Bn , ¬Q1 , . . . , ¬Ql } B = σ({A1 , . . . , Am , B1 , . . . , Bn }) σ es el MGU de {P1 , . . . , Pk , Q1 , . . . , Ql } es decir, σ(P1 ) = . . . = σ(Pk ) = σ(Q1 ) = . . . = σ(Ql ) A B se lo llama resolvente (de Ai y Aj ) Cada paso de resolución preserva satisfactibilidad (Teorema de Herbrand-Skolem-Gödel) Resolución General Resolución lineal y SLD En lógica de primer orden 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. Importante: al aplicar resolución suelen presentarse varias opciones. Conviene tener un plan. Resolución General Resolución lineal y SLD En lógica de primer orden Cosas importantes para recordar1 Al skolemizar, usar la misma constante o función si y sólo si la variable que estamos eliminando es la misma (nunca para otras, aun si tienen el mismo nombre). Para encontrar las dependencias, ver qué variables están libres dentro del alcance del ∃ (sin contar la que se está eliminando). ¡No olvidarse de negar lo que se quiere demostrar! Y recordar que ¬((A1 ∧ ... ∧ An ) ⊃ B) = A1 ∧ ... ∧ An ∧ ¬B. Antes de empezar a aplicar pasos de resolución, convencerse de que lo que se quiere demostrar es verdadero, y trazar un plan para demostrarlo (mentalmente o por escrito). Recordar bien cómo funciona la unificación, y sustituir siempre variables (ni funciones, ni constantes, ni predicados). 1 Seguir las indicaciones de esta lista previene los errores más frecuentes en los parciales. Resolución General Resolución lineal y SLD Ejercicios Ejemplo Recuperatorio 2◦ parcial 1◦ Cuat. 2012 Representar en forma clausal la siguiente información referida a conjuntos, pertenencia (predicado Pert) e inclusión (predicado Inc). i ∀X ∀Y (Inc(X , Y ) ⇔ (∀Z Pert(Z , X ) ⊃ Pert(Z , Y ))) X está incluido en Y si y sólo si cada elemento de X es un elemento de Y . ii ∀X ¬Pert(X , ∅) Ningún elemento pertenece al vacı́o. Usar resolución para probar que el vacı́o está incluido en todo conjunto. Indicar justificando si la prueba realizada es SLD (volveremos sobre esto más adelante). Resolución General Resolución lineal y SLD Ejercicios Ejemplo Recuperatorio 2◦ parcial 1◦ Cuat. 2012 Cast.: X ⊆ Y si y sólo si cada elemento de X es un elemento de Y . 1◦ o.: ∀X ∀Y (Inc(X , Y ) ⇔ (∀Z Pert(Z , X ) ⊃ Pert(Z , Y ))) Claus.: {¬Inc(X1 , Y1 ), ¬Pert(Z1 , X1 ), Pert(Z1 , Y1 )} {Inc(X2 , Y2 ), Pert(f(X2 , Y2 ), X2 )} {Inc(X3 , Y3 ), ¬Pert(f(X3 , Y3 ), Y3 )} Cast.: 1◦ o.: Claus.: Ningún elemento pertenece al vacı́o. ∀X ¬Pert(X , ∅) {¬Pert(X4 , ∅)} Resolución General Resolución lineal y SLD Ejercicios Ejemplo (cont.) Recuperatorio 2◦ parcial 1◦ Cuat. 2012 A partir de ellas, se desea demostrar que: Cast.: El vacı́o está incluido en todo conjunto. 1◦ o.: ∀X Inc(∅, X ) Neg.: ∃X ¬Inc(∅, X ) Claus.: {¬Inc(∅, c)} Resolución General Resolución lineal y SLD Ejercicios Ejemplo Recuperatorio 2◦ parcial 1◦ Cuat. 2012 Cast.: X ⊆ Y si y sólo si cada elemento de X es un elemento de Y . 1◦ o.: ∀X ∀Y (Inc(X , Y ) ⇔ (∀Z Pert(Z , X ) ⊃ Pert(Z , Y ))) Claus.: {¬Inc(X1 , Y1 ), ¬Pert(Z1 , X1 ), Pert(Z1 , Y1 )} {Inc(X2 , Y2 ), Pert(f(X2 , Y2 ), X2 )} {Inc(X3 , Y3 ), ¬Pert(f(X3 , Y3 ), Y3 )} Cast.: 1◦ o.: Claus.: Ningún elemento pertenece al vacı́o. ∀X ¬Pert(X , ∅) {¬Pert(X4 , ∅)} Resolución General Resolución lineal y SLD Ejercicios Ejemplo (cont.) Recuperatorio 2◦ parcial 1◦ Cuat. 2012 A partir de ellas, se desea demostrar que: Cast.: El vacı́o está incluido en todo conjunto. 1◦ o.: ∀X Inc(∅, X ) Neg.: ∃X ¬Inc(∅, X ) Claus.: {¬Inc(∅, c)} Resolución General Resolución lineal y SLD Ejercicios Ejemplo (resolviendo) Recuperatorio 2◦ parcial 1◦ Cuat. 2012 {A1 , ..., Am , P1 , ..., Pk } {B1 , ..., Bn , ¬Q1 , ..., ¬Ql } σ({A1 , ..., Am , B1 , ..., Bn }) donde σ es el MGU de {P1 , ..., Pk , Q1 , ..., Ql }. 1 {¬Inc(X1 , Y1 ), ¬Pert(Z1 , X1 ), Pert(Z1 , Y1 )} 2 {Inc(X2 , Y2 ), Pert(f(X2 , Y2 ), X2 )} 3 {Inc(X3 , Y3 ), ¬Pert(f(X3 , Y3 ), Y3 )} 4 {¬Pert(X4 , ∅)} 5 {¬Inc(∅, c)} 6 (2 y 5) 7 (6 y 4) {Pert(f(∅, c), ∅)} σ = {X2 ← ∅, Y2 ← c} 2 σ = {X4 ← f(∅, c)} Resolución General Resolución lineal y SLD Ejercicios Otro ejemplo ◦ Recuperatorio 2 parcial 2◦ Cuat. 2008 Dadas las siguientes definiciones de Descendiente y Abuelo a partir de la relación Progenitor: • Los hijos son descendientes: ∀X ∀Y (Progenitor(X , Y ) ⊃ Descendiente(Y, X )) • La relación de descendencia es transitiva: ∀X ∀Y ∀Z (Descendiente(X, Y ) ∧ Descendiente(Y, Z ) ⊃ Descendiente(X, Z )) • El abuelo es progenitor de alguien que es progenitor del nieto: ∀X ∀Y (Abuelo(X , Y ) ⊃ ∃Z (Progenitor(X , Z ) ∧ Progenitor(Z , Y ))) Demostrar usando resolución general que los nietos son descendientes; es decir, que ∀X ∀Y (Abuelo(X , Y ) ⊃ Descendiente(Y, X )) Ayuda: tratar de aplicar el método a ciegas puede traer problemas. Conviene tener en mente lo que se quiere demostrar. Resolución General Resolución lineal y SLD Ejercicios Otro ejemplo ◦ Recuperatorio 2 parcial 2◦ Cuat. 2008 Cast.: Los hijos son descendientes. 1◦ o.: ∀X ∀Y (Progenitor(X , Y ) ⊃ Descendiente(Y, X )) Claus.: {¬Progenitor(X1 , Y1 ), Descendiente(Y1, X1 )} Cast.: 1◦ o.: Claus.: La relación de descendencia es transitiva. ∀X ∀Y ∀Z (Descendiente(X, Y ) ∧ Descendiente(Y, Z ) ⊃ Descendiente(X, Z )) {¬Descendiente(X2, Y2 ), ¬Descendiente(Y2, Z2 ), Descendiente(X2, Z2 )} Cast.: El abuelo es progenitor de alguien que es progenitor del nieto. 1◦ o.: ∀X ∀Y (Abuelo(X , Y ) ⊃ ∃Z (Progenitor(X , Z ) ∧ Progenitor(Z , Y ))) Claus.: {¬Abuelo(X3 , Y3 ), Progenitor(X3 , medio(X3 , Y3 ))} {¬Abuelo(X4 , Y4 ), Progenitor(medio(X4 , Y4 ), Y4 )} Resolución General Resolución lineal y SLD Ejercicios Otro ejemplo (cont.) Recuperatorio 2◦ parcial 2◦ Cuat. 2008 A partir de ellas, se desea demostrar que: Cast.: Los nietos son descendientes 1◦ o.: ∀X ∀Y (Abuelo(X , Y ) ⊃ Descendiente(Y, X )) Neg.: ∃X ∃Y (Abuelo(X , Y ) ∧ ¬Descendiente(Y, X )) Claus.: {Abuelo(a, b)} {¬Descendiente(b, a)} Resolución General Resolución lineal y SLD Ejercicios Otro ejemplo ◦ Recuperatorio 2 parcial 2◦ Cuat. 2008 Cast.: Los hijos son descendientes. 1◦ o.: ∀X ∀Y (Progenitor(X , Y ) ⊃ Descendiente(Y, X )) Claus.: {¬Progenitor(X1 , Y1 ), Descendiente(Y1, X1 )} Cast.: 1◦ o.: Claus.: La relación de descendencia es transitiva. ∀X ∀Y ∀Z (Descendiente(X, Y ) ∧ Descendiente(Y, Z ) ⊃ Descendiente(X, Z )) {¬Descendiente(X2, Y2 ), ¬Descendiente(Y2, Z2 ), Descendiente(X2, Z2 )} Cast.: El abuelo es progenitor de alguien que es progenitor del nieto. 1◦ o.: ∀X ∀Y (Abuelo(X , Y ) ⊃ ∃Z (Progenitor(X , Z ) ∧ Progenitor(Z , Y ))) Claus.: {¬Abuelo(X3 , Y3 ), Progenitor(X3 , medio(X3 , Y3 ))} {¬Abuelo(X4 , Y4 ), Progenitor(medio(X4 , Y4 ), Y4 )} Resolución General Resolución lineal y SLD Ejercicios Otro ejemplo (cont.) Recuperatorio 2◦ parcial 2◦ Cuat. 2008 A partir de ellas, se desea demostrar que: Cast.: Los nietos son descendientes 1◦ o.: ∀X ∀Y (Abuelo(X , Y ) ⊃ Descendiente(Y, X )) Neg.: ∃X ∃Y (Abuelo(X , Y ) ∧ ¬Descendiente(Y, X )) Claus.: {Abuelo(a, b)} {¬Descendiente(b, a)} Resolución General Resolución lineal y SLD Ejercicios Otro ejemplo (resolviendo) Recuperatorio 2◦ parcial 2◦ Cuat. 2008 1 {¬Progenitor(X1 , Y1 ), Descendiente(Y1, X1 )} 2 {¬Descendiente(X2, Y2 ), ¬Descendiente(Y2, Z2 ), Descendiente(X2, Z2 )} 3 {¬Abuelo(X3 , Y3 ), Progenitor(X3 , medio(X3 , Y3 ))} 4 {¬Abuelo(X4 , Y4 ), Progenitor(medio(X4 , Y4 ), Y4 )} 5 {Abuelo(a, b)} 6 {¬Descendiente(b, a)} Resolvámoslo en el pizarrón. Resolución General 1 Resolución General Repaso Método de resolución En lógica proposicional En lógica de primer orden Ejercicios 2 Resolución lineal y SLD Resolución lineal Motivación Cláusulas de Horn Resolución Árbol de resolución Preguntas generales Ejemplo completo Resolución lineal y SLD Resolución General Resolución lineal y SLD Resolución lineal 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 C0 B2 C1 σ1 B3 C2 σ2 C3 σ3 Bp−1 ... Bp Cp−1 σp−1 Cp = 2 σp donde C0 y cada Bi es un elemento de S o algún Cj con j < i. Resolución General Resolución lineal y SLD Motivació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. El espacio de búsqueda - inicialmente cuadrático - crece en cada paso. 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 General Resolución lineal y SLD Cláusulas de Horn 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 General Resolución lineal y SLD 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 Si se busca un resultado, computamos la 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 General Resolución Resolución SLD Ejemplo (computando una solución) “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 , B)} σ6 = {A ← Reed, X ← B} 7 (2 y 6) {¬enemigo(Dr. Doom, B)} σ7 = {C ← Dr. Doom} (3 y 7) 2 σ8 = {B ← Ben} σ = σ8 ◦ σ7 ◦ σ6 = {A ← Reed, X ← Ben, B ← Ben, C ← Dr. Doom} 8 Resolución lineal y SLD Resolución General Resolución lineal y SLD Á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 General Resolución lineal y SLD Preguntas generales Resolución SLD y Prolog Preguntas generales El mecanismo de búsqueda en la resolución SLD ¿está determinado? ¿El método es completo? ¿Prolog usa resolución SLD? ¿Su método es completo? ¿Está determinado? ¿Dónde está el problema (o la diferencia)? Resolución General Resolución lineal y SLD Preguntas generales 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 General Resolución lineal y SLD Preguntas generales Volviendo al primer ejercicio que resolvimos... 1 {¬Inc(X1 , Y1 ), ¬Pert(Z1 , X1 ), Pert(Z1 , Y1 )} 2 {Inc(X2 , Y2 ), Pert(f(X2 , Y2 ), X2 )} 3 {Inc(X3 , Y3 ), ¬Pert(f(X3 , Y3 ), Y3 )} 4 {¬Pert(X4 , ∅)} 5 {¬Inc(∅, c)} 6 (2 y 5) 7 (6 y 4) {Pert(f(∅, c), ∅)} σ = {X2 ← ∅, Y2 ← c} 2 σ = {X4 ← f(∅, c)} ¿Esto es SLD? ¿Por qué, o por qué no? Resolución General Resolución lineal y SLD Ejemplo completo Último ejercicio ◦ ◦ 2 parcial 1 Cuat. 2011 En este ejercicio usaremos el método de resolución para demostrar una propiedad de las relaciones binarias; a saber, que una relación no vacı́a no puede ser a la vez irreflexiva, simétrica y transitiva. Para esto tomaremos una relación R y se demostrará que, si R satisface las tres propiedades mencionadas, entonces es vacı́a. Dadas las siguientes definiciones: 1 R es irreflexiva: ∀X ¬R(X , X ) 2 R es simétrica: ∀X ∀Y (R(X , Y ) ⊃ R(Y , X )) 3 R es transitiva: ∀X ∀Y ∀Z ((R(X , Y ) ∧ R(Y , Z )) ⊃ R(X , Z )) 4 R es vacı́a: ∀X ¬∃YR(X , Y ) Utilizando resolución, demostrar que sólo una relación vacı́a puede cumplir a la vez las propiedades 1 a 3. Indicar si el método de resolución utilizado es o no SLD (y justificar). Resolución General Resolución lineal y SLD Ejemplo completo Último ejercicio ◦ ◦ 2 parcial 1 Cuat. 2011 Cast.: R es irreflexiva. 1◦ o.: ∀X ¬R(X , X ) Claus.: {¬R(X1 , X1 )} Cast.: R es simétrica 1◦ o.: ∀X ∀Y (R(X , Y ) ⊃ R(Y , X )) Claus.: {¬R(X2 , Y2 ), R(Y2 , X2 )} Cast.: 1◦ o.: Claus.: R es transitiva. ∀X ∀Y ∀Z ((R(X , Y ) ∧ R(Y , Z )) ⊃ R(X , Z )) {¬R(X3 , Y3 ), ¬R(Y3 , Z3 ), R(X3 , Z3 )} Resolución General Resolución lineal y SLD Ejemplo completo Último ejercicio (cont.) 2◦ parcial 1◦ Cuat. 2011 Se desea demostrar que: Cast.: R es vacı́a: 1◦ o.: ∀X ¬∃YR(X , Y ) Neg.: ∃X ∃Y R(X , Y ) Claus.: {R(a, b)} Resolución General Resolución lineal y SLD Ejemplo completo Último ejercicio (resolviendo) 2◦ parcial 1◦ Cuat. 2011 1 {¬R(X1 , X1 )} 2 {¬R(X2 , Y2 ), R(Y2 , X2 )} 3 {¬R(X3 , Y3 ), ¬R(Y3 , Z3 ), R(X3 , Z3 )} 4 {R(a, b)} 5 (4 y 2) {R(b, a)} σ = {X2 ← a, Y2 ← b} 6 (5 y 3) {¬R(X6 , b), R(X6 , a)} σ = {Y3 ← b, Z3 ← a} renombrando X3 a X6 7 (6 y 4) 8 (7 y 1) {R(a, a)} σ = {X6 ← a} 2 σ = {X1 ← a} ¿Esta demostración por resolución es SLD? ¿Por qué, o por qué no? Resolución General Resolución lineal y SLD Ejemplo completo Alternativa SLD ◦ ◦ 2 parcial 1 Cuat. 2011 1 {¬R(X1 , X1 )} 2 {¬R(X2 , Y2 ), R(Y2 , X2 )} 3 {¬R(X3 , Y3 ), ¬R(Y3 , Z3 ), R(X3 , Z3 )} 4 {R(a, b)} 5 (1 y 3) {¬R(X1 , Y3 ), ¬R(Y3 , X1 )} σ = {X3 ← X1 , Z3 ← X1 } 6 (5 y 4) {¬R(b, a)} σ = {X1 ← a, Y3 ← b} 7 (6 y 2) 8 (7 y 4) {¬R(a, b)} σ = {X2 ← a, Y2 ← b} 2σ=∅ ¿Es la única posible? Resolución General Resolución lineal y SLD Ejemplo completo Otra alternativa SLD (más corta) 2◦ parcial 1◦ Cuat. 2011 1 {¬R(X1 , X1 )} 2 {¬R(X2 , Y2 ), R(Y2 , X2 )} 3 {¬R(X3 , Y3 ), ¬R(Y3 , Z3 ), R(X3 , Z3 )} 4 {R(a, b)} 5 (1 y 3) {¬R(X1 , Y3 ), ¬R(Y3 , X1 )} σ = {X3 ← X1 , Z3 ← X1 } 6 (5 y 2) {¬R(X2 , Y2 )} σ = {X1 ← X2 , Y3 ← Y2 } 7 (6 y 4) 2 σ = {X2 ← a, Y2 ← b} Resolución General Resolución lineal y SLD Ejemplo completo Fin 2