El método de resolución encuentra de manera eficiente una demostración de una fórmula a partir de las premisas mediante la regla de resolución.
La regla de resolución sólo se puede aplicar en expresiones en forma clausular. Las premisas y la conclusión deben convertirse a esta forma.
Una fórmula está en forma normal conjuntiva (FNC) syss es una conjunción de disyunción de literales.
(¬p∨q∨r)∧(¬q∨r)∧(¬r)(\neg p \lor q\lor r) \land (\neg q \lor r) \land (\neg r) (¬p∨q∨r)∧(¬q∨r)∧(¬r)
(¬p∨q∨r)∧((p∧¬q)∨r)∧(¬r)(\neg p \lor q\lor r) \land ((p \land \neg q )\lor r) \land (\neg r) (¬p∨q∨r)∧((p∧¬q)∨r)∧(¬r)
(¬p∨q∨r)∧¬(¬q∨r)∧(¬r)(\neg p \lor q\lor r) \land \neg(\neg q \lor r) \land (\neg r) (¬p∨q∨r)∧¬(¬q∨r)∧(¬r)
ℓc={psi ℓ=¬p¬psi ℓ=p \ell^c = \begin{cases} p & \text{si $\ell=\neg p$} \\ \neg p & \text{si $\ell=p$} \end{cases} ℓc={p¬psi ℓ=¬psi ℓ=p
La fórmula en FNC
corresponde en forma clausular a {{¬p,q,r},{¬q,r},{¬r}}\{ \{\neg p, q, r\}, \{\neg q, r\}, \{\neg r\} \}{{¬p,q,r},{¬q,r},{¬r}}.
Toda fórmula de la lógica proposicional puede ser transformada en una fórmula equivalente en forma clausular.
Para convertir una fórmula a su forma clausular se llevan a cabo los siguientes pasos, cada uno de los cuales preserva la equivalencia lógica.
φ→ψ≡¬φ∨ψφ↔ψ≡(¬φ∨ψ)∧(φ∨¬ψ)\begin{array}{lcl} \varphi \rightarrow \psi &\equiv& \neg\varphi \vee\psi\\ \varphi\leftrightarrow\psi &\equiv& (\neg\varphi\vee\psi) \wedge (\varphi\vee\neg\psi) \end{array} φ→ψφ↔ψ≡≡¬φ∨ψ(¬φ∨ψ)∧(φ∨¬ψ)
¬¬φ≡φ¬(φ∧ψ)≡¬φ∨¬ψ¬(φ∨ψ)≡¬φ∧¬ψ\begin{array}{lcl} \neg\neg\varphi &\equiv & \varphi\\ \neg(\varphi\wedge\psi) &\equiv& \neg\varphi\vee\neg\psi\\ \neg(\varphi\vee\psi) &\equiv& \neg\varphi\wedge\neg\psi \end{array} ¬¬φ¬(φ∧ψ)¬(φ∨ψ)≡≡≡φ¬φ∨¬ψ¬φ∧¬ψ
φ∨(ψ∧χ)≡(φ∨ψ)∧(φ∨χ)(φ∧ψ)∨χ≡(φ∨χ)∧(ψ∨χ)\begin{array}{lcl} \varphi\vee(\psi\wedge\chi) &\equiv & (\varphi\vee\psi)\wedge(\varphi\vee\chi)\\ (\varphi\wedge\psi)\vee\chi &\equiv & (\varphi\vee\chi)\wedge(\psi\vee\chi) \end{array} φ∨(ψ∧χ)(φ∧ψ)∨χ≡≡(φ∨ψ)∧(φ∨χ)(φ∨χ)∧(ψ∨χ)
φ1∨…∨φn⇝{φ1,…,φn}ψ1∧…∧ψm⇝{ψ1,…,ψm}\begin{array}{lcl} \varphi_1\vee\ldots\vee\varphi_n &\rightsquigarrow & \{\varphi_1,\ldots,\varphi_n\}\\ \psi_1\wedge\ldots\wedge\psi_m &\rightsquigarrow & \{\psi_1,\ldots,\psi_m\}\\ \end{array} φ1∨…∨φnψ1∧…∧ψm⇝⇝{φ1,…,φn}{ψ1,…,ψm}
Este paso genera conjuntos, así que se eliminan duplicados. La equivalencia se preserva por idempotencia: φ∧φ≡φ\varphi\wedge\varphi\equiv\varphiφ∧φ≡φ y φ∨φ≡φ\varphi\vee\varphi\equiv\varphiφ∨φ≡φ
Una cláusula es trivial si contiene un par de literales complementarias, se llama así porque trivialmente se satisface.
Sea SSS un conjunto de cláusulas y sea C∈SC\in SC∈S una cláusula trivial. Entonces S−{C}S-\{C\}S−{C} es lógicamente equivalente a SSS.
C1C2(C1−{ℓ})∪(C2−{ℓc}) (Res)\dfrac{C_1\qquad C_2}{(C_1-\{\ell\}) \cup (C_2-\{\ell^c\})}\;\; (\mathsf{Res}) (C1−{ℓ})∪(C2−{ℓc})C1C2(Res)
Las cláusulas padre son C1C_1C1 y C2C_2C2, el resolvente es CCC
C=(C1−{ℓ})∪(C2−{ℓc})C=(C_1-\{\ell\}) \cup (C_2-\{\ell^c\}) C=(C1−{ℓ})∪(C2−{ℓc})
C1C2(C1−{ℓ})∪(C2−{ℓc})\dfrac{C_1\qquad C_2}{(C_1-\{\ell\}) \cup (C_2-\{\ell^c\})} (C1−{ℓ})∪(C2−{ℓc})C1C2
{p,q,¬r}{r,s,¬t}{p,q,s,¬t}\dfrac{\{p,q,\neg r\}\qquad \{r, s, \neg t\}}{\{p,q, s, \neg t\}} {p,q,s,¬t}{p,q,¬r}{r,s,¬t}
{¬p,q}{¬q}{¬p}\dfrac{\{\neg p,q\}\qquad \{\neg q\}}{\{\neg p\}} {¬p}{¬p,q}{¬q}
{p,q,¬r}{¬p,r,s}{p,q,¬p,s}\dfrac{\{p,q,\neg r\}\qquad \{\neg p, r, s\}}{\{p,q, \neg p, s\}} {p,q,¬p,s}{p,q,¬r}{¬p,r,s}
La regla opera sobre un par de literales complementarias a la vez y nunca con más.
Si C1C_1C1 y C2C_2C2 colisionan en más de una literal, su resolvente es una cláusula trivial.
{s}{¬s}□\dfrac{\{s\}\qquad \{\neg s\}}{\square} □{s}{¬s}
El resolvente CCC es satisfacible syss las cláusulas padre C1C_1C1 y C2C_2C2 son ambas satisfacibles.
Input: Un conjunto de cláusulas SSS. Output: SSS es satisfacible o insatisfacible.
Definimos S0=SS_0=SS0=S.
Repetir los siguientes pasos para obtener Si+1S_{i+1}Si+1 a partir de SiS_iSi:
Hasta que C=□C=\squareC=□, en cuyo caso SSS es insatisfacible; o hasta que la regla de resolución se haya aplicado a todos los pares de cláusulas de colisión, lo que indica que SSS es satisfacible.
Si un conjunto de cláusulas S={φ1,φ2,…,φn}S=\{\varphi_1,\varphi_2,\ldots,\varphi_n\}S={φ1,φ2,…,φn} (n≥0)n\geq 0)n≥0) es satisfacible, entonces cualquier conjunto SiS_iSi (i≥0i\geq 0i≥0), generado por el algoritmo de resolución binaria, es satisfacible.