- A aritmética de Peano (PA) consegue expressar processos mecânicos de computação, portanto é possível provar em PA a extinção de toda sequência individual de Goodstein
- Por meio da forma normal de Cantor e da notação hereditária de ordinais, é possível expressar sequências de Goodstein e seu decrescimento, o que torna possível construir provas de comprimento finito
- Por meio de indução (indução forte/indução transfinita), é possível estender as provas separadamente até ordinais de certa ordem
- A PA pode provar, para todo número natural n, que “G(n) chega a 0”, mas não é possível uma prova total do teorema de Goodstein inteiro (para todo n)
- A PA é suficiente para implementar a codificação de computação, estruturas de dados (List, Pair etc.) e até da própria linguagem de programação (Lisp), além da codificação do próprio processo de prova
Introdução e contexto do problema
- Este texto descreve que a aritmética de Peano (PA) pode provar que a sequência de Goodstein “para cada n chega a 0 (G(n) terminates)”
- Isso pode parecer óbvio para lógicos, mas é explicado da perspectiva da codificação de computação para que programadores consigam entender
- Para cada caso de sequência de Goodstein, é possível construir uma rotina concreta de prova dentro da PA
Ordinals (números ordinais) e sequências de Goodstein
- Os ordinais (Sets as Ordinals) são gerados no estilo de Von Neumann
- 0 é o conjunto vazio, 1 é {0}, 2 é {0,1}, ω é {0,1,2,…}, ω+1 é {0,1,2,…,ω} etc., com a ordem bem definida
- A sequência de Goodstein é descrita por meio de notação hereditária em base usando a forma normal de Cantor
- Ex.: ω^ω é ((1,ω)), isto é, ((1,(1,1)))
- A ordem < é determinada por comparação lexicográfica dos ordinais/coefs de cada termo
Indução e indução transfinita
- Indução na aritmética de Peano: se vale para 0 e se vale para n→n+1, então vale para todos os números naturais
- Indução forte também pode ser provada em PA
- Indução transfinita: em ZFC etc., ela pode ser estendida a ordinais infinitos e aplicada a números escritos na forma normal de Cantor
- Teorema 1: uma sequência decrescente na forma normal de Cantor é sempre finita
- Teorema 2: é possível usar indução transfinita para números na forma normal de Cantor
Indução transfinita em PA e comprimento da prova das sequências de Goodstein
- A PA consegue gerar uma prova da extinção da sequência de Goodstein para qualquer n
- É possível construir a prova de acordo com a altura da torre m=O(log* n) (logaritmo iterado) da forma normal de Cantor
- Combinando m provas por etapa, o comprimento total da prova é O(m^2), ou pode ser reduzido para O(m log m) com a introdução de uma notação especial (ω[m])
- No entanto, uma prova do teorema de Goodstein completo (para todo n) é impossível em PA (não é possível indução transfinita até ε0)
- Se isso fosse possível, também seria possível provar a consistência da própria PA, o que entraria em conflito com a segunda incompletude de Gödel
Codificação de programas e estruturas de dados em PA
- A PA consegue codificar suficientemente computação/programas/estruturas de dados (números, pares, listas e qualquer outra estrutura)
- É possível implementar várias funcionalidades das seguintes formas:
- lógica e operações básicas (+, *, pow, //, %, min, max etc.)
- pattern matching e desvio condicional (if, cond etc.)
- codificar um número como dois números (par) e expandir repetidamente de par para lista e para estruturas mais complexas (listas recursivas, árvores, texto etc.)
- Com essa codificação de estruturas de dados, é possível construir até mesmo um interpretador para máquina virtual/linguagem de programação arbitrária (como Lisp)
Bootstrap para Lisp e codificação
- Usando Lisp como exemplo, o texto explica como implementar operações numéricas e lógicas básicas, estruturas de dados e um interpretador/interpreter de linguagem de programação
- Toda a estrutura do Lisp (mapeamento de comandos/argumentos, formas especiais, macro etc.) pode ser implementada em PA por combinações adequadas de funções
- Indo além, é possível codificar e implementar simbolicamente em PA o próprio processo de prova em PA, procedimentos de prova lógica e estruturas autorreferenciais
Codificação da própria lógica dentro de PA
- Em lógica matemática, o processo de prova da lógica de primeira ordem pode ser codificado como dados numéricos da PA
- Cada etapa da prova/proposição/regra de inferência/verificação de prova válida pode ser reconhecida e processada como uma série de funções numéricas e processamento de listas
- Essa codificação metateórica e autorreferencial leva às provas da incompletude de Gödel e do problema da parada
Conclusão
- Computação, estruturas de dados, programas e até processos de prova lógica podem ser suficientemente codificados, provados e interpretados em PA
- Portanto, qualquer sequência de Goodstein (para n, a extinção de G(n)) pode ser provada concretamente dentro da PA
- No entanto, uma prova de que “a PA prova o teorema de Goodstein dentro da própria PA” para o teorema inteiro (todo n) é impossível devido aos limites da lógica
- Do ponto de vista do programador, a PA é uma base lógica completa capaz de codificar a própria computação
1 comentários
Comentários no Hacker News
(defun not (x) (if x false true)). Quando alguém começa a usar parênteses, eu instintivamente verifico se eles estão corretamente fechados. Depois, quando o texto menciona que "é fácil programar um computador para verificar se os parênteses estão balanceados", eu ri alto. Esse tipo de piada foi muito engraçado, e também achei marcante o comentário; After a while, you stop noticing that stack of closing parens.na seção "Basic Number Theory". Fazia tempo que eu não reencontrava Lisp, e o texto foi realmente divertido.\omega.epsilon_0. EDIT: talvez até só "PA é consistente" já bastasse?Con(PA), nem qualquer fórmula universalmente quantificada. Veja esta resposta relacionada no Math StackExchange. Quanto à primeira pergunta, fiquei curioso sobre como exatamente se codifica ômega-consistência como uma fórmula de PA; isso não me veio imediatamente à cabeça.Té ômega-consistente, isso significa queT + RFN_T +o conjunto de todas as fórmulas verdadeiras é consistente, e isso pode ser interpretado como equivalente a dizer queT + RFN_Té verdadeiro.PA + "PA é consistente"permitiria que existisse um modelo em que o teorema de Goodstein fosse verdadeiro nos números naturais padrão, mas ao mesmo tempo um modelo em que ele fosse falso para algum inteiro não padrãoN. Acho que a afirmação mais forte de ômega-consistência excluiria esses casos.PA +indução transfinita atéepsilon_0prova a própria PA. Eu achava quePA + "PA é consistente"já permitiria provar indução transfinita atéepsilon_0.PA + "PA é consistente"não basta. Como o ChatGPT aparentemente já devorou muitos livros de lógica, dá vontade de confiar quando ele diz isso.X. O ponto importante não é a existência de modelos não padrão, e sim o fato de que o modelo padrão dos números naturais é um modelo de PA. Portanto, se "PA prova que prova X", então isso efetivamente gera uma prova correspondente a um número natural finito padrão, e usando esse número é possível construir, dentro da própria PA, uma prova real deX.forall n, G(n)" e "PA provaforall n, Provable(G(n))". Não sou muito forte em lógica, então, se alguém puder explicar concretamente por que provarforall n, Provable(P(n))não permite provarProvable(forall n, P(n)), eu agradeceria.will-returneopposite-return, o que coincide com a prova padrão do problema da parada. Se você considerar o casoopposite-return(opposite-return, opposite-return), então, se a PA provar queopposite-returnretorna, ela também prova que na verdade não retorna; e, se provar que não retorna, prova que retorna. Se a PA adotasse uma afirmação mais forte do tipo "tudo o que é demonstrável é de fato demonstrável", isso equivaleria à segunda incompletude de Gödel e significaria que a PA é inconsistente. Portanto, é indispensável distinguir entre "PA prova" e "PA prova que prova".Natfeita comzero/succ(como se vê em Lean ou Rocq). A pessoa ficou se perguntando: "isso por si só basta?", "é preciso a aritmética de Peano?", "existe algo mais primitivo do que tipos de dados indutivos?" e coisas assim. Isso me fez pensar que é bom lembrar com frequência que a aritmética de Peano não deve ser tratada como algo essencialmente óbvio; ela é apenas um projeto possível.Π,Σ,=,Ω).