Lógica proposicional
Sintaxe, tabelas de verdade, consequência, equivalências e formas normais.
«Há autorização» ou é verdade ou é falso. Uma frase assim, que é verdadeira ou falsa sem meio termo, chama-se proposição, uma afirmação com valor de verdade ou . «Abre a porta!» é uma ordem, por isso não é uma proposição: não faz sentido dizer que é verdadeira ou falsa.
A lógica proposicional, o estudo de como combinar proposições para decidir o valor do conjunto, parte destas frases simples. «A porta abre» quando «há autorização» e «o sistema não está bloqueado». Se escrevermos para «há autorização» e para «o sistema está bloqueado», com a ler-se «e» e a ler-se «não», a condição escreve-se . Não precisamos de saber como se obtém a autorização para calcular o valor de .
Fórmulas e subfórmulas
Uma fórmula bem formada constrói-se pelas regras seguintes:
- Cada variável proposicional, como , é uma fórmula.
- Se é fórmula, também é.
- Se e são fórmulas, , e também são.
Os parênteses indicam a construção. Usamos a precedência , depois , depois , depois . A implicação associa à direita: significa .
Em , a conetiva principal é . As subfórmulas imediatas são e . Descendo na construção encontramos , e . Uma subfórmula é uma expressão completa da árvore sintática; não é uma subfórmula.
Avaliação pela árvore sintática
Para com e , calcula dentro para fora: e depois . A conetiva principal é o final; as subfórmulas imediatas são e . A árvore sintática é:
∧
/ \
p ¬
|
q
Lê a árvore de baixo para cima quando avalias e de cima para baixo quando identificas a regra principal.
As conetivas
| T | T | F | T | T | T | T |
| T | F | F | F | T | F | F |
| F | T | T | F | T | T | F |
| F | F | T | F | F | T | T |
A disjunção é inclusiva: aceita que ambas as partes sejam verdadeiras. “Exatamente uma” escreve-se .
Uma implicação é falsa apenas quando o antecedente é verdadeiro e o consequente é falso. No exemplo da porta, introduzimos para «a porta abre». A condição só falha quando há autorização, o sistema não está bloqueado e a porta não abre. Saber essa condição não afirma que há autorização, nem que esta é a única forma de abrir a porta. A implicação inversa é outra afirmação.
” só se ” escreve-se : é uma condição necessária para . ” se ” escreve-se : é suficiente para . “Se e só se” exige as duas direções, abreviadas por .
A partir de formam-se três implicações diferentes. Só uma delas é equivalente à original:
| Nome | Forma | Relação com |
|---|---|---|
| Recíproca | Não é equivalente. Afirmar o consequente. | |
| Inversa | Equivale à recíproca, não à original. | |
| Contrapositiva | Equivalente à original. Negar e trocar. |
No exemplo da porta, a recíproca diz que a porta só abre com autorização e sistema desbloqueado. A contrapositiva diz que, se a porta não abre, então faltou autorização ou o sistema estava bloqueado. Confundir a original com a recíproca é a falácia de afirmar o consequente: ver a porta aberta não prova que houve autorização, pois outra forma de abrir também satisfaz qualquer, .
Atribuições e tabelas de verdade
Uma atribuição escolhe ou para cada variável. Estendemos às fórmulas aplicando as conetivas de dentro para fora. Escrevemos quando .
Para , calculamos primeiro e :
| T | T | T | F | F |
| T | F | T | F | F |
| F | T | T | T | T |
| F | F | F | T | F |
Há atribuições para variáveis distintas, porque cada variável tem duas escolhas independentes. Repetir na fórmula não cria uma variável nova.
- Uma tautologia é verdadeira em todas as atribuições, como .
- Uma fórmula satisfazível é verdadeira em pelo menos uma atribuição.
- Uma contradição, ou fórmula insatisfazível, é falsa em todas, como .
- Uma fórmula contingente tem atribuições verdadeiras e falsas.
A tabela mostra que é contingente. Em particular, é satisfazível e não é uma tautologia. Escrever diz apenas que não é válida, não que é uma contradição.
Consequência e contraexemplos
significa que toda a atribuição que torna todas as premissas de verdadeiras também torna verdadeira. Não interessa uma linha em que uma premissa já é falsa.
Por exemplo, . A única atribuição que satisfaz as duas premissas tem e .
Para refutar , escolhemos . Ambas as premissas são verdadeiras e a conclusão é falsa. Esta atribuição é um contraexemplo ao argumento.
Se as premissas são insatisfazíveis, não existe linha com todas verdadeiras. Nesse caso, qualquer conclusão é consequência semântica delas. Para premissas finitas, podemos usar o teste equivalente:
Acrescentar e retirar premissas
Se e , então . Uma atribuição que satisfaz todas as premissas de também satisfaz as de , logo satisfaz . Acrescentar premissas reduz os casos que é preciso verificar; esta propriedade chama-se monotonia da consequência.
Retirar premissas pode perder a conclusão. Temos , mas : satisfaz a única premissa e falsifica .
Também não podemos intersectar dois conjuntos de premissas só porque ambos implicam a mesma conclusão. e , mas a interseção é vazia. Com , a conclusão é falsa, por isso .
Enumerar contraexemplos
Para duas variáveis, podemos percorrer as quatro atribuições e conservar apenas as que satisfazem as premissas e falsificam a conclusão. No código, implica(p, q) implementa como !p || q. && corresponde à conjunção e ! à negação.
O argumento inicial é o do exercício «Refutar uma consequência»: . Compara a atribuição encontrada com a justificação escrita acima. Depois troca a definição de conclusao por (p, q) => q. Por que deixa de aparecer um contraexemplo? A premissa já garante essa conclusão.
const implica = (a, b) => !a || b;
const premissas = (p, q) => implica(p, q) && q;
const conclusao = (p, q) => p && q;
const valor = (v) => (v ? 'T' : 'F');
let quantidade = 0;
for (const p of [false, true]) {
for (const q of [false, true]) {
if (premissas(p, q) && !conclusao(p, q)) {
console.log(`Contraexemplo: p=${valor(p)}, q=${valor(q)}`);
quantidade++;
}
}
}
console.log(`Atribuições verificadas: 4. Contraexemplos: ${quantidade}.`);Executa o código para ver a saída e os gráficos.
Aqui, percorrer as quatro atribuições é uma verificação exaustiva, porque só aparecem e . Se introduzires nas fórmulas, tens também de enumerar os seus dois valores. Conferir alguns casos de uma afirmação sobre inteiros ou sobre relações arbitrárias não tem o mesmo alcance.
Equivalências
diz que as fórmulas têm o mesmo valor em todas as atribuições. É uma relação entre fórmulas. Já é uma fórmula da linguagem, que será uma tautologia se houver essa equivalência.
As transformações seguintes preservam o valor de verdade:
| Transformação | Equivalência |
|---|---|
| Implicação | |
| Dupla negação | |
| De Morgan | |
| De Morgan | |
| Distributividade | |
| Distributividade | |
| Absorção | |
| Absorção | |
| Contraposição |
Conjunção e disjunção são comutativas, associativas e idempotentes. A implicação não é comutativa. Por exemplo, é falsa, enquanto é verdadeira.
Formas normais
Um literal é uma variável ou a sua negação. Na forma normal negativa, as negações só aparecem em literais e usamos apenas , e .
Para transformar , eliminamos a implicação e levamos a negação até aos literais:
Esta fórmula já está em forma normal conjuntiva, FNC ou CNF, uma conjunção de disjunções de literais. Um literal sozinho também pode ser uma cláusula. Distribuindo a conjunção obtemos a forma normal disjuntiva, FND ou DNF:
Uma FND é satisfazível se pelo menos uma das suas conjunções não contiver literais opostos. Uma FNC é uma tautologia se cada cláusula contiver um literal e a sua negação. Estes critérios não trocam de papel: ter cláusulas individualmente satisfazíveis não garante que a sua conjunção seja satisfazível. é um contraexemplo.
Construir a partir da tabela
Para obter FND, usamos as linhas verdadeiras. Em cada linha, juntamos por a variável se vale e a sua negação se vale . Depois juntamos os termos por .
Na tabela de , só a linha é verdadeira. A FND é .
Para obter FNC, usamos as linhas falsas. Cada cláusula deve ser falsa exatamente nessa linha, por isso escolhemos a negação de uma variável com valor e a variável sem negação se vale . A FNC da mesma tabela é:
A primeira cláusula exclui , a segunda exclui e a terceira exclui . Não escolhemos os sinais por memória, verificamos que a cláusula é falsa na linha que queremos excluir.
Para a tabela sempre falsa, uma FND possível é . Para a tabela sempre verdadeira, uma FNC possível é .
Conjuntos completos de conetivas
Uma fórmula com variáveis define uma função . Há funções destas: uma escolha de saída para cada uma das entradas.
Um conjunto de conetivas é completo se consegue representar qualquer função de verdade. A construção da FND mostra que é completo. Para provar que também é completo, podemos representar as conetivas que faltam:
Por outro lado, não é completo. Qualquer fórmula construída só com estas conetivas vale quando todas as variáveis valem , por isso não representa .
Circuitos, mapas de Karnaugh e portas NAND
Uma fórmula booleana também se lê como um circuito: cada ocorrência de conetiva é uma porta, sem partilhar saídas entre portas. usa uma porta NOT unária com uma entrada; e usam portas binárias com duas entradas. Para a expressão
uma construção direta usa 4 portas NOT, 4 portas AND binárias e 2 portas OR binárias, uma por cada ocorrência na escrita. O circuito calcula a mesma função que a FND obtida por equivalências:
Esta FND é outra árvore sintática, por isso a contagem é outra. Sem partilhar subexpressões e com portas binárias, ela usa 6 ocorrências de NOT, 5 AND binários e 3 OR binários. Só a forma simplificada abaixo é que usa poucas portas.
Os termos desta FND não são todos mintermos. Um mintermo fixa as três variáveis e cobre uma só linha; um termo incompleto deixa variáveis de fora e cobre várias linhas. Aqui:
- cobre só .
- cobre e .
- cobre e .
- cobre e .
A união dá as cinco linhas verdadeiras . Para ver estes conjuntos, o mapa de Karnaugh dispõe as oito combinações numa grelha onde células vizinhas diferem numa só variável. As colunas seguem a ordem Gray para ; as arestas opostas contam como vizinhas, como se o mapa desse a volta. Agrupamos os uns em retângulos com , , ou células. Cada grupo elimina as variáveis que mudam dentro dele.
No mapa, o bloco das duas primeiras colunas reúne as quatro células com ; elimina e . O par da linha reúne as células e , que são vizinhas pela borda direita e esquerda e partilham ; elimina . A célula pertence aos dois grupos. A expressão simplificada é:
O circuito simplificado usa 2 portas NOT, 1 AND binário e 1 OR binário. A simplificação conserva a função de verdade: os dois blocos cobrem exatamente as cinco linhas verdadeiras listadas acima.
A mesma função escreve-se com um só tipo de porta. A porta NAND define-se por . Como , obtemos NOT; negando um NAND obtemos AND; por De Morgan obtemos OR. Para a forma simplificada, a construção explícita com três NAND binários é:
Lê de dentro para fora: é ; é ; é . As oito atribuições dão por até , tal como a original, a FND e a simplificada. A construção análoga com NOR usa . Escolher NAND ou NOR não muda a função representada, só o conjunto de portas permitido.
Conferir uma equivalência
Voltamos a . A FND obtida da tabela foi . Podemos justificar a simplificação sem enumerar atribuições:
A primeira passagem distribui a conjunção. O termo nunca é verdadeiro, por isso não altera a disjunção. A última passagem troca a ordem da conjunção. A tabela e as transformações chegam à mesma condição: .
Exercícios
FND e FNC da mesma tabela
Uma função de duas variáveis é verdadeira precisamente quando e têm valores diferentes. Constrói uma FND a partir das linhas verdadeiras e uma FNC a partir das falsas. Justifica os sinais e confere que representam a mesma função.
Pista
Em cada linha, a conjunção da FND tem de ser verdadeira; a cláusula da FNC tem de ser falsa.
Solução
As linhas verdadeiras são e . A FND é : cada termo fica verdadeiro na sua linha.
As falsas são e . Para excluir a primeira usamos , e para excluir a segunda usamos . A FNC é .
| FND | FNC | ||
|---|---|---|---|
| T | T | F | F |
| T | F | T | T |
| F | T | T | T |
| F | F | F | F |
As duas colunas coincidem e descrevem «exatamente uma verdadeira».
Confere a tua resposta:
- Usei as duas linhas verdadeiras na FND e as duas falsas na FNC.
- Justifiquei os sinais em cada termo e cláusula.
- Conferi as quatro atribuições.
Erros frequentes
Uma cláusula falsa numa linha não é um termo verdadeiro nessa linha. Trocar os sinais entre os dois métodos muda a função.
Refutar uma consequência
É verdade que ? Prova ou apresenta uma atribuição que refute a consequência.
Pista
A conclusão exige . As premissas obrigam a que seja verdadeiro?
Mais uma pista
Experimenta .
Solução
A consequência é falsa. Com , e são verdadeiras, mas é falsa. Não há obrigação de o antecedente ser verdadeiro só porque o consequente é.
O enumerador de contraexemplos usa este argumento como estado inicial. Depois de justificares a atribuição, troca a conclusão por e explica por que o resultado muda.
Confere a tua resposta:
- A atribuição torna as duas premissas verdadeiras.
- A conclusão é falsa nessa mesma atribuição.
- Distingo implicação de implicação inversa.
Erros frequentes
Uma linha com a premissa falsa não refuta o argumento.
Provar completude com NAND
Define . Escreve , e usando só . Explica por que isto prova completude.
Pista
Aplicar NAND a duas cópias da mesma variável dá a sua negação.
Mais uma pista
Para negar um NAND, aplica NAND a duas cópias do seu resultado. Para a disjunção, usa De Morgan.
Solução
Temos . Depois e . Como conseguimos substituir todas as conetivas de , que é completo, também é completo.
Confere a tua resposta:
- Representei a negação com p ↑ p.
- Representei conjunção e disjunção sem outras conetivas.
- Relacionei as representações com um conjunto já completo.
Erros frequentes
Mostrar só que uma fórmula particular pode escrever-se com NAND não prova completude.
Simplificar com Karnaugh e converter para NAND
Parte da expressão , que usa 4 NOT, 4 AND binários e 2 OR binários sem partilha. A sua FND é , com 6 NOT, 5 AND binários e 3 OR binários sem partilha. Agrupa os uns no mapa de Karnaugh de três variáveis, escreve a expressão simplificada e converte-a para usar só portas NAND. Indica quantas portas usa antes e depois.
Pista
Todas as células com formam um bloco de quatro. As restantes células verdadeiras partilham .
Mais uma pista
Depois de obteres , escreve-a como . Cada é .
Solução
Os quatro termos da FND cobrem cinco linhas: cobre só ; cobre e ; cobre e ; cobre e . O bloco elimina e ; o bloco elimina , com as células e vizinhas pela borda. A forma simplificada é , que é verdadeira exatamente nessas cinco linhas. Usa 2 NOT, 1 AND binário e 1 OR binário.
Para NAND, com , o resultado explícito é:
com três portas NAND binárias: dá ; dá ; dá . As oito atribuições dão por até , tal como a original e a FND.
Confere a tua resposta:
- Agrupei os uns em blocos de 2 ou 4 células com arestas opostas vizinhas.
- A simplificação cobre exatamente as linhas verdadeiras da FND.
- A conversão usa só NAND e conserva a função.
Erros frequentes
Um grupo tem de ter , , ou células em retângulo, sem buracos. Juntar células sem esse formato pode excluir linhas verdadeiras ou incluir linhas falsas.
Precedência, árvore e contraexemplo
Usa a precedência , , , , com a implicação associativa à direita. Desenha a árvore de , lista todas as subfórmulas e avalia-a com . Compara com : as duas fórmulas são equivalentes? Se não, apresenta uma atribuição que as distinga.
Pista
Constrói a raiz pela conetiva de menor precedência. Para refutar equivalência, procura uma linha em que o antecedente seja falso.
Solução
A primeira fórmula é :
→
/ \
p ∧
/ \
q ¬
|
rAs subfórmulas são e . Na atribuição dada, , e a implicação vale T.
Isso não prova equivalência com . Com , a primeira vale T porque o antecedente é falso; a segunda vale F porque . A posição dos parênteses muda a condição.
Confere a tua resposta:
- A raiz da primeira fórmula é a implicação.
- Listei subfórmulas completas e avaliei de baixo para cima.
- Apresentei uma atribuição com valores finais diferentes.
O que muda quando as premissas mudam
Sejam conjuntos de fórmulas e uma fórmula. Prova ou refuta cada afirmação:
- Se e , então .
- Se e , então .
Uma refutação deve indicar conjuntos e fórmulas concretos, além da atribuição.
Pista
Acrescentar premissas restringe as atribuições possíveis. Intersectar conjuntos de premissas pode retirar as fórmulas que permitiam obter a conclusão.
Solução
A primeira é verdadeira. Toma uma atribuição que satisfaz todas as fórmulas de . Como , satisfaz todas as de . Pela consequência dada, satisfaz . Isto trata qualquer atribuição relevante; se não existir nenhuma, a consequência também vale.
A segunda é falsa. Escolhe , e . Cada conjunto implica por modus ponens, mas . A atribuição satisfaz todas as premissas da interseção vazia e falsifica . Não precisa de satisfazer as premissas retiradas.
Confere a tua resposta:
- Provei a afirmação universal a partir da definição de consequência.
- No contraexemplo identifiquei os dois conjuntos de premissas e a conclusão.
- Mostrei que a interseção admite uma atribuição que falsifica a conclusão.