Lógica y Programación Cláusulas y formas clausales Antonia M. Chávez, Agustı́n Riscos, Carmen Graciani Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Cláusulas y formas clausales • Cláusulas • Una cláusula es un conjunto de literales • Una cláusula se interpreta como la disyunción de todos sus literales • Ejemplos: {p, ¬q, r , ¬s} ≡ p ∨ ¬q ∨ r ∨ ¬s {p, q, r } ≡ p∨q∨r • Formas clausales • Una forma clausal es un conjunto de cláusulas • Una forma clausal se interpreta como la conjunción de todas sus cláusulas • Ejemplo: {{p, q}, {r , ¬s}} ≡ (p ∨ q) ∧ (r ∨ ¬s) Transformación a cláusulas (I) • Cláusula de una disyunción extendida F : si F es un literal; {F }, clausula(F ) = clausula(F1 ) ∪ clausula(F2 ), si F = (F1 ∨ F2 ) • Ejemplos: clausula(p) = {p} clausula(¬p) = {¬p} clausula(((¬p) ∨ r ) ∨ ((¬p) ∨ q)) = {q, r , ¬p} Transformación a cláusulas • Cláusulas de una fórmula F en forma normal conjuntiva: clausulasFNC (F ) = clausulasFNC (F1 ) ∪ clausulasFNC (F2 ), si F = (F1 ∧ F2 ); {clausula(F )}, en caso contrario • Ejemplos: clausulasFNC (p ∧ ((¬q) ∨ r )) = {{p}, {¬q, r }} clausulasFNC (((¬p) ∨ q) ∧ ((¬p) ∨ (¬r ))) = {{¬p, q}, {¬p, ¬r }} Transformación a cláusulas • Forma clausal de una fórmula F : clausulas(F ) = clausulasFNC (fnc(F )) • Ejemplos: clausulas(p ∧ (q → r )) = {{p}, {¬q, r }} clausulas(¬(p ∧ (q → r ))) = {{¬p, q}, {¬p, ¬r }} Transformación a cláusulas • Cláusulas de un conjunto de fórmulas S: clausulas(S) = • Ejemplos: S {clausulas(F ) : F ∈ S} clausulas({p → q, q → r }) = {{¬p, q}, {¬q, r }} clausulas({p → q, q ↔ p}) = {{¬p, q}, {¬q, p}} Sı́mbolos de una fórmula • Recordemos: Sı́mbolos proposicionales de una fórmula: sp(p) sp(¬ F ) sp(F ∧ G ) sp(F ∨ G ) sp(F → G ) sp(F ↔ G ) • En particular: p spl (L) = p = {p} = sp(F ) = sp(F ) ∪ sp(G ) = sp(F ) ∪ sp(G ) = sp(F ) ∪ sp(G ) = sp(F ) ∪ sp(G ) Sı́mbolo proposicional de un literal: si L = p si L = ¬p Sı́mbolos proposicionales de cláusulas • Sı́mbolos proposicionales de una cláusula: • Definición: sp(C ) = {spl(L) : L ∈ C } • Ejemplo: sp({p, q, ¬p}) = {p, q} • Sı́mbolos proposicionales de una forma clausal: S • Definición: sp(S) = {sp(C ) : C ∈ S} • Ejemplo sp({{p, q}, {¬q, r }}) = {p, q, r } Interpretaciones • Interpretaciones de una cláusula: • interpretaciones(C ) = {I : I ⊆ sp(C )} • Ejemplos: interpretaciones({p, q, ¬p}) = {{p, q}, {p}, {q}, {}} interpretaciones({}) = {{}} • Interpretaciones de un conjunto de cláusulas: • interpretaciones(S) = {I : I ⊆ sp(S)} • Ejemplos: interpretaciones({{p, ¬q}, {¬p, q}} = {{p, q}, {p}, {q}, {}} interpretaciones({}) = {{}} Modelos de cláusulas • Modelo de un literal: I |= p ⇐⇒ p ∈ I I |= ¬p ⇐⇒ p 6∈ I • Ejemplos {p, r } |= p {p, r } 6|= q {p, r } 6|= (¬p) {p, r } |= (¬q) Modelos de cláusulas • Modelo de una cláusula: I |= C ⇐⇒ ∃L ∈ C , I |= L • Ejemplos: {p, r } |= {p, q} {q, r } 6|= {p, ¬q} {q, r } 6|= {} • Sea F una disyunción extendida, entonces I |= F ⇐⇒ I |= clausula(F ) Modelos de cláusulas • Modelos de una cláusula: modelos(C ) = {I ∈ interpretaciones(C ) : I |= C } • Ejemplos: modelos({¬p, q}) = {{p, q}, {q}, {}} modelos({¬p, p}) = {{p}, {}} modelos({}) = {} • Sea F una disyunción extendida, entonces modelos(F ) = modelos(clausula(F )) Modelos de cláusulas • Modelo de un conjunto de cláusulas: I |= S ⇐⇒ ∀C ∈ S, I |= C • Ejemplos: {p, r } |= {{p, ¬q}, {r }} {p} 6|= {{p, ¬q}, {r }} {p} |= {} • I |= S ⇐⇒ I |= clausulas(S) Modelos de cláusulas • Modelos de un conjunto de cláusulas: modelos(S) = {I ∈ interpretaciones(S) : I |= S} • Ejemplos: modelos({{¬p, q}, {¬q, p}}) = {{p, q}, {}} modelos({{¬p, q}, {p}, {¬q}}) = {} modelos({{p, ¬p, q}}) = {{p, q}, {p}, {q}, {}} • modelos(S) = modelos(clausulas(S)) Cláusulas válidas y satisfacibles • Cláusulas válidas: Dos definiciones equivalentes • |= C ⇐⇒ ∀I ∈ interpretaciones(C ), I |= C • |= C si y sólo si ∃L, L ∈ C • Ejemplos: |= {p, q, ¬p} |6 = {p, q, ¬r } 6|= {} • La cláusula vacı́a ∅ no es válida • |= F ⇐⇒|= clausulas(F ) Cláusulas válidas y satisfacibles • Cláusulas satisfacibles: • C es satisfacible ⇐⇒ ∃I ∈ interpretaciones(C ), I |= C • C es satisfacible si y sólo si C 6= ∅ • Ejemplos: {p, q, ¬p} es satisfacible. {p, q, ¬r } es satisfacible. {} no es satisfacible. Cláusulas válidas y satisfacibles • Cláusulas insatisfacibles: Dos definiciones equivalentes • C es insatisfacible ⇐⇒6 ∃I ∈ interpretaciones(C ), I |= C • C es insatisfacible si y sólo si C = ∅ • Ejemplos: {p, q, ¬p} no es insatisfacible. {p, q, ¬r } no es insatisfacible. {} es insatisfacible. Formas clausales válidas y consistentes • Forma clausal válida: |= S ⇐⇒ ∀I ∈ interpretaciones(S), I |= S • |= S ⇐⇒ ∀C ∈ S, |= C • Ejemplos: 6|= {{¬p, q}, {¬q, p}} |= {{¬p, p}, {¬q, q}} |= {} Conjuntos de cláusulas válidos y consistentes • Conjunto consistente de cláusulas: S es consistente ⇐⇒ ∃I ∈ interpretaciones(S), I |= S • Ejemplos: {{¬p, q}, {¬q, p}} es consistente. {{¬p, q}, {p}, {¬q}} no es consistente. • Sea S un conjunto de fórmulas, entonces S es consistente si y sólo si clausulas(S) es consistente. Conjuntos de cláusulas válidos y consistentes • Conjunto inconsistente de cláusulas: S es inconsistente ⇐⇒6 ∃I ∈ interpretaciones(S), I |= S • Ejemplos: {{¬p, q}, {¬q, p}} no es inconsistente. {{¬p, q}, {p}, {¬q}} es inconsistente. • Sea S un conjunto de fórmulas, entonces S es inconsistente si y sólo si clausulas(S) es inconsistente Validez de fórmulas mediante cláusulas • |= F ⇐⇒|= clausulas(F ) • Ejemplos: |= p → p |6 = p → q |= (p → q) ∨ (q → p) Consecuencia lógica mediante cláusulas • Sean S1 y S2 dos conjuntos de cláusulas, entonces S1 |= S2 ⇐⇒ los modelos de S1 son modelos de S2 • Ejemplos: {{¬p, q}, {¬q, r }} |= {{¬p, r }} {{p}} 6|= {{p}, {¬q}} Consecuencia lógica mediante cláusulas • Sea S un conjunto de fórmulas, entonces: S |= F ⇐⇒ clausulas(S) |= clausulas(F ) ⇐⇒ clausulas(S ∪ {¬F }) es inconsistente • Ejemplos: {(p → q), (q → r )} |= p → r {p} 6|= p ∧ q Ejercicios • Sea F = (p ↔ q) → {(q ∨ r ) ∨ (¬p ∧ ¬s)}. Se pide determinar un conjunto de cláusulas equivalente a F . Sol.: {{p, q, r , ¬s}} • Sea F = (p ↔ q) → {(q ∨ r ) ∧ (¬p ∧ ¬s)}. Se pide determinar un conjunto de cláusulas equivalente a F . Sol.: {{p, q, r }, {p, q, ¬s}, {p, q, ¬p}, {p, q, r , ¬p}, {¬p, ¬q}, {¬p, ¬q, ¬s}} • Sea F = {(p ∨ r ) ∧ (q → r )} ↔ (¬p ∨ q). Se pide determinar un conjunto de cláusulas equivalente a F . Sol.: {{q, ¬p}, {q, ¬p, ¬r }, {p, r }, {r , ¬q}, {p, ¬q, r }} Ejercicios • Sea F = (p ↔ q) → {(q ∨ r ) ∨ (¬p ∧ ¬s)}. Se pide determinar un conjunto de cláusulas equivalente a F . Sol.: {{p, q, r , ¬s}} • Conjunto de cláusulas obtenido: {{p, q, r , ¬s}} Bibliografı́a • Alonso Jiménez, J.A. Lógica computacional (Univ. de Sevilla, 1997) • Cap. 6: “Cláusulas proposicionales” • Chang, C.L. y Lee, R.C.T. Symbolic Logic and Mechanical Theorem Proving. (Academic Press, 1973) • Cap. 2: “The propositional logic” • Fitting, M. First–Order Logic and Automated Theorem Proving (2nd, ed.) (Springer, 1996) • Cap. 2: “Propositional Logic” • Genesereth, M.R. y Nilsson, N.J. Logical Foundations of Artificial Intelligence. (Morgan Kaufmann, 1987) • Cap. 2: “Propositional Logic” • Paulson, L. Logic and Proof (University of Cambridge, 2003) http://www.cl.cam.ac.uk/Teaching/2003/LogicProof • Cap. 2: “Propositional logic”