Princípio da resolução

Fonte: testwiki
Revisão em 09h59min de 21 de fevereiro de 2025 por imported>Adolfo Agostinho Damião (growthexperiments-addlink-summary-summary:3|0|0)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

O princípio da resolução é uma regra de inferência que dá origem a uma técnica de demonstração por refutação para sentenças e inferências da lógica proposicional e da lógica de primeira ordem.

A resolução na lógica proposicional

Regra de resolução

O sistema dedutivo de resolução na lógica proposicional não possui axiomas, mas apenas uma regra de inferência que produz, a partir de duas cláusulas, uma nova cláusula implicada por elas. A regra de resolução toma duas cláusulas contendo literais complementares e produz uma nova cláusula com todos os literais de ambos, excluídos estes complementares. Formalmente, onde ai e bj são literais complementares:

a1ai1aiai+1an,b1bj1bjbj+1bma1ai1ai+1anb1bj1bj+1bm A cláusula produzida pela regra de resolução é chamada de resolvente das duas cláusulas iniciais.

Quando as duas cláusulas contêm mais de um par de literais complementares, a regra de resolução pode ser aplicada (independentemente) para cada par. Entretanto, apenas o par de literais resolvidos pode ser removido: todos os outros pares de literais permanecem na cláusula resolvente.

Uma técnica de resolução

Quando usada em conjunto com um algoritmo de busca, a regra de resolução ganha poder e utiliza o algoritmo de busca para decidir a satisfatibilidade de uma fórmula proposicional e a validade da sentença sob um conjunto de axiomas.

Esta técnica de resolução usa prova por contradição e é baseada no fato de que qualquer sentença da lógica proposicional pode ser convertida para uma sentença equivalente na forma normal conjuntiva. Os passos são os seguintes:

  • Todas as premissas e a negação da sentença a ser provada (conjectura) tem que estar conectadas por conjunções.
  • A sentença resultante é convertida para a forma normal conjuntiva (tratada como um conjunto de cláusulas, S).
  • A regra de resolução é aplicada a todos os possíveis pares de cláusulas que contém literais complementares. Após cada aplicação da regra de resolução, a cláusula resultante é simplificada removendo-se os literais repetidos. Se a cláusula contém literais complementares, ela é descartada (como uma tautologia). Caso contrário, e se ela ainda não está presente no conjunto de cláusulas S, então ela é adicionada a S, e é considerada para posteriores inferências da resolução.
  • Se depois de aplicar a regra de resolução uma cláusula vazia é derivada, a formula inteira não é satisfeita (ou contraditória), então é possível concluir que a conjectura inicial provém das premissas originais.
  • Se, por outro lado, a cláusula vazia não pode ser derivada, e a regra de resolução não pode ser aplicada para derivar mais cláusulas, a conjectura não é um teorema da base de conhecimentos original.

Outra instância deste algoritmo é o algoritmo de Davis-Putnam original, que foi mais tarde refinado para o algoritmo DPLL, que removeu a necessidade de uma representação explícita dos resolventes.

Como exemplo do algoritmo acima, considere a seguinte fórmula:

¬p(qrq)(¬r¬s)(ps)(¬q¬s)

Que pode ser vista como um conjunto de cláusulas:

{{¬p},{q,r},{¬r,¬s},{p,s},{¬q,¬s}}

Seja C um conjunto de cláusulas e representamos por a cláusula vazia, {}. Aplica-se então a regra de inferência:

  • {C,p}{C,¬p}{C,C}

Aplicando a regra no conjunto de cláusulas do exemplo acima:

Foi possível então a dedução da cláusula vazia a partir do conjunto inicial de cláusulas.

A resolução na lógica de primeira ordem

A resolução na Lógica de primeira ordem condensa os silogismos tradicionais de inferência lógica em uma única regra. Para entender como a resolução funciona, considere o seguinte exemplo de silogismo da lógica aristotélica:

Todos os gregos são europeus.
Homero é grego.
Então, Homero é europeu.

Ou de maneira mais geral:

X.(P(X) implica Q(X)).
P(a).
Então, Q(a).

Para traçar o raciocínio usado na técnica de resolução, primeiro as cláusulas devem ser convertidas para a forma normal conjuntiva. Nessa forma, todas as quantificações se tornam implícitas: quantificadores universais em variáveis (X, Y...) são simplesmente omitidos quando subentendidos, enquanto variáveis em quantificadores existenciais são substituídas por funções de Skolem.

¬P(X)  Q(X)
P(a) 
Então, Q(a)

Então a questão é, como a técnica de resolução deriva a última cláusula a partir das duas primeiras? A regra é simples:

  • Encontre duas cláusulas contendo o mesmo predicado, onde uma cláusula é negada e a outra não.
  • Faça a unificação em ambos os predicados. (Se a unificação falhar, então você fez uma má escolha de predicados. Volte para o passo anterior e tente novamente.)
  • Se, após a unificação, alguma variável não-ligada que foi ligada nos predicados unificados também ocorre em outros predicados nas duas cláusulas, então substitua pelos seus respectivos termos ligados.
  • Descarte os predicados unificados, e combine o restante das duas cláusulas em uma nova cláusula.

Para aplicar essa regra no exemplo acima, nós encontramos o predicado ‘P’ na forma negada na primeira cláusula:

¬P(X)

E em forma não negada na segunda cláusula:

P(a)

X é uma variável livre, enquanto a é um átomo. Unificando os dois obtemos a substituição:

σ = [(a,X)]

Descartando os predicados unificados, e aplicando a substituição dos predicados restantes (apenas Q(X), nesse caso), obtemos a conclusão:

Q(a)

Para um outro exemplo, considere a forma silogística:

Todos os políticos são corruptos.
Todos os corruptos são mentirosos.
Então todos os políticos são mentirosos.

Ou de maneira mais geral:

X P(X) implica Q(X)
X Q(X) implica R(X)
Então, X P(X) implica R(X)

Na FNC (Forma Normal Conjuntiva):

¬P(X)  Q(X)
¬Q(Y)  R(Y)

(Note que a variável na segunda cláusula foi renomeada para deixar claro que variáveis em cláusulas diferentes são distintas)

Agora, unificando Q(X) na primeira cláusula com Q(Y) na segunda cláusula temos que X e Y se tornam a mesma variável. Efetuando esta substituição nas cláusulas restantes e combinando-as, temos a conclusão:

¬P(X)  R(X)

Mais exemplos

Lógica Proposicional

Exemplo 1

Socrátes e Platão

  • Sócrates está em tal situação que ele estaria disposto a visitar Platão (S), só se Platão estivesse disposto a visitá-lo (P);

(PS)

  • Platão está em tal situação que ele não estaria disposto a visitar Sócrates, se Sócrates estivesse disposto a visitá-lo;

(S¬P)

  • Platão está em tal situação que ele estaria disposto a visitar Sócrates, se Sócrates não estivesse disposto a visitá-lo.

(¬SP)

  • Pergunta-se:

Sócrates está disposto a visitar Platão ou não?

(PS),(S¬P),(¬SP)S

Transformação de (PS)(S¬P)(¬SP) para a forma conjuntiva:

PS¬PS
S¬P¬S¬P
¬SPSP

Temos então o seguinte conjunto de cláusulas:

{{¬P,S},{¬S,¬P},{S,P},{¬S}}

Resolução:

{¬S}{S,P}{P}
{¬S}{¬P,S}{¬P}
{P}{¬P}

Portanto concluímos que Sócrates está disposto a visitar Platão.

Exemplo 2

Ana

  • Se Anelise não for cantora (P) ou Anamélia for pianista(Q), então Anaís será professora (R).

((¬PQ)R)

  • Se Ana for atleta (S), então Anamélia será pianista (Q).

(SQ)

  • Se Anelise for cantora (P), então Ana será atleta (S).

(PS)

  • Anamélia não será pianista (Q).

(¬Q)

É possível concluir que Anaís é professora (R)?

(¬PQ)R,SQ,PS,¬QR

Transformação do conjunto de premissas para a forma conjuntiva:

¬PQR
¬(¬PQ)R
(¬¬P¬Q)R
(P¬Q)R
(PR)(¬QR)
SQ¬SQ
PS¬PS

Temos então o seguinte conjunto de cláusulas:

{{P,R},{¬Q,R},{¬S,Q},{¬P,S},{¬Q},{¬R}}

Resolução:

{¬R}{P,R}{P}
{P}{¬P,S}{S}
{S}{¬S,Q}{Q}
{Q}{¬Q}

Concluimos, portanto, que Anaís é Professora.

Lógica de Primeira Ordem

Exemplo 1

Toda pessoa é sábia ou tucana. Zé não é tucano. Zé é sábio?

U = pessoas
I[q(x)] = T sse x é sábio
I[p(x)] = T sse x é tucana
I[a] = Zé

O que quero provar?? Toda pessoa é sábia ou tucana. Zé não é tucano. Zé é sábio?

(x(p(x)q(x))¬p(a))q(a)

Por refutação:

¬(((x(p(x)q(x))¬p(a))q(a))¬(¬((x(p(x)q(x))¬p(a))q(a))(x(p(x)q(x))¬p(a))¬q(a)
x(p(x)q(x))¬p(a)¬q(a)

Eliminamos o quantificador universal:

(p(x)q(x))¬p(a)¬q(a)

Como é possível notar, a sentença já se encontra na forma normal clausal.

conjuntiva após passar pelo processo de conversão, skolemização e reorganização típicos da lógica de primeira ordem.

Temos então o conjunto de cláusulas:

{{p(x),q(x)},{¬p(a)},{¬q(a)}}

Agora aplicamos a resolução:

{p(x),q(x)}{¬p(a)}{q(a)} 
com σ1=[(x,a)]
{¬q(a)}{q(a)}
com σ2=[(x,a)]

Chegamos então a uma cláusula vazia. Portanto, concluímos que se Zé não é Tucano então Zé é sábio.

Exemplo 2

Agora um exemplo mais direto e detalhado:

Seja a fórmula:

P(x).P(x)

Vamos mostrar que existe uma refutação da negação desta fórmula:

Passo 1: Negar a fórmula

¬(P(x).P(x))

Passo 2: Forma normal prenex

y.¬(P(x)P(y))

Passo 3: Fechar existencialmente da Fórmula

x.y.¬(P(x)P(y))

Passo 4: Skolemizar

y.(P(a)P(y))

Passo 5: Eliminação de quantificadores universais

P(a)P(y)

Passo 6: Forma normal conjuntiva

¬(P(a)P(y))
¬(¬P(a)P(y))
¬¬P(a)¬P(y)
P(a)¬P(y)

Passo 7: Notação Clausal

{{P(a)},{¬P(y)}}

Passo 8: Resolução

{P(a)}{¬P(a)} com σ0 = [(a, y)]

Referências

  • J. Alan Robinson (1965), A machine-oriented logic based on the resolution principle. Journal of the ACM, Volume 12, Issue 1, pp. 23–41.

Ver também

Ligações externas