Programación Lógica! rafael ramirez [email protected] 55.316 (Tanger) Lógica proposicional! Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional: p, q , ¬r, … Una cláusula (proposicional) es una disyuncion de literales p ∨ q ∨ ¬r es una cláusula ¬(r ∨ q) no es una cláusula Una cláusula de Horn (proposicional) es una clausula (prop.) con a lo mas una literal positiva (1) q (2) ¬p1 ∨ … ∨ ¬pn ∨ q (3) ¬p1 ∨ … ∨ ¬pn Clausulas de Horn de (1) y (2) con una literal positiva se llaman clausulas de programa. Las (1) se llaman clausulas unitarias 2 Lógica proposicional Una cláusula de Horn (proposicional) es una clausula (prop.) con a lo mas una literal positiva (1) q (2) ¬p1 ∨ … ∨ ¬pn ∨ q (3) ¬p1 ∨ … ∨ ¬pn Las clausulas de Horn de tipo (2) pueden reescribirse (usando la ley de De Morgan) como ¬(p1 ∧ … ∧ pn) ∨ q Que a su vez se puede reescribir como (p1 ∧ … ∧ pn) → q Un programa logico (proposicional) es un conjunto de de clausulas de programa Nota que (3) se puede reescribir como ¬(p1 ∧ … ∧ pn) 3 Resolución! La regla de resolución: si tenemos 2 cláusulas C1, C2 y una variable proposicional p C1 ∨ p, C2 ∨ ¬p |⎯res C1 ∨ C2 En general C1 y C2 pueden ser clausulas generales pero en programación logica estamos interesados en clausulas de Horn. Supon que tenemos un programa lógico P. Estamos interesados en Q es consecuencia logica del programa? Si las clausulas del programa son tomadas como hipotesis, podemos concluir Q usando la regla de resolucion? P |⎯res Q ? 4 Resolucion! P |⎯res Q ? Lo que se hace es introducir ¬Q como una hipotesis adicional y usar resolucion. Si llegamos a la clausula vacia □ entonces la respuesta a P |⎯res Q ? es si. Esto se basa en el teorema: si P, Q |⎯res □ entonces P ∧ ¬Q es insatisfacible 5 Resolución! 6 Diferentes formas, la misma cosa! (a) ¬p ∨ ¬q ∨ r p q (b) p ∧ q → r p q (c) r ← p ∧ q p q (d) r : - p, q. p. q. (a)=(b)=(c)=(d) Si preguntamos si r es consecuencia logica de las tres clausulas (de Horn) (a) (b) y (c) 1. ¬p ∨ ¬q ∨ r 2. p 3. q 4. ¬ r 5. ¬p ∨ ¬q 6. ¬q 7. □ hip hip hip hip extra Res 1,4 Res 2,5 Res 3,6 (d) r | p∧q | q | □ C1 C2 C3 r | p, q | q | □ C1 C2 C3 7 Resolución! s :- p, q, r. r :- t, w. q. p :- v, r. t. v. w :- v. Es s consecuencia logica del programa? 8 Resolución! s :- p, q, r. r :- t, w. q. p :- v, r. t. v. w :- v. 9 Resolución 10 Resolución 11 Resolución SLD 12 Resolución SLD 13 Negación! Si P es un programa logico y q es una pregunta y no podemos probar P |⎯res q entonces deducimos P |⎯res ¬q 14 Lógica de Predicados! Una cláusula de Horn es (1) ∀x1,…∀xn (Q) (2) ∀x1,…∀xn (¬R1∨…∨¬Rk ∨ Q) (3) ∀x1,…∀xn (¬R1∨…∨¬Rk) O reescribiendo: (1) Q (2) (R1 ∧ … ∧ Rn) → Q (3) ¬(R1 ∧ … ∧ Rn) Ri y Q son (atomos) de la forma p(…) 15 Resolución 16 Resolución Ejercicio: dado el siguiente programa: Es m(a) consucuencia logica del programa? Construye el arbol de resolucion SLD. 17 Resolución Solucion: si es consecuencia logica Este arbol se llama arbol de resolucion SLD 18 Resolución student_of(X,T):-follows(X,C),teaches(T,C). follows(paul,computer_science). follows(paul,expert_systems). follows(maria,ai_techniques). teaches(adrian,expert_systems). teaches(peter,ai_techniques). teaches(peter,computer_science). ?-student_of(S,peter) 19 Resolución student_of(X,T):-follows(X,C),teaches(T,C). follows(paul,computer_science). follows(paul,expert_systems). follows(maria,ai_techniques). teaches(adrian,expert_systems). teaches(peter,ai_techniques). teaches(peter,computer_science). ?-student_of(S,peter) :-follows(S,C),teaches(peter,C) :-teaches(peter,computer_science) :-teaches(peter,computer_science) :-teaches(peter,ai_techniques) :-teaches(peter,expert_systems) [] [] 20 Resolución brother_of(X,Y):-brother_of(Y,X). brother_of(paul,peter). ?-brother_of(peter,B) 21 Resolución brother_of(X,Y):-brother_of(Y,X). brother_of(paul,peter). ?-brother_of(peter,B) :-brother_of(B,peter) :-brother_of(peter,B) [] :-brother_of(B,peter) • • • [] 22 En Resumen! Que es: Que técnicas/métodos hay para La logica proposicional La logica de predicados La logica proposicional La logica de predicados Que herramientas informáticas hay para La logica proposicional La logica de predicados 23 En Resumen (que es?)! Que es la logica proposicional? p, q, r, … ¬, ∧, ∨, → Ej. (p ∧ ¬q) → r Cada fórmula evalua a T (verdadero) o F (falso) Que es la logica de predicados? Variables: x, y, z; constantes: a, b, c; funciónes: f, g, predicados: p, q, r; conectivos: prop. + ∀, ∃ Ej. ∀x (H(x) → M(x)) Cada fórmula evalua a T (verdadero) o F (falso) 24 En Resumen (métodos y herramientas)! Tablas de verdad Tableaux Manipul. semánticos algebraica Deduccion Resolucion Prolog natural (SLD) LProp si si si si si si LPred no aplica si si si si si (no en clase) 25