Métodos de prova
Cinco rotas para o mesmo destino — e por que a escolha importa.
Dois alunos recebem o mesmo enunciado: demonstrar que se é par, então é par. O primeiro diz: "Vou assumir que é par e que é ímpar, e chegar a uma contradição." O segundo diz: "Vou assumir que é ímpar e mostrar que é ímpar." Ambos chegam a uma prova correta — mas por rotas formalmente distintas. A diferença não é estilística. Uma tem um alvo específico desde a primeira linha; a outra, não.
Cada rota tem um nome, uma condição de uso, e uma mesma raiz: todas são instâncias das regras de inferência sobre os conectivos , e .
§1. O que é uma prova
Uma prova é uma derivação: uma sequência de proposições onde cada linha segue das anteriores por uma regra de inferência, ou é uma hipótese assumida explicitamente e identificada como tal. Aristóteles formalizou o silogismo; os estoicos enumeraram cinco regras básicas. Em 1934, Gentzen e — independentemente — Jaśkowski sistematizaram o que hoje chamamos dedução natural.
Na dedução natural, cada conectivo tem um par de regras:
- Regra de introdução — como construir uma proposição com esse conectivo.
- Regra de eliminação — como usar uma proposição com esse conectivo.
Prova condicional, contrapositiva, redução ao absurdo e análise de casos são instâncias dessas regras aplicadas a , , e .
§2. Prova condicional
A regra mais usada em toda a matemática. Para provar :
Assuma . Derive . A condicional está demonstrada.
Em dedução natural, essa é a regra -Introdução. A hipótese fica disponível dentro do bloco de prova e é descarregada na conclusão: ela deixa de ser um pressuposto solto e passa a ser o antecedente da condicional provada.
Exemplo. Se é par, então é par.
Assuma par. Por definição, para algum inteiro . Então:
Logo é par.
O símbolo — o tombstone de Paul Halmos (1973) — marca o fim de uma prova. Substitui o latino Q.E.D. (quod erat demonstrandum).
A estrutura é direta: a hipótese entra, a conclusão sai. No registro computacional, isso é uma função — e não coincidentemente. Uma prova de é exatamente uma função que, dado um termo do tipo , retorna um termo do tipo :
def prova_par_implica_quadrado_par(n: int) -> int:
# hipótese: n é par, i.e., n = 2k para algum k
k = n // 2
return 4 * k * k # n² = 2(2k²), logo parErro frequente. Assumir o que se quer provar. "Assuma que é par. Então é par. Logo par implica par." Isso é petição de princípio — a conclusão foi usada como hipótese disfarçada.
§3. Análise de casos
Quando a informação disponível tem a forma , a única rota é tratar cada alternativa em separado. A regra -Eliminação:
Se , e segue de , e segue de , então .
Os dois ramos precisam convergir para a mesma conclusão . Não é possível concluir coisas diferentes em cada caso — a disjunção não revela qual alternativa é verdadeira, apenas que pelo menos uma é.
Exemplo. Para todo inteiro , .
Todo inteiro é não-negativo ou negativo: ou .
- Caso 1: . Então .
- Caso 2: . Então , e .
Em ambos os casos, .
A disjunção usada não precisa estar na hipótese original. É possível introduzir o terceiro excluído a qualquer momento — ele é uma tautologia — e dividir a prova nos dois casos. Essa técnica aparece em provas que tratam par e ímpar como casos separados sem que o enunciado mencione paridade.
No registro computacional, -Eliminação é um match sobre um tipo soma:
from typing import Union
def prova_usando_P_ou_Q(hipotese: Union[P, Q]) -> R:
match hipotese:
case P():
return prova_R_de_P(hipotese)
case Q():
return prova_R_de_Q(hipotese)Erro frequente. Verificar apenas um dos casos. Se fosse demonstrado somente para , a prova estaria incompleta — o caso permaneceria aberto.
§4. Contrapositiva
é logicamente equivalente a . Isso é uma tautologia:
| V | V | V | V |
| V | F | F | F |
| F | V | V | V |
| F | F | V | V |
Quando provar a direção original é difícil, pode ser mais fácil provar a contrapositiva. O método tem um alvo específico: assuma , derive .
Exemplo. Se é par, então é par.
Prove a contrapositiva equivalente: se é ímpar, então é ímpar.
Assuma ímpar. Então para algum inteiro . Assim:
Logo é ímpar.
A prova pela contrapositiva é estruturalmente uma prova condicional — assume a hipótese e deriva diretamente. O que muda é apenas qual condicional escolhemos provar.
§5. Redução ao absurdo
Para provar :
Assuma . Derive uma contradição. Conclua .
Uma contradição é um par de proposições e simultaneamente deriváveis. O símbolo — bottom, lido falso ou absurdo — é a proposição falsa em todo caso: o piso abaixo de todas as proposições, oposto da tautologia . Formalmente, não tem regra de introdução — nada o constrói diretamente. Tem apenas uma regra de eliminação:
Definição
Ex falso quodlibet — de , qualquer proposição segue.
É por isso que uma contradição destrói a prova: dela, tudo e o contrário de tudo são deriváveis.
Exemplo. Não existe inteiro maior que todos os outros inteiros.
Suponha, para contradição, que existe tal inteiro . Considere . Por definição de adição em , . Mas era, por hipótese, maior que todo inteiro — inclusive . Contradição. Logo não existe tal .
O alvo é não-específico. Ao assumir , não sabemos de antemão qual contradição vai aparecer. Qualquer e servem. Isso dá liberdade — mas também menos direção do que a contrapositiva. Quando a prova começa com "suponha que é par e é ímpar", não está claro imediatamente onde a contradição vai surgir.
Diferença com a contrapositiva — em resumo. Para provar :
- Contrapositiva: assuma ; derive . Alvo fixo.
- Redução ao absurdo: assuma ; derive qualquer . Alvo livre.
A contrapositiva é sempre uma prova direta na direção invertida. A redução ao absurdo é uma prova indireta: não construímos — eliminamos .
Nota sobre a lógica clássica. Na forma plena — assumir , derivar , concluir — a redução ao absurdo é uma regra clássica, equivalente ao terceiro excluído e à dupla negação. A lógica intuicionista admite introdução de negação (assumir , derivar , concluir ) mas rejeita a versão que elimina uma negação. Ver lógicas não-clássicas.
§6. A escolha do método depende da forma do problema
| Método | Hipótese assumida | O que se deriva | Alvo |
|---|---|---|---|
| Prova condicional | Específico: | ||
| Análise de casos | em cada ramo | Específico: (dois caminhos) | |
| Contrapositiva | Específico: | ||
| Redução ao absurdo | qualquer | Livre: qualquer contradição |
A escolha do método depende da forma da proposição a provar e da informação disponível:
- Se a conclusão é uma condicional e a rota direta é clara: prova condicional.
- Se negar a conclusão fornece informação útil que facilita a derivação: contrapositiva.
- Se não há rota direta visível e assumir o contrário produz tensão com o que já se sabe: redução ao absurdo.
- Se a hipótese disponível é uma disjunção, ou a prova exige separar casos: análise de casos.
Esses métodos se compõem. A prova da irracionalidade de usa redução ao absurdo como moldura e prova condicional internamente. Uma prova de paridade usa análise de casos para separar pares e ímpares e prova condicional dentro de cada ramo.
§7. Registro computacional
O isomorfismo de Curry-Howard, já visto em lógica proposicional e lógica de predicados, vale aqui apenas para a lógica intuicionista. A redução ao absurdo clássica não tem análogo direto.
| Regra lógica | Construção computacional |
|---|---|
| (prova condicional) | abstração lambda: lambda p: ... |
| (modus ponens) | aplicação de função: f(p) |
| (análise de casos) | match/case sobre tipo soma |
| (introdução de negação, intuicionista) | função de para Never |
| (ex falso) | raise / assert False — nunca retorna |
| (redução clássica) | call/cc — sem equivalente em Python |
from typing import Never
# ex falso quodlibet: de ⊥, qualquer coisa
def ex_falso(absurdo: Never) -> object:
raise AssertionError("nunca alcançado")
# análise de casos sobre P | Q
def por_casos(hipotese: P | Q) -> R:
match hipotese:
case P():
return prova_de_P(hipotese)
case Q():
return prova_de_Q(hipotese)A lógica intuicionista é a lógica da computação: cada prova é um programa, cada proposição um tipo, cada derivação um termo que pode ser executado. A lógica clássica estende isso com um operador de controle — mas o preço é perder a correspondência direta entre provar e computar.
Esses quatro métodos — prova condicional, análise de casos, contrapositiva, redução ao absurdo — são os instrumentos com que toda a matemática que segue é construída. O próximo passo é ver esses instrumentos em ação nos módulos de conjuntos e funções, onde as provas deixam de ser exercícios e passam a ser o tecido das definições.