Lógica y Programación Sintaxis y semántica de la lógica proposicional Antonia M. Chávez, Carmen Graciani, Agustı́n Riscos Dpto. Ciencias de la Computacion e Inteligencia Artificial Universidad de Sevilla Aplicaciones de la Lógica Proposicional La Lógica es a los informáticos como la matemática a los arquitectos o fı́sicos. Es “el cálculo de la informática” (M. Y. Vardi). • Análisis de las propiedades de los sitemas en su diseño, desarrollo, mantenimiento. • Planificación: manufactura automática, robótica, programación de vuelos en aerolı́neas, ... • Diseño y verificación de circuitos ... • Deducción: resolución de problemas SAT • Resolución de problemas de la vida real: horarios, rutas de transporte planificación de obras, ... Elementos de una lógica • Elementos de una lógica: • Sintaxis: ¿qué expresiones son fórmulas? • Semántica: ¿qué significa que una fórmula F es consecuencia de un conjunto de fórmulas S?: S |= F • Cálculo: ¿qué significa que una fórmula F puede deducirse a partir de un conjunto de fórmulas S?: S ⊢ F • Propiedades: • Potencia expresiva • Adecuación: S ⊢ F =⇒ S |= F • Completitud: S |= F =⇒ S ⊢ F • Decidibilidad • Complejidad Sintaxis de la lógica proposicional • Alfabeto proposicional: • Sı́mbolos proposicionales: p, p0 , p1 , ..., q, q0 , q1 , ... • Constantes: ⊥, ⊤ • Conectivas lógicas: Negación: ¬ Condicional: → Conjunción: ∧ Equivalencia: ↔ Disyunción: ∨ • Sı́mbolos auxiliares: (, ). Sintaxis de la lógica proposicional Dado un conjunto SP de sı́mbolos proposicionales, se puede definir un lenguaje proposicional L(SP), que contiene todas las fórmulas posibles según la siguiente definición: • Una fórmula proposicional es: • Un elemento de SP: (Fórmula atómica) • Si F y G son fórmulas, entonces: (¬ F ), (F ∧ G ), (F ∨ G ), (F → G ), (F ↔ G ) también lo son. • Ejemplos: • ((p → q) ∨ (q → p)) • (p → (q ∨ (¬ r ))) Sintaxis de la lógica proposicional • Metavariables: • SP: conjunto de sı́mbolos proposicionales • FProp: conjunto de fórmulas proposicionales • Sı́mbolos proposicionales: p, p0 , p1 , ..., q, q0 , q1 , ..., r , ... • Fórmulas proposicionales: F , F0 , F1 , ..., G , G0 , G1 , ... • Eliminación de paréntesis: • Paréntesis externos: (p → q) =⇒ p → q • Prioridad: ¬, ∧, ∨, →, ↔ (p ∨ (¬ q ∧ r )) → (s ∨ t) =⇒ p ∨ ¬ q ∧ r → s ∨ t ((p ∧ ¬ q) ∨ r ) → s =⇒ p ∧ ¬ q ∨ r → s • Asociatividad: ∧ y ∨ asocian por la derecha p ∧ (q ∧ r ) =⇒ p ∧ q ∧ r Sı́mbolos de una fórmula • Sı́mbolos proposicionales de una fórmula: sp(p) sp(¬ F ) sp(F ∧ G ) sp(F ∨ G ) sp(F → G ) sp(F ↔ G ) = = = = = = {p} sp(F ) sp(F ) ∪ sp(G ) sp(F ) ∪ sp(G ) sp(F ) ∪ sp(G ) sp(F ) ∪ sp(G ) Semántica de la lógica proposicional • La semántica debe proporcionarnos: • Noción de verdad: función de verdad • Significado de las fórmulas: especificación • Noción de consecuencia lógica: conclusiones • Valores de verdad: ⊥ y ⊤ (utilizaremos False y True) Semántica de la lógica proposicional • Funciones de verdad • fv¬ : {False, True} → {False, True} True si i = False fv¬ (i) = False si i = True 2 • fv∧ : {False, True} → {False, True} True si i = j = True fv∧ (i, j) = False en otro caso 2 • fv∨ : {False, True} → {False, True} False si i = j = False fv∨ (i, j) = True en otro caso Semántica de la lógica proposicional • Funciones de verdad 2 • fv→ : {False, True} → {False, True} False si i = True y j = False fv→ (i, j) = True en otro caso 2 • fv↔ : {False, True} → {False, True} True si i = j fv↔ (i, j) = False en otro caso Semántica de la lógica proposicional • Interpretación: • Una interpretación I es un conjunto de sı́mbolos proposicionales • Interpretaciones: Conjunto de todas las interpretaciones • sig : FProp × Interpretaciones → {False, True} True si p ∈ I • sig (p, I ) = False en otro caso • sig (¬F , I ) = fv¬ (sig (F , I )) • sig (F ∧ G , I ) = fv∧ (sig (F , I ), sig (G , I )) • sig (F ∨ G , I ) = fv∨ (sig (F , I ), sig (G , I )) • sig (F → G , I ) = fv→ (sig (F , I ), sig (G , I )) • sig (F ↔ G , I ) = fv↔ (sig (F , I ), sig (G , I )) Semántica de la lógica proposicional • Ejemplo: F I sig (F , I ) = = = = = = = = = = (p ∨ q) ∧ (¬q ∨ r ) = {p, r } sig ((p ∨ q) ∧ (¬q ∨ r ), I ) fv∧ (sig (p ∨ q, I ), sig (¬q ∨ r , I )) fv∧ (sig (p ∨ q, I ), sig (¬q ∨ r , I )) fv∧ (fv∨ (sig (p, I ), sig (q, I )), fv∨ (sig (¬q, I ), sig (r , I ))) fv∧ (fv∨ (True, False), fv∨ (fv¬ (sig (q, I )), True)) fv∧ (True, fv∨ (fv¬ (False), True)) fv∧ (True, fv∨ (True, True)) fv∧ (True, True) True Semántica de la lógica proposicional • I = {p, r } F = • (p (True ∨ q) ∨ False) True True ∧ (¬q ∨ r) ∧ (¬False ∨ True) ∧ (True ∨ True) ∧ True True I = {r } F = (p (False ∨ q) ∨ False) False False ∧ (¬q ∨ r) ∧ (¬False ∨ True) ∧ (True ∨ True) ∧ True False Modelos y contramodelos • interpretaciones(F ) = {I ∈ Interpretaciones : I ⊆ sp(F )} • |interpretaciones(F )| = 2|sp(F )| • Modelo • I es modelo de F ⇐⇒ sig (F , I ) = True • Representación: I |= F • Ejemplo: {p, r } |= (p ∨ q) ∧ (¬q ∨ r ) • Contramodelo • I es contramodelo de F ⇐⇒ sig (F , I ) = False • Representación: I 6|= F • Ejemplo: {r } 6|= (p ∨ q) ∧ (¬q ∨ r ) • Modelos de una fórmula • modelos(F ) = {I ∈ interpretaciones(F ) : I |= F } Tablas de verdad • Comprobación de todas las interpretaciones p True True True True False False False False q True True False False True True False False r True False True False True False True False (p → q) True True False False True True True True (q → r ) True False True True True False True True (p → q) ∨ (q → r ) True True True True True True True True Validez y satisfactibilidad • Fórmulas válidas o tautologı́as • F es válida ⇐⇒ toda interpretación de F es modelo de F • Representación: |= F • Ejemplos: |= (p → p), |= (p → q) ∨ (q → p), 6|= (p → q) • Fórmulas satisfacibles • F es satisfacible ⇐⇒ tiene algún modelo • F es insatisfacible ⇐⇒ no tiene ningún modelo • Ejemplos: (p → q) ∨ (q → r ) es satisfacible (p ∧ (¬p)) no es satisfacible (p ∧ (¬p)) es insatisfacible (p → q) ∨ (q → r ) no es insatisfacible Validez y satisfactibilidad • Problema de la satisfacibilidad: Dada F determinar si es satisfacible • Problema de la validez: Dada F determinar si es válida • Relaciones entre validez y satisfacibilidad • F es válida ⇐⇒ ¬F es insatisfacible • F es válida ⇒ F es satisfacible • F es satisfacible 6⇒ ¬F es insatisfacible • El problema de la satisfacibilidad es NP–completo Conjuntos de fórmulas • Sı́mbolos proposicionales de un conjunto de fórmulas S • sp(S) = {sp(F ) : F ∈ S} • Ejemplo: sp({p ∧ q → r , p → s}) = {p, q, r , s} • Interpretaciones de un conjunto de fórmulas • interpretaciones(S) = {I ∈ Interpretaciones : I ⊆ sp(S)} • Modelos de un conjunto de fórmulas • I es modelo de S ⇐⇒ para toda F de S, I |= F • Representación I |= S • Ejemplo: {p, r } |= {(p ∨ q) ∧ ((¬q) ∨ r ), q → r } • Contramodelo de un conjunto de fórmulas • I es contramodelo de S ⇐⇒ para alguna F de S, I 6|= F • Representación I 6|= S • Ejemplo: {p, r } 6|= {(p ∨ q) ∧ ((¬q) ∨ r ), r → q} Conjuntos de fórmulas • Modelos de un conjunto de fórmulas • modelos(S) = {I ∈ interpretaciones(S) : I |= S} • Conjuntos consistentes e inconsistentes de fórmulas • S es consistente ⇐⇒ S tiene algún modelo • S es inconsistente ⇐⇒ S no tiene ningún modelo • Ejemplos: {(p ∨ q) ∧ ((¬q) ∨ r ), p → r } es consistente {(p ∨ q) ∧ ((¬q) ∨ r ), p → r , ¬r } no es consistente {(p ∨ q) ∧ ((¬q) ∨ r ), p → r , ¬r } es inconsistente {(p ∨ q) ∧ ((¬q) ∨ r ), p → r } no es inconsistente Consecuencia lógica • F es consecuencia lógica de S ⇐⇒ para toda interpretación I ∈ interpretaciones(S ∪ {F }), si I |= S entonces I |= F • Representación: S |= F • Ejemplos: {p → q, q → r } |= p → r {p} 6|= p ∧ q {p} 6|= ¬r • Las siguientes condiciones son equivalentes: • {F1 , ..., Fn } |= G • |= (F1 ∧ ... ∧ Fn ) → G • {F1 , ..., Fn , ¬G } es inconsistente Ejercicios • Sean S = {p → (q → ¬r ), p ∨ s, (¬q ∧ r ) → s} y F = s ∨ ¬r . Se pide comprobar que S |= F mediante la definición de consecuencia lógica. • Sean S = {(p ∧ ¬q) → r , (¬p ∨ r ), q → ¬r } y F = r → s. Se pide comprobar que S |= F mediante la definición de consecuencia lógica. • Sean S = {a → ¬b, ¬a → (c ∨ b), b → (d ∧ a), d → ¬c} y F = a ∨ ¬d. Se pide comprobar que S |= F mediante la definición de consecuencia lógica. • Sean S = {a → ¬b, ¬b → (c ∨ d), c → ¬d, d → (b ∧ ¬a)} y F = b ∨ ¬d. Se pide comprobar que S |= F mediante la definición de consecuencia lógica. Ejercicios • Sean S = {p → (q → ¬r ), p ∨ s, (¬q ∧ r ) → s} y F = s ∨ ¬r . Se pide comprobar que S |= F mediante la definición de consecuencia lógica. p q r s {p → (q → ¬r ) p∨s (¬q ∧ r ) → s} s ∨ ¬r Ejercicios • Sean S = {p → (q → ¬r ), p ∨ s, (¬q ∧ r ) → s} y F = s ∨ ¬r . Se pide comprobar que S |= F mediante la definición de consecuencia lógica. (False = 0, True = 1) p q r s {p → (q → ¬r ) p∨s (¬q ∧ r ) → s} s ∨ ¬r Ejercicios • Sean S = {p → (q → ¬r ), p ∨ s, (¬q ∧ r ) → s} y F = s ∨ ¬r . Se pide comprobar que S |= F mediante la definición de consecuencia lógica. (False = 0, True = 1) p 0 0 0 0 0 0 0 0 q 0 0 0 0 1 1 1 1 r 0 0 1 1 0 0 1 1 s 0 1 0 1 0 1 0 1 {p → (q → ¬r ) 1 1 1 1 1 1 1 1 p∨s 0 1 0 1 0 1 0 1 (¬q ∧ r ) → s} 1 1 0 1 1 1 1 1 s ∨ ¬r 1 1 0 1 1 1 0 1 Ejercicios • Sean S = {p → (q → ¬r ), p ∨ s, (¬q ∧ r ) → s} y F = s ∨ ¬r . Se pide comprobar que S |= F mediante la definición de consecuencia lógica. (False = 0, True = 1) p 1 1 1 1 1 1 1 1 q 0 0 0 0 1 1 1 1 r 0 0 1 1 0 0 1 1 s 0 1 0 1 0 1 0 1 {p → (q → ¬r ) 1 1 1 1 1 1 0 0 p∨s 1 1 1 1 1 1 1 1 (¬q ∧ r ) → s} 1 1 0 1 1 1 1 1 s ∨ ¬r 1 1 0 1 1 1 0 1 Referencias • Chang, C.L. y Lee, R.C.T Symbolic Logic and Mechanical Theorem Proving. (Academic Press, 1973) • Cap. 2: “The propositional logic” • Genesereth, M.R. Computational Logic • Cap. 2: “Propositional logic” • Nilsson, N.J. Inteligencia artificial (Una nueva sı́ntesis). (McGraw–Hill, 2000) • Cap. 13: “El cálculo proposicional” • Russell, S. y Norvig, P. Inteligencia artificial (un enfoque moderno). (Prentice Hall Hispanoamericana, 1996) • Cap. 6.4: “Lógica propositiva: un tipo de lógica muy sencillo”