Lógica y Programación - Cláusulas y formas clausales

Anuncio
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”
Descargar