Conteúdos da cadeira

Provas em lógica proposicional

Regras de inferência, prova por casos e por contradição, condicionais e mapas de Karnaugh.

Markdown

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Envia o link e pede à IA para ler a página. No Gemini, cola a pergunta copiada.

Ver pergunta para copiar
Nesta página

Uma tabela de verdade mostra que uma fórmula é válida, mas não mostra porquê. Uma prova é uma sequência de passos, cada um justificado por uma regra, que vai das premissas até à conclusão. É este estilo que os testes pedem, com a ferramenta Fitch para construir provas formais e o Boole para tabelas de verdade. Esta página ensina o raciocínio; as ferramentas só registam o que já percebeste no papel.

As regras básicas de cada conetiva

Cada conetiva tem uma regra de introdução (como concluir uma fórmula com ela) e uma de eliminação (o que podes extrair dela):

  • Eliminação da conjunção: de PQP \land Q infere PP, e infere QQ.
  • Introdução da conjunção: de PP e QQ já provados, infere PQP \land Q.
  • Introdução da disjunção: de PP provado, infere PQP \lor Q para qualquer QQ.
  • Dupla negação: ¬¬P\lnot\lnot P equivale a PP, nos dois sentidos.

Duas regras merecem destaque porque resolvem famílias inteiras de exercícios:

Prova por casos (eliminação da disjunção). Se já provaste PQP \lor Q, e consegues chegar a SS assumindo PP e também chegar a SS assumindo QQ, então concluis SS. Como um dos dois tem de se verificar, SS vale em qualquer caso.

Prova por contradição (introdução da negação). Para provar ¬S\lnot S, assume SS e deriva uma contradição (uma fórmula e a sua negação). Se a suposição leva ao absurdo, a suposição é falsa.

Exemplo: prova por casos

Prova que Pequeno(c)Pequeno(c) é consequência de (Cubo(c)Pequeno(c))(Tet(c)Pequeno(c))(Cubo(c) \land Pequeno(c)) \lor (Tet(c) \land Pequeno(c)).

  1. A disjunção é a premissa.
  2. Caso 1: assume Cubo(c)Pequeno(c)Cubo(c) \land Pequeno(c). Por eliminação da conjunção, obténs Pequeno(c)Pequeno(c).
  3. Caso 2: assume Tet(c)Pequeno(c)Tet(c) \land Pequeno(c). Por eliminação da conjunção, obténs Pequeno(c)Pequeno(c).
  4. Nos dois casos chega-se a Pequeno(c)Pequeno(c), por isso concluis Pequeno(c)Pequeno(c) por prova por casos.

Repara que nunca foi preciso saber qual dos casos é o verdadeiro. Essa é a força do método: cobre todas as possibilidades sem as decidir.

Exemplo clássico: existe um racional escondido

Mostra que existem números irracionais bb e cc tais que bcb^c é racional. (Assume-se conhecido que 2\sqrt{2} é irracional.)

Considera o número 22\sqrt{2}^{\sqrt{2}}. Ele é racional ou irracional, pelo terceiro excluído.

  • Se for racional, escolhe b=c=2b = c = \sqrt{2} e está feito.
  • Se for irracional, escolhe b=22b = \sqrt{2}^{\sqrt{2}} e c=2c = \sqrt{2}. Então bc=(22)2=2(22)=22=2b^c = (\sqrt{2}^{\sqrt{2}})^{\sqrt{2}} = \sqrt{2}^{(\sqrt{2} \cdot \sqrt{2})} = \sqrt{2}^{2} = 2, que é racional.

Em qualquer dos casos existem os bb e cc pedidos. Esta prova é famosa por ser não construtiva: prova que os números existem sem dizer quais são, porque não sabemos em que caso estamos. Num teste, quando vires “mostre que existe” sem pista de como construir, pensa em prova por casos.

Condicionais: tradução e provas

O condicional tem as suas regras. A prova condicional diz: para provar PQP \to Q, assume PP e prova QQ dentro dessa suposição. O modus ponens (eliminação do condicional) diz: de PQP \to Q e PP, infere QQ.

Antes de provar é preciso traduzir bem. A tabela de PQP \to Q é sempre a mesma, mas a língua portuguesa esconde o antecedente de várias formas:

ExpressãoTraduçãoExemplo
PP só se QQPQP \to Q (QQ é necessária)“É aprovado só se assiste às aulas”: AprovadoAssisteAprovado \to Assiste
PP se QQQPQ \to P (QQ é suficiente)“É bom aluno se tem média 15”: Media15BomAlunoMedia15 \to BomAluno
QQ sempre que PP / quando PP / dado PPPQP \to Q“Chove sempre que vou à praia”: Praia(eu)ChovePraia(eu) \to Chove
QQ a menos que PP¬PQ\lnot P \to Q“Vai à praia a menos que chova”: ¬ChovePraia\lnot Chove \to Praia
PP só quando QQPQP \to Qigual a “só se”

Exemplo: traduzir e provar

Traduz “todos os triângulos equiláteros são equiângulos” no vocabulário com predicados EqLat(x)EqLat(x) e EqAng(x)EqAng(x), e mostra a forma da prova de que um triângulo equilátero arbitrário é equiângulo a partir dessa frase.

A tradução usa o padrão restritivo, que vais rever nos quantificadores: x(EqLat(x)EqAng(x))\forall x\,(EqLat(x) \to EqAng(x)). Para provar EqAng(t)EqAng(t) para um tt com EqLat(t)EqLat(t):

  1. Instancia a universal em tt: EqLat(t)EqAng(t)EqLat(t) \to EqAng(t).
  2. Com a premissa EqLat(t)EqLat(t), aplica modus ponens e obténs EqAng(t)EqAng(t).

Este esqueleto “traduzir o geral, instanciar no caso, aplicar modus ponens” resolve uma grande fatia dos exercícios com condicionais quantificados.

Que conjuntos de conetivas chegam?

Uma pergunta natural: precisamos mesmo das cinco conetivas? Não. Como toda a tabela de verdade se escreve em forma normal disjuntiva (um “ou” de “ês”, como (P¬Q)(¬PQ)(P \land \lnot Q) \lor (\lnot P \land Q)), as conetivas ¬\lnot, \land e \lor representam qualquer conetiva. E dá para ir mais longe: {¬,}\{\lnot, \land\} é completo, porque PQ¬(¬P¬Q)P \lor Q \equiv \lnot(\lnot P \land \lnot Q) por De Morgan. O par {¬,}\{\lnot, \to\} também é completo, porque PQ¬(P¬Q)P \land Q \equiv \lnot(P \to \lnot Q). Confirma esta última: P¬QP \to \lnot Q é falso só quando PP é V e ¬Q\lnot Q é F, isto é, PP e QQ ambos V, logo negá-lo dá exatamente PQP \land Q.

Pelo contrário, {,}\{\land, \lor\} não é completo: sem negação nunca produces uma função que valha F quando todas as entradas são V. Este tipo de argumento (“mostra que X se exprime, mostra que Y é impossível”) é o que os exercícios sobre conetivas pedem.

Formas normais e circuitos

A forma normal disjuntiva (FND) de uma fórmula é um “ou” de conjunções de literais (variáveis ou as suas negações). Constrói-se a partir da tabela: para cada linha onde a fórmula vale V, escreve a conjunção que só é verdadeira nessa linha, e faz o “ou” de todas. Para a conetiva * definida por PQP * Q verdadeiro só na linha (V,F)(V, F), a FND é P¬QP \land \lnot Q.

Um circuito lógico implementa a fórmula com portas NOT, AND e OR. Simplificar a fórmula antes de desenhar poupa portas, e é aqui que entram os mapas de Karnaugh.

Mapas de Karnaugh

Um mapa de Karnaugh organiza a tabela de verdade num retângulo onde as casas vizinhas (incluindo as bordas opostas, como se o mapa desse a volta) diferem numa só variável. Agrupar os “uns” em blocos retangulares de tamanho potência de 2 revela os termos que se simplificam.

Exemplo próprio: a função “maioria” de três variáveis, F(A,B,C)F(A, B, C) verdadeira quando pelo menos duas entradas são V. Os “uns” estão nas linhas 011011, 101101, 110110 e 111111. No mapa de três variáveis:

  • As casas 011011 e 111111 diferem só em AA e agrupam-se em BCB \land C.
  • As casas 101101 e 111111 diferem só em BB e agrupam-se em ACA \land C.
  • As casas 110110 e 111111 diferem só em CC e agrupam-se em ABA \land B.

Logo F(BC)(AC)(AB)F \equiv (B \land C) \lor (A \land C) \lor (A \land B). Verifica a linha 100100: nenhum dos três termos é V, e de facto só uma entrada é V. Verifica 011011: BCB \land C é V. Cada grupo elimina a variável que muda dentro do grupo, e é essa a regra mecânica: num grupo, ficam só as variáveis constantes.

Provas informais contra provas formais

Nos testes vais alternar entre dois registos. A prova informal é o texto em português com os passos lógicos explícitos, como os exemplos desta página. A prova formal no Fitch é a mesma prova com cada passo numerado e justificado pela regra usada. A estratégia que funciona: escreve primeiro a informal no rascunho, identifica que regra usaste em cada passo e só depois passa para o Fitch. Quem tenta escrever diretamente no Fitch costuma bloquear na escolha da próxima regra, e a informal já contém essa decisão.

Ver o ficheiro no GitHub

À tua maneira

Escolhe como preferes ler.

Aparência
Ajustar cores e largura
Cor de destaque do tema FEUP
Tipo de letra

Álgebra, lógica e uma ideia de cada vez.

As tuas escolhas ficam guardadas neste navegador.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.