Por que os construtivistas não parecem se importar muito com a chamada / cc


15

Há pouco tempo, alguém primeiro me disse que call / cc podia permitir objetos de prova para provas clássicas, implementando a lei de Peirce. Eu pensei um pouco sobre o assunto recentemente e não consigo encontrar uma falha nele. No entanto, eu realmente não consigo ver mais ninguém falando sobre isso. Parece vazio de discussão. O que da?

Parece-me que se você tem uma construção como f:¬(¬P) em algum contexto, então uma das duas coisas é verdadeira. Você tem acesso a uma instância alguma forma no contexto atual, caso em que o fluxo de controle nunca chegaria aqui e estamos seguros de assumir qualquer OR, considerando quef:¬(¬P) significa f:(P) a única maneira pela qual f pode retornar é construindo uma instância de P e aplicando-a em dois argumentos (uma instância de P). Nesse caso, já havia ALGUM modo de construir uma instância de ; parece razoável que o call / cc retire essa construção para mim. Meu raciocínio aqui parece um pouco suspeito para mim, mas minha confusão ainda permanece. Se call / cc não estiver apenas criando uma instância de P do nada (não vejo como é), então qual é o problema?PP

Alguns termos bem digitados que não contêm chamada / cc não têm formas normais? Existe alguma outra propriedade dessas expressões que as faça suspeitar? Existe alguma razão para que um construtivista não goste de call / cc?



Respostas:


19

A matemática construtiva não é apenas um sistema formal, mas uma compreensão do que é a matemática. Ou, em outras palavras, nem todo tipo de semântica é aceito por um matemático construtivo.

Para um matemático construtivo, call/ccparece trapaça. Considere como testemunhamos usando :p¬pcall/cc

  1. Fornecemos uma função que supostamente prova ¬ p . Na realidade, f é um saco de truques.f¬pf
  2. Se alguém alguma vez aplica a uma prova de p , então f libera para reverter o tempo e, com uma prova de p na mão, muda de idéia sobre p ¬ p : desta vez alegando que é uma prova de p .fpfcall/ccpp¬pp

O entendimento construtivo da disjunção é a decidibilidade algorítmica , mas o acima exposto dificilmente toma decisões. Como teste, um matemático construtivo pode perguntar como call/ccajuda a provar que toda máquina de Turing para ou diverge. E qual é o programa que testemunha esse fato? (Deve ser o Oracle Halting.)


Ah !! Eu acho que é o tipo de coisa que eu estava procurando.
Jake

9

Como você observa, existe uma possível interpretação construtiva da lógica clássica nesse sentido. O fato de a lógica clássica ser equiconsistente à lógica intuicionista (por exemplo, Heyting Aritmética) já é conhecido há algum tempo (já em 1933, por exemplo, Godel ) usando uma tradução em dupla negação.

Por um argumento mais sofisticado, pode ser demonstrado que o Peano Arithmetic é conservador sobre o HA para declarações de . A essência do resultado é que as provas clássicas de Π 0 2 envolvendo c uma l l / c c têm o mesmo conteúdo computacional como uma indicação sem que construo (por um CPS transformação).Π20Π20call/cc

No entanto, isto é não é verdade para as demonstrações acima : declarações em Σ 0 3 , demonstráveis em PA, não pode ter uma forma passível normal a extração de uma testemunha! Os cientistas da computação podem não se importar com a computação com provas nesse nível, mas é um pouco inconveniente para considerações filosóficas : provamos a existência de alguma coisa ou não?Π20Σ30

Eu acho que isso resume por que "fixação" lógica não-construtiva através da adição de pode ser insatisfatória.call/cc

Dito isto, há muito trabalho explorando os aspectos computacionais da computação dentro da estrutura "clássica de Curry-Howard", por exemplo, a Krivine Machine, o cálculo Parigot ( ) e muitos outros. Veja aqui uma visão geral.λμ¯μ~

Π20

Edit: Uma pergunta muito relevante sobre mathoverflow aparece aqui: /mathpro/29577/solved-sequent-calculus-as-programming-language


1
Essa equiconsistência é verdadeira construtivamente?
Geoffrey Irving

3
@GeoffreyIrving: sim, é possível "inicializar" completamente a crença na consistência clássica (se não o raciocínio clássico per se ) usando apenas o raciocínio intuicionista. Essa foi a motivação original de Gödel para o¬¬-tradução.
Cody

O que se entende por "pode ​​não ter uma forma normal passível de extrair uma testemunha". Semântica significa apenas que esses termos têm fundo para semântica ou significa algo mais estranho?
Jake

3
@ Jake: os termos ainda têm formas normais, mas possivelmente não os que você esperaria: por exemplo, a prova de UMA¬UMAé inr (fun x -> callcc(...))mesmoUMAtalvez seja verdade.
Cody

Entendi. Obrigado! Ainda estou digerindo partes da sua resposta. Eu não estou muito familiarizado com a hierarquia aritmética, então demorei um pouco mais para processar.
Jake

8

Concordo com a resposta de Andrej e Cody. No entanto, acho que também vale a pena mencionar por que os construtivistas devem se preocupar com os operadores de controle (call / cc).

Esses operadores geralmente estão conectados à lógica clássica porque, quando as pessoas observam suas regras de digitação (Felleisen, Griffin), elas percebem que os tipos têm a forma da Lei de Peirce ou a eliminação da dupla negação (¬¬PP) No entanto, os operadores de controle foram inventados na configuração não tipada da linguagem de programação Scheme. Seu objetivo era poder enriquecer a linguagem de programação: em vez de escrever programas no estilo de passagem de continuação, seria possível escrever programas no estilo direto usando operadores de controle.

Um ganho no uso de operadores de controle na Teoria da Prova é o metodológico: em vez de usar uma tradução com negação dupla e A para extrair programas de provas de Π20 0- Teoremas da aritmética clássica, usaria-se um operador de controle e realizaria a normalização de reescrita direta na prova.

Outro ganho que um construtivista deve se preocupar é que os operadores de controle mostram uma maneira de construir uma extensão da lógica intuicionista de Curry-Howard que ainda é construtiva. Por exemplo, limitando oP da lei de eliminação da dupla negação à Σ10 0-classe de fórmulas, permite ter um operador de controle digitado que pode provar, por exemplo, o princípio de Markov ou o deslocamento de dupla negação . Esses princípios geralmente não são aceitos pelos construtivistas, mas apenas por uma boa razão, pois é sabido que eles não destroem as propriedades Disjunção e Existência quando adicionadas à lógica intuicionista.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.