DIM0436
23. DPLL e teorias
Sumário
1 Provadores SAT
1 Provadores SAT
Exemplo de árvore binária de decisão
Φ = (¬A ∨ B) ∧ (¬B ∨ C )Árvore de decisão
A B C v1 1 v2 0 1 C v3 1 v4 0 0 1 B C v4 1 v6 0 1 C v7 1 v8 0 0 0FNC
∆ = CNF (Φ) = {{¬A, B}, {¬B, C }} ∆ | A, ¬B = {{⊥, ⊥}, {>, C }}} = A B C v1 1 v2 0 1 C v3 1 v4 0 0 1 B C v4 1 v6 0 1 C v7 1 v8 0 0 0 FMelhorada possível
∆ = CNF (Φ) = {{¬A, B}, {¬B, C }} ∆ | ¬A, ¬B = {{>, ⊥}, {>, C }}} =
Todas as cláusulas são subsumidas uma vez que {A 7→ 0, B 7→ 0} A B C v1 1 v2 0 1 C v3 1 v4 0 0 1 B C v4 1 v6 0 1 C v7 1 v8 0 0 0 F S
DPLL(∆, d)
if ∆ = {} then return {} else if {} ∈ ∆ then
returnUNSAT
else if L= DPLL(∆|Pd +1, d +1) 6= UNSAT then
return L ∪ Pd +1
else if L= DPLL(∆|¬Pd +1, d +1) 6= UNSAT then
return L ∪ ¬Pd +1
else
returnUNSAT
Resolução unitária
Problema
Seja ∆ = {{¬A, B}, {¬B, ¬C}, {C, ¬D}} ∆|A = {{B}, {¬B, ¬C }, {C , ¬D}} Nesse ponto ∆ 6= {} ∧ {} 6∈ ∆ Mas poderíamos já declarar sucesso
Propagação unitária
Antes do teste de sucesso/falha, propagar cláusulas unitárias A fase de resolução unitária produz dois resultados
I I : literais presentes como cláusulas unitárias ou derivados por resolução
Exemplos
1 ∆ = {{¬A, ¬B}, {B, C }, {¬C , D}, {A}} I I = {A, ¬B, C , D} I Γ = {} 2 ∆ = {{¬A, ¬B}, {B, C }, {¬C , D}, {C }} I I = {C , D} I Γ = {{¬A, ¬B}}Algoritmo DPLL
Unit(∆)
(I , Γ) ← UNIT − RESOLUTION(∆) if Γ = {} then return I
else
if {} ∈ Γ then returnUNSATISFIABLE
else
choose a literal L in Γ
if L= DPLL(Γ|L) 6= UNSATISFIABLE then return L ∪ I ∪ {L}
else if L= DPLL(Γ|¬L) 6= UNSATISFIABLE then return L ∪ I ∪ {¬L}
elsereturnUNSATISFIABLE
end if end if end if
Backtracking cronológico
Se os dois valores duma variável ao nível n geram uma contradição, o algoritmo DPLLUnit volta ao nível n − 1
Se o backtracking voltar até o nível 0 a FNC é incoerente.
Diferenças
Mudar do nível corrente a um nível inferior é backtracking
Se o backtracking ao nível n for feito só após tentar os 2 valores ao nível n +1, é backtracking cronológico
Exemplo
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } A B C X 0|1 1 X 0|1 0 1 X 0|1 0 1 {}Backtracking não cronológico
Conjunto de conflito
Backtracking não cronológico pode ser usado após identificação de toda valoração que contribui à derivação da cláusula vazia.
Esse conjunto é o conjunto de conflito
Em vez de um backtracking até a última variável mudada, o algoritmo volta à variável de decisão mais recente do conjunto de conflito.
Exemplo
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 {A 7→1, B 7→ 1, C 7→ 1, X 7→ 1} 2 Por resolução unitária, Y 7→ 1, Z 7→ 1} 3 Cláusula ?? vira vazia4 O conjunto de conflito é
{A 7→1, X 7→ 1, Y 7→ 1, Z 7→ 1}
5 Vamos dar um outro valor a X 6 Outro conflito :
{A 7→1, X 7→ 1, Z 7→ 1}
7 Como não tem mas valores para X ,
Pista de melhorada
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z }Cada vez que a resolução unitária descobre uma contradição, tem a possibilidade de identificar uma cláusula implicada pela FNC
Essa cláusula permitiria a realização de novas implicações pela resolução unitária (assim {¬A, ¬X } é uma consequência da FNC acima)
Grafo de implicação
Como ler o grafo
3/Y = 1: a variável Y é valorada a verdadeira ao nível 3, usando cláusula 3, A 7→1, X 7→ 1 0/A 7→ 1 1/B 7→ 1 2/C 7→ 1 3/X 7→ 1 3/Y 7→ 1 3/Z 7→ 1 3/{} 5 3 3 5 7 7 7 0/A 7→ 1 0/X 7→ 0 0/Z 7→ 1 0/{} 4 8 6 4 6 6
Calcular uma cláusula conflito
Todo corte do grafo de implicação define um conjunto de conflito enquanto o corte separa as variáveis de decisão da contradição.
Todo nó com uma aresta saindo cruzando o corte faz parte do conjunto de conflito.
Após a identificação de um conjunto de conflito, a cláusula de conflito é calculada a partir da negação da valoração do conjunto de conflito
Assim se ele for {A 7→ 1, B 7→ 0, C 7→ 0}, a cláusula de conflito é {¬A, B, C} Uma cláusula de conflito gerada a partir de cortes que contem exatamente uma variável valorada nesse nível são asserting.
I Cláusulas asserting são necessárias para a completude
I O nível de asserção é o segundo maior nível da cláusula de conflito, -1 se não
Cortes
0/A 7→ 1
1/B 7→ 1
2/C 7→ 1
3/X 7→ 1
3/Y 7→ 1
3/Z 7→ 1
3/{}
5
3
3
5
7
7
7
Algoritmo DPLL+
D ← () . sequência vazia de decisões
Γ ← {} .nenhuma cláusula aprendida
whiletrue do
if Unit-resolution acha uma contradição em ∆, Γ, D then
if D = () then .contradição sem decisão
returnUNSAT
else .backtracking
α ←cláusula assertinda m ←nível de asserção de α
D ←primeiras m decisões de D . apagar decisões lm+1, . . .
Γ ← {α} ∪ Γ end if
else .sem contradição por resolução unitária
if l é um literal ∧ nem l nem ¬l são implicadas por resolução unitária (∆, Γ, D) then
D← D; l . nova decisão l em D
else
returnSAT end if
Exemplo final
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 D = (), Γ = {} 2 Suponha que D = (A 7→1, B 7→ 1, C 7→ 1, X 7→ 1)3 Cláusula de conflito {¬A, ¬X }de nível 0 4 Backtrackingao nível de asserção :
D = (A 7→1), Γ = {{¬A, ¬X }}
5 Resolução unitáriaacha um conflito, gerando
{¬A}com nível (-1).
6 Backtracking: D = (), Γ = {{¬A, ¬X }, {¬A}} 7 . . .
Exemplo final
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 D = (), Γ = {} 2 Suponha que D = (A 7→1, B 7→ 1, C 7→ 1, X 7→ 1)3 Cláusula de conflito {¬A, ¬X }de nível 0 4 Backtrackingao nível de asserção :
D = (A 7→1), Γ = {{¬A, ¬X }}
5 Resolução unitáriaacha um conflito, gerando
{¬A}com nível (-1).
6 Backtracking: D = (), Γ = {{¬A, ¬X }, {¬A}} 7 . . .
Exemplo final
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 D = (), Γ = {} 2 Suponha que D = (A 7→1, B 7→ 1, C 7→ 1, X 7→ 1)3 Cláusula de conflito {¬A, ¬X }de nível 0
4 Backtrackingao nível de asserção :
D = (A 7→1), Γ = {{¬A, ¬X }}
5 Resolução unitáriaacha um conflito, gerando
{¬A}com nível (-1).
6 Backtracking: D = (), Γ = {{¬A, ¬X }, {¬A}} 7 . . .
Exemplo final
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 D = (), Γ = {} 2 Suponha que D = (A 7→1, B 7→ 1, C 7→ 1, X 7→ 1)3 Cláusula de conflito {¬A, ¬X }de nível 0 4 Backtrackingao nível de asserção :
D = (A 7→1), Γ = {{¬A, ¬X }}
5 Resolução unitáriaacha um conflito, gerando
{¬A}com nível (-1).
6 Backtracking: D = (), Γ = {{¬A, ¬X }, {¬A}} 7 . . .
Exemplo final
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 D = (), Γ = {} 2 Suponha que D = (A 7→1, B 7→ 1, C 7→ 1, X 7→ 1)3 Cláusula de conflito {¬A, ¬X }de nível 0 4 Backtrackingao nível de asserção :
D = (A 7→1), Γ = {{¬A, ¬X }}
5 Resolução unitáriaacha um conflito, gerando
{¬A}com nível (-1).
6 Backtracking: D = (), Γ = {{¬A, ¬X }, {¬A}} 7 . . .
Exemplo final
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 D = (), Γ = {} 2 Suponha que D = (A 7→1, B 7→ 1, C 7→ 1, X 7→ 1)3 Cláusula de conflito {¬A, ¬X }de nível 0 4 Backtrackingao nível de asserção :
D = (A 7→1), Γ = {{¬A, ¬X }}
5 Resolução unitáriaacha um conflito, gerando
{¬A}com nível (-1).
6 Backtracking: D = (), Γ = {{¬A, ¬X }, {¬A}}
Exemplo final
∆ = 1 {A, B} 2 {B, C } 3 {¬A, ¬X , Y } 4 {¬A, X , Z } 5 {¬A, ¬Y , Z } 6 {¬A, X , ¬Z } 7 {¬A, ¬Y , ¬Z } 1 D = (), Γ = {} 2 Suponha que D = (A 7→1, B 7→ 1, C 7→ 1, X 7→ 1)3 Cláusula de conflito {¬A, ¬X }de nível 0 4 Backtrackingao nível de asserção :
D = (A 7→1), Γ = {{¬A, ¬X }}
5 Resolução unitáriaacha um conflito, gerando
{¬A}com nível (-1).
6 Backtracking: D = (), Γ = {{¬A, ¬X }, {¬A}} 7 . . .
1 Provadores SAT
Teoria de primeira ordem
Definição
Uma teoria de primeira ordem T é definida por
uma assinatura Σ: um conjunto de constantes, funções e símbolos de predicados
um conjunto de axiomas A, um conjunto de fórmulas de primeira ordem nas quais só constantes, funções e predicados de Σ aparecem.
Uma Σ-fórmula contem constantes, funções e predicados de Σ bem como conectivos lógicos e quantificadores.
Igualdade
1 ∀x x = x
2 ∀x, y x = y ⇒ y = x
3 ∀x, y , z x = y ∧ y = z ⇒ x = z
4 para todo inteiro positivo n e símbolo de função f de aridade n
∀¯x , ¯y ,V
ixi = yi ⇒ f (¯x ) = f (¯y )
5 para todo inteiro positivo n e símbolo de predicado p de aridade n
∀¯x , ¯y ,V
Aritmética de Peano
Assinatura
ΣPA= {0, 1, +, ∗, =}Axiomas
1 ∀x ¬(x +1 = 0) 2 ∀x, y x +1 = y + 1 ⇒ x = y 3 F (0) ∧ ∀x; (F (x) ⇒ F (x + 1)) ⇒ ∀x F (x) 4 ∀x x +0 = x 5 ∀x, y (x + (y +1) = (x + y) + 1) 6 ∀x x ∗0 = 0 7 ∀x, y x ∗ (y +1) = x ∗ (y + x)Interpretação e decidibilidade
Interpretação: α
I αI[0] . =0N αI[1] . =1N αI[+] . = +N αI[∗] . = ∗N αI[=]==. NDecidibilidade
Satisfazibilidade e validade em TPA é indecidível.
O primeiro teorema de incompletude de Gödel implica que a aritmética de Peano não captura a "aritmética verdadeira".
Aritmética de Presburger
Assinatura
ΣN= {0, 1, +, =}Axiomas
1 ∀x ¬(x +1 = 0) 2 ∀x, y x +1 = y + 1 ⇒ x = y 3 F (0) ∧ ∀x; (F (x) ⇒ F (x + 1]) ⇒ ∀x F (x) 4 ∀x x +0 = x 5 ∀x, y (x + (y +1) = (x + y) + 1)Observação sobre indução
Interpretação e decidibilidade
Interpretação : α
I αI[0] . =0N αI[1] . =1N αI[+] . = +N αI[=] . ==NDecidibilidade (Presburger)
TNé decidível.Usar a aritmética de Presburger para Z
Considere a fórmula F0= ∀w , x ∃y , z (x +2y − z − 13 > −3w − 5)
Introdução de diferenças
F1= ∀wn, wp, xn, xp∃yn, yp, zn, zp (xp− xn+2(yp− yn) − (zp− zn) −13 > −3(wp− wn) −5)Eliminação de −
F2= ∀wn, wp, xn, xp∃yn, yp, zn, zp $(xp + 2yp+ zn) + 3wp + 5 > xn+ 2yn + zp + 3wn + 13 $Eliminação de ∗
F3= ∀wn, wp, xn, xp∃yn, yp, zn, zp∃u ¬(u =0) ∧ (xp+ yp+ yp+ zn+ wp+ wp+ wp+ u =Eliminação dos quantificadores
Admissibilidade
Uma teoria T admite eliminação dos quantificadores se existir um algoritmo que, dado uma Σ-fórmula F , calcula uma fórmula G sem quantificadores
T-equivalente a F .
Exemplo
Seja F = ∃x · 2x = y.
Se F for uma ΣQ-fórmula, G = >
Se F for uma ΣZ-fórmula, G =??
Predicado de divisibilidade
Método de Cooper
Objetivo
A entrada uma cΣZ-fórmula ∃x F (x), com F uma fórmula sem quantificador, mas com outras variáveis livres que x.
O algoritmo vai construir uma cΣZ-fórmula sem quantificador c TZ-equivalente a ∃x F (x).
Etapa 1
Calcular a NNF de F (x), chamada de F1(x ). ∃x F (x) ≡ c TZ ∃x F1(x )Método de Cooper (etapa 2)
Reescrita de literais
1 s = t → s < t +1 ∧ t < s + 1 2 ¬(s = t) → s < t ∨ t < s 3 ¬(s < t) → t < s +1Análise da saida
A saída ∃x F2(x ) ≡cTZ ∃x F1(x )e contem só literais da forma
s < t, k|t ou ¬(k|t)
Exemplo
Método de Cooper (etapa 3)
Descrição
Reunir os termos contendo x, para que os literais tiverem a forma hx < t, t < hx, k|hx + t ou ¬(k|hx + t) com x ¬∈ t
Saída
∃x F3(x ) ≡Tc
Z ∃x F2(x )
Exemplo
Método de Cooper (etapa 4)
Descrição
Seja δ = mmc{h|hcoeficientedexemF3(x )}. 1 hx < t → δx < h0t h0h = δ 2 t < hx → h0t < δx h0h = δ 3 k|hx + t → h0k|δx + h0t h0h = δ 4 ¬(k|hx + t) → ¬(h0k|δx + h0t) h0h = δAnálise da saída
h0k| · ¬k|· A fórmula obtida é F0 3 1 Seja F ”3= F30{δx 7→ x0} 2 ∃x0F4(x0) = ∃x0F ”3(x0) ∧ δ|x0Método de Cooper (etapa 5)
Descrição
Construir a projeção esquerda infinita F−∞(x0)de F4(x0)
Reescrita de
1 x0< a → > 2 b < x0→ ⊥
Seja
I γ = mmc{h dos literais h|x0+ c, k dos literais k|x0+ d }
I B = {b dos literais (B)}
Construir F5=Wγj =1F−∞(j ) ∨Wγj =1
W
Exercícios
Assunto
Transforme com o método de Cooper as fórmulas abaixo:
1 ∃x 3x − 2y + 1 > −y ∧ 2x − 6 < z ∧ 4|5x + 1
2 ∃x 2x = y
Resumo
1 Provadores SAT
Referências
Armin Biere, Marijn Heule, Hans van Maaren, and Toby Walsh (eds.), Handbook of Satisfiability, IOS Press, 2009.
Aaron R. Bradley and Zohar Manna, The Calculus of Computation: Decision Procedures with Applications to Verification, Springer-Verlag New York, Inc., Secaucus, NJ, USA, 2007.
Daniel Kroening and Ofer Strichman, Decision Procedures: An Algorithmic Point of View, 1 ed., Springer Publishing Company, Incorporated, 2008.