Saltar para o conteúdo
Topos Uranos

Resumo

Uma mesma função de verdade admite infinitas fórmulas que a representam, e nenhuma delas, tomada ao acaso, deixa ver o que diz. Esta aula fixa dois moldes em que toda fórmula cabe a menos de equivalência: a forma normal disjuntiva, uma disjunção de conjunções de literais, e a forma normal conjuntiva, uma conjunção de disjunções de literais. Definem-se os literais, as cláusulas e as conjunções elementares; demonstra-se que a negação transforma uma forma na outra quando cada literal é transformado no seu oposto, o que é a dualidade entre ambas; constroem-se a partir da tabela-verdade as formas canônicas e demonstra-se que são únicas. O teorema de existência recebe duas demonstrações: pela tabela, como corolário da completude funcional, e por indução sobre a complexidade, com o único caso da negação conjunta e com a hipótese dupla que essa demonstração exige. No final vê-se por que valem o esforço: a validade de uma forma conjuntiva e a satisfatibilidade de uma disjuntiva decidem-se à primeira vista.

Objetivos de aprendizagem

  1. Reconhecer literais, cláusulas, conjunções elementares e fórmulas em forma normal disjuntiva ou conjuntiva, distinguindo a forma, que é uma propriedade da cadeia, da equivalência, que é uma propriedade do significado.
  2. Construir a partir da tabela-verdade as formas canônicas disjuntiva e conjuntiva de uma fórmula, e demonstrar que a forma canônica é única e que determina a classe de equivalência da fórmula.
  3. Demonstrar por indução sobre a complexidade que toda fórmula equivale a uma forma normal disjuntiva e a uma conjuntiva, usando a dualidade, as leis generalizadas de De Morgan e distributivas e a substituição semântica.
  4. Decidir à primeira vista a validade de uma forma normal conjuntiva e a satisfatibilidade de uma disjuntiva, e aplicar as formas normais à consequência semântica e à medida do tamanho mínimo de uma forma normal.

Nas aulas anteriores desta unidade deu-se significado às fórmulas: a aula sobre a semântica da lógica proposicional estendeu cada valoração a todas as fórmulas; a aula sobre consequência e equivalência semânticas definiu a equivalência φ≡ψ\varphi \eqsem \psi e demonstrou a substituição semântica; a aula sobre as leis generalizadas de De Morgan e distributivas estendeu essas leis a conjunções e disjunções de nn fórmulas; e a aula sobre a completude funcional mostrou que toda função de verdade é representada por alguma fórmula. Ora, uma função de verdade é representada por infinitas fórmulas, que podem ser muito diferentes entre si: (v1→v2)(v_1 \rightarrow v_2), ¬(v1∧¬v2)\neg(v_1 \wedge \neg v_2) e (((v1↓v1)↓v2)↓((v1↓v1)↓v2))(((v_1 \downarrow v_1) \downarrow v_2) \downarrow ((v_1 \downarrow v_1) \downarrow v_2)) são três nomes da mesma coisa. Se isso é assim, convém escolher em cada classe de equivalência um representante de forma fixa, que se leia sem esforço e com o qual certas perguntas se respondam olhando. Isso são as formas normais.

Literais, cláusulas e formas normais

Recorde-se, da aula sobre as leis generalizadas, a notação da conjunção e da disjunção de nn fórmulas, definida por recursão e associando pela esquerda; a de uma só fórmula é a própria fórmula.

⋀i=11φi=φ1,⋀i=1n+1φi=(⋀i=1nφi∧φn+1)\bigwedge_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigwedge_{i=1}^{n + 1} \varphi_i = \left( \bigwedge_{i=1}^{n} \varphi_i \wedge \varphi_{n + 1} \right)
⋁i=11φi=φ1,⋁i=1n+1φi=(⋁i=1nφi∨φn+1)\bigvee_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigvee_{i=1}^{n + 1} \varphi_i = \left( \bigvee_{i=1}^{n} \varphi_i \vee \varphi_{n + 1} \right)

Na mesma aula demonstrou-se que a ordem e o agrupamento dos termos não alteram a fórmula a menos de equivalência (associatividade generalizada e independência da ordem e das repetições); por isso escreveremos também φ1∧φ2∧⋯∧φn\varphi_1 \wedge \varphi_2 \wedge \cdots \wedge \varphi_n sem parênteses, entendendo o agrupamento pela esquerda.

Um literal é uma variável vnv_n, que se chama literal positivo, ou a negação ¬vn\neg v_n de uma variável, que se chama literal negativo. O oposto de um literal ℓ\ell, que escrevemos ℓ∗\ell^{*}, é o literal da mesma variável e do outro sinal:

ℓ=vn  ⇒  ℓ∗=¬vn,ℓ=¬vn  ⇒  ℓ∗=vn\ell = v_n \;\Rightarrow\; \ell^{*} = \neg v_n, \qquad \ell = \neg v_n \;\Rightarrow\; \ell^{*} = v_n

Da definição segue-se que (ℓ∗)∗=ℓ(\ell^{*})^{*} = \ell. Dois literais formam um par complementar se um é o oposto do outro, como v3v_3 e ¬v3\neg v_3.

Uma cláusula é uma disjunção de literais, ⋁j=1kℓj\bigvee_{j=1}^{k} \ell_j, e uma conjunção elementar é uma conjunção de literais, ⋀j=1kℓj\bigwedge_{j=1}^{k} \ell_j, com k≥1k \geq 1 em ambos os casos; um literal sozinho é, portanto, ao mesmo tempo uma cláusula e uma conjunção elementar. Diz-se que um literal está em uma cláusula ou em uma conjunção elementar se é um dos seus ℓj\ell_j.

Uma fórmula está em forma normal disjuntiva se é uma disjunção de conjunções elementares, e em forma normal conjuntiva se é uma conjunção de cláusulas; isto é, se é, respectivamente, de uma das duas formas seguintes, onde mm e k1,…,kmk_1, \ldots, k_m são números naturais e cada ℓi,j\ell_{i,j} é um literal:

⋁i=1m⋀j=1kiℓi,j,⋀i=1m⋁j=1kiℓi,j\bigvee_{i=1}^{m} \bigwedge_{j=1}^{k_i} \ell_{i,j}, \qquad \bigwedge_{i=1}^{m} \bigvee_{j=1}^{k_i} \ell_{i,j}

Diremos que Φ\Phi é uma forma normal disjuntiva de φ\varphi se está em forma normal disjuntiva e φ≡Φ\varphi \eqsem \Phi, e o mesmo com a conjuntiva. Os comprimentos kik_i podem variar de uma conjunção (ou cláusula) para outra: exigir o mesmo número de literais em todas obrigaria a preencher com repetições e não acrescentaria nada.

ExemploO que está e o que não está em forma normal

A fórmula (v1∧¬v2)∨¬v3(v_1 \wedge \neg v_2) \vee \neg v_3 está em forma normal disjuntiva, com m=2m = 2, k1=2k_1 = 2 e k2=1k_2 = 1; não está em forma conjuntiva, porque não é uma conjunção (seus dois componentes são distintos, e uma conjunção é uma dupla negação), nem é uma cláusula: lida como disjunção, tem um termo, (v1∧¬v2)(v_1 \wedge \neg v_2), que não é um literal nem uma disjunção de literais. A fórmula v1∧¬v2∧v3v_1 \wedge \neg v_2 \wedge v_3 está em ambas as formas: como disjunção de uma só conjunção elementar (m=1m = 1) e como conjunção de três cláusulas de um literal cada uma. Do mesmo modo, (¬v1∨v2)(\neg v_1 \vee v_2) é ao mesmo tempo uma cláusula, isto é, uma forma conjuntiva com m=1m = 1, e uma forma disjuntiva de duas conjunções de um literal.

(v1∧¬v2)∨¬v3,v1∧¬v2∧v3,¬v1∨v2(v_1 \wedge \neg v_2) \vee \neg v_3, \qquad v_1 \wedge \neg v_2 \wedge v_3, \qquad \neg v_1 \vee v_2

Em contrapartida, (v1↓v2)(v_1 \downarrow v_2) e ¬(v1→v2)\neg(v_1 \rightarrow v_2) não estão em nenhuma das duas formas, embora a primeira equivalha a (¬v1∧¬v2)(\neg v_1 \wedge \neg v_2) e a segunda a (v1∧¬v2)(v_1 \wedge \neg v_2), que estão.

(v1↓v2)≡¬v1∧¬v2,¬(v1→v2)≡v1∧¬v2(v_1 \downarrow v_2) \eqsem \neg v_1 \wedge \neg v_2, \qquad \neg(v_1 \rightarrow v_2) \eqsem v_1 \wedge \neg v_2

Convém deter-se no que significa “estar em forma normal”. É uma propriedade da cadeia de círculos e discos, não do seu significado: a aula sobre a indução sobre os números naturais e sobre as fórmulas demonstrou a leitura única, de modo que perguntar se uma fórmula é uma disjunção, e de quê, tem uma só resposta. Ora, as abreviaturas oficiais fazem com que algumas fórmulas estejam em forma normal sem o parecer. A implicação (v1→v2)(v_1 \rightarrow v_2) define-se como (¬v1∨v2)(\neg v_1 \vee v_2): não é que equivalha a essa cláusula, mas que é essa mesma cadeia, e portanto já está em forma normal. Mais surpreendente é a dupla negação. Pelas definições de ¬\neg e de ∨\vee, a cadeia (φ∨φ)(\varphi \vee \varphi) é ¬(φ↓φ)\neg(\varphi \downarrow \varphi), isto é, ¬¬φ\neg\neg\varphi; donde ¬¬v1\neg\neg v_1 não é um literal, mas é, símbolo por símbolo, a cláusula (v1∨v1)(v_1 \vee v_1).

(φ∨φ)=¬(φ↓φ)=¬¬φ(\varphi \vee \varphi) = \neg(\varphi \downarrow \varphi) = \neg\neg\varphi

O valor das conjunções e das disjunções

Da aula sobre a semântica tomam-se os valores dos conectivos derivados: v(¬φ)=1−v(φ)v(\neg\varphi) = 1 - v(\varphi); v(φ∧ψ)=v(φ) v(ψ)v(\varphi \wedge \psi) = v(\varphi)\,v(\psi), que vale 11 se e somente se ambas valem 11; e v(φ∨ψ)=0v(\varphi \vee \psi) = 0 se e somente se ambas valem 00. A aula sobre as leis generalizadas de De Morgan e distributivas estendeu-os a nn fórmulas, por indução sobre o número de termos, no lema do valor: para toda valoração vv, a conjunção ⋀i=1nφi\bigwedge_{i=1}^{n} \varphi_i vale 11 em vv se e somente se cada φi\varphi_i vale 11 em vv, e a disjunção ⋁i=1nφi\bigvee_{i=1}^{n} \varphi_i vale 11 em vv se e somente se alguma φi\varphi_i vale 11 em vv. Esse lema, que aqui se cita sem repetir sua demonstração, é o instrumento com que se calcula o valor de qualquer forma normal.

LemaNegação de um literal

Para todo literal ℓ\ell, a negação de ℓ\ell equivale ao seu oposto, ¬ℓ≡ℓ∗\neg\ell \eqsem \ell^{*}; em particular, v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) para toda valoração vv.

Demonstração

  1. ℓ=vn  ⇒  ¬ℓ=¬vn=ℓ∗\ell = v_n \;\Rightarrow\; \neg\ell = \neg v_n = \ell^{*}

    Se ℓ\ell é uma variável vnv_n, seu oposto é ¬vn\neg v_n, que é exatamente a cadeia ¬ℓ\neg\ell: não há nada a demonstrar.

  2. ℓ=¬vn  ⇒  ¬ℓ=¬¬vn≡vn=ℓ∗\ell = \neg v_n \;\Rightarrow\; \neg\ell = \resaltar{\neg\neg v_n} \eqsem v_n = \ell^{*}

    Se ℓ\ell é ¬vn\neg v_n, sua negação é ¬¬vn\neg\neg v_n, que não é um literal; pela lei da dupla negação (aula sobre consequência e equivalência semânticas), equivale a vnv_n, que é o oposto de ℓ\ell.

  3. v(ℓ∗)=v(¬ℓ)=1−v(ℓ)v(\ell^{*}) = v(\neg\ell) = 1 - v(\ell)

    Em ambos os casos, ℓ∗\ell^{*} e ¬ℓ\neg\ell têm o mesmo valor em toda valoração, e o de ¬ℓ\neg\ell é dado pelo valor da negação.

O segundo caso é fácil de passar despercebido: ao negar uma forma normal tende-se a escrever ¬ℓi,j\neg\ell_{i,j} em lugar de um literal, e ¬¬vn\neg\neg v_n não o é. A dupla negação é o que devolve o resultado ao molde.

LemaConjunções elementares e cláusulas

Uma conjunção elementar é satisfatível se e somente se não contém nenhum par complementar. Uma cláusula é válida se e somente se contém algum par complementar.

Demonstração

  1. v(ℓ) v(ℓ∗)=v(ℓ) (1−v(ℓ))=0v(\ell)\,v(\ell^{*}) = v(\ell)\,(1 - v(\ell)) = 0

    Se uma conjunção elementar contém ℓ\ell e ℓ∗\ell^{*}, em toda valoração um dos dois vale 00, pelo lema anterior; pelo lema do valor, a conjunção vale 00 em toda valoração.

  2. vn=ℓj  ⇒  v(vn)=1,¬vn=ℓj  ⇒  v(vn)=0\dato{val}{v_n = \ell_j \;\Rightarrow\; v(v_n) = 1, \qquad \neg v_n = \ell_j \;\Rightarrow\; v(v_n) = 0}

    Se não contém nenhum par complementar, define-se uma valoração que dá 11 a cada variável que está nela como literal positivo e 00 a cada variável que está nela como literal negativo (às demais, 00). A definição não é contraditória, porque nenhuma variável está nela das duas maneiras.

  3. v(⋀j=1kℓj)=1v\left( \bigwedge_{j=1}^{k} \ell_j \right) = 1

    Nessa valoração todos os seus literais valem 11, e pelo lema do valor a conjunção vale 11: é satisfatível.

  4. v(ℓ)+v(ℓ∗)=1v(\ell) + v(\ell^{*}) = 1

    Se uma cláusula contém ℓ\ell e ℓ∗\ell^{*}, em toda valoração um dos dois vale 11, e a cláusula vale 11: é válida.

  5. v(⋁j=1kℓj)=0v\left( \bigvee_{j=1}^{k} \ell_j \right) = 0

    Se não contém nenhum par complementar, a valoração que dá 00 às suas variáveis positivas e 11 às suas variáveis negadas faz valer 00 todos os seus literais; pelo lema do valor, a cláusula vale 00 nela e não é válida.