Aritmética no Cálculo Lambda
No cálculo lambda, a aritmética é construída a partir da codificação dos números naturais baseada na Teoria dos sucessores de Peano.
Nessa abordagem, os números são definidos como funções que aplicam uma operação (o “sucessor”) um certo número de vezes.
Formalmente, os primeiros números naturais, chamados de numerais de Church, são representados assim:
- Zero:
- Um:
- Dois:
- Três:
E assim por diante.
Aqui:
- representa a função “sucessor” (que será aplicada),
- representa o valor base (zero),
- O número é codificado como a aplicação de exatamente vezes sobre .
Isso significa que cada número natural é uma função de duas variáveis que “conta” quantas vezes aplica antes de retornar .
Intuição por trás dos numerais de Church
Pense em cada número como uma “máquina de repetir”. O zero () não aplica o sucessor nenhuma vez — simplesmente retorna o valor base . O um () aplica uma vez, o dois aplica duas vezes, e assim por diante. É uma forma de contar usando apenas funções, sem depender de símbolos numéricos tradicionais.
Estrutura recursiva
A definição é naturalmente recursiva:
- Começamos com zero: .
- Para cada número , o próximo número é obtido aplicando mais uma vez ao corpo da função anterior.
Por exemplo:
- é o sucessor de ,
- é o sucessor de .
Essa construção reflete a ideia de Peano, onde os números naturais são definidos a partir de zero e da operação de sucessor.
NOTE
Essa codificação é poderosa porque permite realizar operações aritméticas (como soma e multiplicação) definindo funções no cálculo lambda. Por exemplo, podemos criar uma função “sucessor” que transforma em , mas isso é um tópico mais avançado que podemos explorar depois.
Exemplo
Exemplo 1: Representando e interpretando números
Considere o número 2:
Essa função diz: “Pegue uma função e um valor , aplique duas vezes a ”.
Para visualizar, imagine que é uma função “incrementar” e é 0 em um contexto informal:
- seria “1”,
- seria “2”.
Agora, o número 3:
Aqui, é aplicado três vezes, representando o número 3.
Embora o cálculo lambda não use números diretamente, essa codificação captura a essência de contar e pode ser usada como base para operações aritméticas mais complexas.