Top Banner
Programación Lógica rafael ramirez [email protected] Ocata 320
26

Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

Feb 07, 2018

Download

Documents

vokiet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

Programación Lógica

rafael [email protected]

Ocata 320

Page 2: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

2

Logica proposicionalUna literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

p, q , ¬r, …

Una cláusula (proposicional) es una disyuncion de literalesp ∨ 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 llamanclausulas de programa. Las (1) se llaman clausulas unitarias

Page 3: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

3

Logica proposicionalUna 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 (usandola ley de De Morgan) como

¬(p1 ∧ … ∧ pn) ∨ qQue a su vez se puede reescribir como

(p1 ∧ … ∧ pn) → q

Un programa logico (proposicional) es un conjunto de declausulas de programa

Nota que (3) se puede reescribir como ¬(p1 ∧ … ∧ pn)

Page 4: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

4

ResolucionLa regla de resolucion: si tenemos 2 clausulas 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 logico 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 ?

Page 5: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

5

Resolucion

P |res Q ?

Lo que se hace es introducir ¬Q como una hipotesis adicional y usarresolucion. 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

Page 6: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

6

Resolucion

Page 7: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

7

Diferentes formas, la misma cosa(a) ¬p ∨ ¬q ∨ r (b) p ∧ q → r (c) r ← p ∧ q (d) r : - p, q.

p p p p.q q q q.

(a)=(b)=(c)=(d)

Si preguntamos si r es consecuencia logica de las tres clausulas (de Horn)

(a) (b) y (c) (d)1. ¬p ∨ ¬q ∨ r hip r r2. p hip | |3. q hip p∧q C1 p, q C1 4. ¬ r hip extra | |5. ¬p ∨ ¬q Res 1,4 q C2 q C26. ¬q Res 2,5 | |7. □ Res 3,6 □ C3 □ C3

Page 8: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

8

Formulas, clausulas, Horn

Forma normal conjuntiva:(¬p ∨¬q ∨ r ) ∧ (¬p ∨ q ∨ ¬r)

TFFTTTTT

Page 9: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

9

Resolucion

Es s consecuencia logica del programa?

s :- p, q, r.r :- t, w.q.p :- v, r.t.v.w :- v.

Page 10: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

10

Resolucion

s :- p, q, r.r :- t, w.q.p :- v, r.t.v.w :- v.

Page 11: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

11

Resolucion

Page 12: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

12

Resolucion

Page 13: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

13

Resolucion SLD

Page 14: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

14

Resolucion SLD

Page 15: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

15

Negacion

Si P es un programa logico y q es una pregunta y no podemosprobar P |res q entonces deducimos P |res ¬q

Page 16: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

16

Logica de PredicadosUna 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(…)

Page 17: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

17

Resolucion

Page 18: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

18

Resolucion

Ejercicio: dado el siguiente programa:

Es m(a) consucuencia logica del programa?Construye el arbol de resolucion SLD.

Page 19: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

19

Resolucion

Solucion: si es consecuencia logica

Este arbol se llama arbol de resolucion SLD

Page 20: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

20

Resolucion

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)

Page 21: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

21

Resolucion

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).

:-teaches(peter,ai_techniques)

:-teaches(peter,expert_systems)

:-teaches(peter,computer_science)

?-student_of(S,peter)

:-follows(S,C),teaches(peter,C):-follows(S,C),teaches(peter,C)

:-teaches(peter,expert_systems)

:-teaches(peter,computer_science) :-teaches(peter,ai_techniques)

?-student_of(S,peter)

[][]

Page 22: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

22

Resolucion

brother_of(X,Y):-brother_of(Y,X).brother_of(paul,peter).

?-brother_of(peter,B)

Page 23: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

23

Resolucion

brother_of(X,Y):-brother_of(Y,X).brother_of(paul,peter).

•••

:-brother_of(B,peter)

[]

?-brother_of(peter,B)

:-brother_of(peter,B)

:-brother_of(B,peter)

[]

Page 24: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

24

En ResumenQue es:

La logica proposicionalLa logica de predicados

Que técnicas/métodos hay paraLa logica proposicionalLa logica de predicados

Que herramientas informáticas hay paraLa logica proposicionalLa logica de predicados

Page 25: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

25

En Resumen (que es?)Que es la logica proposicional?

p, q, r, …¬, ∧, ∨, →Ej. (p ∧ ¬q) → rCada 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)

Page 26: Programación Lógica - dtic.upf.edurramirez/Logica/L06.pdf · 2 Logica proposicional Una literal (proposicional) es una variable proposicional o la negacion de una variable proposicional:

26

En Resumen (métodos y herramientas)

Tablas de Tableaux Manipul. Deduccion Resolucion Prologverdad semánticos algebraica natural (SLD)

LProp si si si si si si(no en clase)

LPred no si si si si siaplica (no en clase) (no en clase)