Hierarquia de Ackerman para recursão primitiva de ordem superior no Sistema T

8

Gödel define em seu Sistema T recursividade primitiva sobre tipos mais altos. Encontrei notas de Girard, onde ele explica a implementação do Sistema T em cima do cálculo lambda simplesmente digitado. Na página 50, ele menciona que, quando usamos mais tipos no recursor, obtemos um poder mais expressivo com o sistema.

Não entendo exatamente como isso acontece. É possível criar uma espécie de hierarquia de Ackermann com a recursão primitiva de ordem superior, ou seja, uma hierarquia de funções cada vez mais rápidas, onde cada função é expressável no Sistema T, mas a diagonal não? Acho que sim, mas a construção não me parece evidente e eu estaria interessado em ver como alguém a construiria ou receberia indicações para a literatura.

Estou atrás de algo concreto. Estou ciente do argumento diagonal geral que comprova a existência de uma função que não está em T, mas gostaria de ver como alguém realmente "avançaria na hierarquia de tipos".

Gilles 'SO- parar de ser mau'
fonte
2
Essa é uma boa pergunta. Aposto que a hierarquia segue a classificação do tipo em que a recursão acontece. Quase vale a pena escrever. Voltarei aqui se tiver tempo para fazê-lo.
Andrej Bauer
@AndrejBauer Eu estive pensando sobre isso e acho que seria possível construir novos iteradores com níveis mais altos na hierarquia de tipos e implementar uma hierarquia de rápido crescimento sob . Talvez os níveis de tipo correspondam (com algum deslocamento) à altura da torre dos expoentes em na hierarquia, mas não fui capaz de extrair uma prova (..yet). fϵ0ωω...
A propósito, como você visualiza o próximo nível de recursão após a recursão primitiva? Se estiver em um tipo mais alto, você faria uma recursão geral ativa (para que não terminemos) ou algum tipo de recursão que ainda mantém as coisas terminando (nesse caso, qual seria)?
Andrej Bauer 22/01
@AndrejBauer Acredito que isso possa ser abordado na definição de iteradores. (Estou usando funções teóricas dos números em vez de cálculo lambda.) Por exemplo, , e definindo , (S é sucessor) em que , . Agora deve ser comparável a . Chegar a para parece factível, mas parece desafiador. Depois de chegar aI(f,0)=f(1)I(f,n+1)=f(I(f,n))g(0)=Sg(n)=I(g(n1))g:N×NNNNf:NNh(n)=g(n)(n)fωfωnnNfωωfωωEu esperaria que as coisas se esclarecessem.
Seus exemplos e ainda estão no fragmento System T. Ig
Andrej Bauer 22/01

Respostas:

1

(Essa é uma resposta muito parcial, abordando apenas o primeiro ponto, e não a questão principal sobre a hierarquia.)

Eu não tenho uma prova para apontar para você, mas a idéia é que um único recursor de primeira ordem em naturais como

rec:(natnat)natnatnatrec fzn=f(f(f(z)))(n times f)

seria muito menos poderoso do que ter o esquema de recursão completo (primitivo)

recU:(UU)UnatU

uma vez que este se assemelha mais ou menos um termo polimórfica no Sistema F, que pode ser usado em muitos tipos .U

De fato, o básico apenas nos dá acesso ao esquema de recursão primitiva de primeira ordem, como podemos encontrar em um livro de teoria da computabilidade / recursão. Com apenas isso, sabemos que funções como a de Ackermann não são definíveis. (Bem, isso não é tão óbvio, já que aqui também temos lambdas de ordem superior, é apenas a recursão que é restrita. Mas o ponto deve permanecer assim mesmo, eu acho.)rec

Com o esquema , podemos escolher , o que nos permite definir a função de Ackermann, como mostra Girard no livro mencionado pelo OP. Portanto, o esquema é estritamente mais poderoso.recUU=natnat

chi
fonte
1

Essa é uma pergunta interessante, cuja resposta não é absolutamente trivial.

Darei a resposta curta primeiro: existe uma hierarquia de sistemas, chame-os de , onde os únicos recursores permitidos são com a ordem de , em que a ordem de um tipo é definida como :TkrecUUk

ord(nat)=0
ord(UV)=max(ord(V),ord(U)+1)

Então o teorema é:

Teorema : para cada , existe um termo , de modo quektk:natnat

  • Tktk:natnat

  • Tk1tk:natnat

tk cresce mais rápido (como uma função de ) do que qualquer função definível em , com .NNTll<k

Observe que .T=kTk

Como primeiro passo, provavelmente é útil observar que a função Ackermann pode ser definida assim (como sugerido pela resposta de chi ): modulo um erro da minha parte.

ack(n,m)=recnatnat(λf.recnat f 0 m) (λp.S p) n

Isso realmente sugere que tinha "poder" adicional.recnatnat


Mas como subimos a torre até arbitrário ?Tk

O truque é considerar uma correspondência tripla entre:

1) Ordinais abaixoε0

2) Fragmentos de da aritmética de Heyting, em que a indução é restrita a declarações com menos de alternações de quantificadores.HAkk

3) Funções definíveis emTk

Para cada ordinal que a torre tem altura , é possível considerar na aritmética de Heyting uma prova de que esse ordinal é bem fundamentado, e extrair dele um termo tipificável no sistema que corresponde à função na hierarquia Grzegorczyk .λk=ωωωktkTkgλk

Esse termo não pode ser bem digitado em devido à correspondência descrita acima, e o fato de que não prova a fundamentação de .Tk1HAk1λk

Mentiras e referências :

A correspondência entre , e não é tão limpa quanto sugeri, deve haver realmente , e , cada um relacionado por alguma constante concreta.TkHAkλkkkk

Uma construção explícita para o ao longo do caminho descrito acima é dada por Ulrich Berger na Extração de Programas da Prova de Indução de Gentzen até tkε0

Receio não ter uma referência para a correspondência tripla melhor do que Provas e Tipos , embora eu ficaria muito feliz em saber de uma.

cody
fonte