Saltar para o conteúdo
Topos Uranos

Resumo

Toda fórmula determina uma tabela-verdade; esta aula demonstra a afirmação recíproca: toda tabela, isto é, toda atribuição de valores de verdade às linhas, é a tabela de alguma fórmula. Define as funções de verdade, conta as de nn argumentos (22n2^{2^{n}}) e precisa quando uma fórmula representa uma delas. Demonstra depois o teorema da completude funcional por meio da fórmula da tabela, uma disjunção de conjunções de literais construída linha por linha, que a aula sobre formas normais usará como primeira demonstração da existência da forma normal disjuntiva. Como toda fórmula do curso é uma cadeia de círculos e discos, segue-se disso sem mais trabalho que a negação conjunta basta por si só, e mostra-se como se escreve com ela qualquer função. Por último, estuda quais conjuntos de conectivos bastam para representar todas as funções: demonstra um critério geral, aplica-o a {¬,∧}\{\neg, \wedge\}, {¬,∨}\{\neg, \vee\}, {¬,→}\{\neg, \rightarrow\}, {↓}\{\downarrow\} e à negação alternativa, e demonstra que {∧,∨,→,↔}\{\wedge, \vee, \rightarrow, \leftrightarrow\} não basta, porque todas as suas fórmulas preservam o valor 11.

Objetivos de aprendizagem

  1. Contar as funções de verdade de nn argumentos e decidir, por meio das funções que representam, quando duas fórmulas são equivalentes.
  2. Construir, a partir da tabela de uma função de verdade, uma fórmula que a represente, e procurar uma fórmula equivalente mais breve quando convier.
  3. Explicar por que, na língua do curso, a negação conjunta basta por si só, e escrever só com ela fórmulas que representem funções dadas.
  4. Demonstrar que um conjunto de conectivos é adequado, expressando com as suas fórmulas a negação conjunta.
  5. Demonstrar que um conjunto de conectivos não é adequado, por meio de uma propriedade que todas as suas fórmulas preservam.

Funções de verdade

A aula sobre a semântica da lógica proposicional atribuiu a cada fórmula, em cada valoração, um valor de verdade, e mostrou que esse valor depende só dos valores das variáveis que nela ocorrem; donde toda fórmula com nn variáveis tem uma tabela-verdade de 2n2^{n} linhas. A pergunta desta aula é a inversa. Dada uma tabela qualquer, isto é, uma coluna de uns e zeros escrita arbitrariamente ao lado das 2n2^{n} linhas, há alguma fórmula que a tenha por tabela? Se isso vale para toda tabela, a linguagem não tem lacunas expressivas: tudo o que se pode dizer sobre o valor de verdade de nn enunciados, em função dos valores destes, diz-se com uma fórmula. E como neste curso toda fórmula composta é uma negação conjunta, a resposta dirá também se um só conectivo basta para dizer tudo.

O que se usa das aulas anteriores

Uma valoração é uma função vv do conjunto das variáveis {v1,v2,…}\{v_1, v_2, \ldots\} em {0,1}\{0, 1\}, onde 11 é o verdadeiro e 00 o falso; a sua extensão a todas as fórmulas, que também se escreve vv, é definida por recursão: v((φ↓ψ))=1v((\varphi \downarrow \psi)) = 1 se e somente se v(φ)=0v(\varphi) = 0 e v(ψ)=0v(\psi) = 0. Das abreviaturas oficiais, a mesma aula calculou, no teorema dos valores dos conectivos derivados, o valor de cada conectivo; escritos com somas e produtos, são os seguintes, para toda valoração vv e todas as fórmulas φ\varphi e ψ\psi:

v(¬φ)=1−v(φ),v((φ∧ψ))=v(φ) v(ψ),v((φ∨ψ))=v(φ)+v(ψ)−v(φ) v(ψ)v(\neg\varphi) = 1 - v(\varphi), \qquad v((\varphi \wedge \psi)) = v(\varphi)\,v(\psi), \qquad v((\varphi \vee \psi)) = v(\varphi) + v(\psi) - v(\varphi)\,v(\psi)
v((φ→ψ))=1−v(φ)+v(φ) v(ψ),v((φ↓ψ))=(1−v(φ)) (1−v(ψ))v((\varphi \rightarrow \psi)) = 1 - v(\varphi) + v(\varphi)\,v(\psi), \qquad v((\varphi \downarrow \psi)) = (1 - v(\varphi))\,(1 - v(\psi))

Além disso, v((φ↔ψ))=v(φ) v(ψ)+(1−v(φ)) (1−v(ψ))v((\varphi \leftrightarrow \psi)) = v(\varphi)\,v(\psi) + (1 - v(\varphi))\,(1 - v(\psi)), que vale 11 se e somente se v(φ)=v(ψ)v(\varphi) = v(\psi), e v((φ⊻ψ))=v(φ)+v(ψ)−2 v(φ) v(ψ)v((\varphi \veebar \psi)) = v(\varphi) + v(\psi) - 2\,v(\varphi)\,v(\psi), que vale 11 se e somente se v(φ)≠v(ψ)v(\varphi) \neq v(\psi). Como os valores são 00 ou 11, o quadrado de um valor é o próprio valor, v(φ) v(φ)=v(φ)v(\varphi)\,v(\varphi) = v(\varphi), e um produto de valores vale 11 se e somente se cada fator vale 11; ambas as observações serão usadas sem repeti-las. Usa-se também o lema da coincidência: se duas valorações coincidem nas variáveis de φ\varphi, isto é, nas variáveis que são subfórmulas de φ\varphi, dão a φ\varphi o mesmo valor. Da aula sobre consequência e equivalência semânticas toma-se a equivalência semântica: φ≡ψ\varphi \eqsem \psi quando v(φ)=v(ψ)v(\varphi) = v(\psi) para toda valoração vv. Por último, vale a convenção das letras da aula sobre a formalização: pp, qq e rr designam as variáveis v1v_1, v2v_2 e v3v_3.

Funções de verdade e o seu número

Seja nn um número natural. Uma linha de nn valores é uma sequência a=(a1,…,an)a = (a_1, \ldots, a_n) em que cada aia_i é 00 ou 11; o conjunto de todas elas denota-se {0,1}n\{0, 1\}^{n}. Uma função de verdade de nn argumentos é uma função

f ⁣:{0,1}n→{0,1}f\colon \{0, 1\}^{n} \to \{0, 1\}

que atribui a cada linha um valor de verdade. Apresenta-se como uma tabela: as linhas escrevem-se na ordem da tabela, a partir daquela em que todos os valores são 11 (para dois argumentos, 1 11\,1, 1 01\,0, 0 10\,1, 0 00\,0), e ao lado de cada linha escreve-se o seu valor. Uma função de verdade é, portanto, uma tabela-verdade sem fórmula: a coluna da direita, sem nada escrito no seu cabeçalho.

ProposiçãoHá 22n2^{2^{n}} funções de verdade de nn argumentos

Para todo número natural nn, há exatamente 2n2^{n} linhas de nn valores e 22n2^{2^{n}} funções de verdade de nn argumentos.

Demonstração

  1. 1 0 1    ⟼    ∙∘∙\dato{filas}{1\,0\,1 \;\; \longmapsto \;\; \sigI\sigO\sigI}

    Uma linha é uma sequência de nn símbolos, cada um dos quais é 11 ou 00. Se se escreve o disco no lugar de 11 e o círculo no lugar de 00, as linhas correspondem, uma a uma, às cadeias de comprimento nn sobre o alfabeto de dois símbolos, que são 2n2^{n} pelo primeiro problema resolvido da aula sobre a indução, demonstrado ali por indução sobre nn.

  2. f    ⟼    f(1,…,1)    …    f(0,…,0)f \;\; \longmapsto \;\; f(1, \ldots, 1) \;\; \ldots \;\; f(0, \ldots, 0)

    Uma função de verdade fica determinada pelos seus valores nas linhas, e qualquer escolha desses valores dá uma função. Se se escrevem os valores na ordem da tabela, as funções correspondem, uma a uma, às sequências de 2n2^{n} símbolos, cada um 11 ou 00.

  3. 22n2^{\resaltar{2^{n}}}

    Pela mesma contagem, aplicada agora a sequências de comprimento 2n2^{n}, há 22 elevado a 2n2^{n} funções.

  4. 22=4,24=16,28=256,216=65 5362^{2} = 4, \quad 2^{4} = 16, \quad 2^{8} = 256, \quad 2^{16} = 65\,536

    Os primeiros valores mostram com que rapidez cresce o número: com cinco argumentos já há mais de quatro bilhões de funções.

ExemploAs funções de um e de dois argumentos

As quatro funções de um argumento são a constante 11, a identidade, a que inverte o valor e a constante 00; as fórmulas ⊤\top, pp, ¬p\neg p e ⊥\bot, onde ⊤:=(p→p)\top := (p \rightarrow p) e ⊥:=¬⊤\bot := \neg\top são as fixadas na aula sobre semântica, têm, respectivamente, essas tabelas. Entre as dezesseis funções de dois argumentos estão as dos seis conectivos do curso: a negação conjunta, a disjunção, a conjunção, a implicação, a bicondicional e a disjunção exclusiva. Restam outras dez, entre elas as duas constantes, as que só levam em conta um dos argumentos e a negação alternativa, que vale 00 só quando ambos os argumentos valem 11; o problema resolvido 1 classifica-as todas.

Fórmulas que representam funções

Uma fórmula e uma função de verdade relacionam-se do modo seguinte. Se φ\varphi é uma fórmula cujas variáveis estão entre v1,…,vnv_1, \ldots, v_n, diz-se que φ\varphi representa a função de verdade ff de nn argumentos quando, para toda valoração vv,

v(φ)=f(v(v1),…,v(vn))v(\varphi) = f(v(v_1), \ldots, v(v_n))

isto é, quando a tabela de φ\varphi, escrita com as variáveis v1,…,vnv_1, \ldots, v_n, é a tabela de ff. A condição sobre as variáveis não é um detalhe: a fórmula (p∧q)(p \wedge q) não representa nenhuma função de um argumento, porque o seu valor não depende só do de pp.

ProposiçãoA função de uma fórmula

Seja φ\varphi uma fórmula cujas variáveis estão entre v1,…,vnv_1, \ldots, v_n. Então φ\varphi representa exatamente uma função de verdade de nn argumentos, que se denota fφf_\varphi. Se ψ\psi é outra fórmula cujas variáveis estão entre v1,…,vnv_1, \ldots, v_n, então φ≡ψ\varphi \eqsem \psi se e somente se fφ=fψf_\varphi = f_\psi.

Demonstração

  1. va(vi)=ai(i≤n),va(vk)=0(k>n)\dato{va}{v_a(v_i) = a_i \quad (i \leq n), \qquad v_a(v_k) = 0 \quad (k > n)}

    Para cada linha aa há uma valoração que dá a cada viv_i o valor aia_i: basta dar às demais variáveis o valor 00.

  2. v(vi)=v′(vi)=ai(i≤n)    ⇒    v(φ)=v′(φ)=fφ(a)v(v_i) = v'(v_i) = a_i \quad (i \leq n) \;\; \Rightarrow \;\; v(\varphi) = v'(\varphi) = \resaltar{f_\varphi(a)}

    Se duas valorações dão a v1,…,vnv_1, \ldots, v_n os valores da linha aa, coincidem nas variáveis de φ\varphi, e pelo lema da coincidência dão a φ\varphi o mesmo valor. Esse valor comum toma-se como fφ(a)f_\varphi(a); por construção, φ\varphi representa fφf_\varphi.

  3. g(a)=va(φ)=fφ(a)g(a) = v_a(\varphi) = f_\varphi(a)

    Se φ\varphi representa também uma função gg, em cada linha aa tem-se g(a)=va(φ)=fφ(a)g(a) = v_a(\varphi) = f_\varphi(a): a função representada é única.

  4. v(φ)=fφ(v(v1),…,v(vn))=fψ(v(v1),…,v(vn))=v(ψ)v(\varphi) = f_\varphi(v(v_1), \ldots, v(v_n)) = f_\psi(v(v_1), \ldots, v(v_n)) = v(\psi)

    Se fφ=fψf_\varphi = f_\psi, para toda valoração vv os valores de φ\varphi e de ψ\psi são o valor da mesma função na mesma linha; donde φ≡ψ\varphi \eqsem \psi.

  5. fφ(a)=va(φ)=va(ψ)=fψ(a)f_\varphi(a) = v_a(\varphi) = v_a(\psi) = f_\psi(a)

    Reciprocamente, se φ≡ψ\varphi \eqsem \psi, em cada linha aa a valoração vav_a dá o mesmo valor a ambas as fórmulas, e portanto fφ(a)=fψ(a)f_\varphi(a) = f_\psi(a).

Há infinitas fórmulas com variáveis entre v1,…,vnv_1, \ldots, v_n e só 22n2^{2^{n}} funções; portanto, muitas fórmulas representam a mesma função, e a proposição diz que são exatamente as equivalentes entre si. O que falta saber é se toda função é representada por alguma fórmula, ou se algumas tabelas ficam sem fórmula que as tenha.