Qual o papel da predicatividade nas definições indutivas na teoria dos tipos?


16

Muitas vezes queremos definir um objeto acordo com algumas regras de inferência. Estas regras denotar uma função de geração de que, quando ele é monótona, produz um ponto fixo menos . Tomamos para ser a "definição indutiva" de . Além disso, a monotonicidade de nos permite argumentar com o "princípio da indução" para determinar quando um conjunto contém (isto é, quando uma propriedade se apóia universalmente em ).AUFμFA:=μFAFAA

Em Coq, isso corresponde a escrever uma de com termos explícitos de introdução. Embora essa definição denote uma função específica , essa função não é necessariamente monotônica. A Coq, portanto, emprega algumas verificações sintáticas para garantir a "boa formação" da definição. Para alguma aproximação, rejeita ocorrências de em posições negativas nos tipos dos termos de introdução.InductiveAFA

(Se meu entendimento até este ponto for incorreto, corrija-me!)

Primeiro, algumas perguntas no contexto da Coq:

1) A verificação sintática em Coq serve apenas para garantir que a definição de seja predicativa ? (Se sim, a impredicatividade é a única maneira pela qual a definição seria mal definida?) Ou está verificando a monotonicidade? (Correspondentemente, é a não monotonicidade o que pode matá-lo?)A

2) A uma tal ocorrência negativa de implica necessariamente que definição 's é impredicativa / não monótona? Ou a Coq simplesmente não consegue verificar se está bem definida nesse caso?AUMA

E mais geralmente:

3) Qual a relação entre predicatividade de uma definição indutiva e monotonicidade da função geradora dessa definição? Eles são dois lados da mesma moeda? Eles não estão relacionados? Informalmente, qual deles importa mais?

Respostas:


14

Não, neste caso, predicatividade e monotonicidade não estão intimamente relacionadas.

A verificação de positividade em Coq / Adga serve para garantir que você esteja tomando o ponto menos fixo de uma coisa monotônica, aproximadamente.

Veja como pensar em tipos indutivos em termos de redes e operadores monótonos. Lembre-se de que o teorema de Knaster-Tarski diz que, em uma rede completa , todo operador monótono f : L L tem um ponto menos fixo μ ( f ) . Em seguida, podemos pensar nos tipos em uma teoria de tipos como formando uma rede sob provabilidade. Ou seja, digite S está abaixo de T se a verdade de S implica que de T . Agora, o que gostaríamos de fazer é usar um operador monótono F nos tipos e usar Knaster-Tarski para obter uma interpretação do ponto menos fixo desse operador.Lf:LLμ(f)STSTF . μ(F)

No entanto, os tipos na teoria dos tipos não são apenas uma estrutura: eles formam uma categoria. Isto é, dado dois tipos e T , existem potencialmente muitas maneiras para S seja inferior T , com um modo para cada prova e : S T . Portanto, um operador de tipo F também precisa fazer algo sensato nessas provas. A generalização apropriada de monotonicidade é functoriality . Ou seja, queremos que F tenha um operador em tipos e também tenha uma ação em provas, de modo que se e : S T , então F (STSTe:STFFe:ST .F(e):F(S)F(T)

Agora, a funcionalidade é preservada por somas e produtos (ou seja, se e G são endofuncionais em tipos, então F + G e F × G (agindo no sentido horário) também são funcionantes em tipos (supondo que tenhamos somas e produtos em nossa álgebra de No entanto, ele não é preservado pelo espaço de funções, uma vez que o bifuncor exponencial F G é contravariante em seu argumento à esquerda.Portanto, quando você escreve uma definição de tipo indutivo, está definindo um functor para que considere um ponto menos fixo. Para garantir que ele seja realmente um functor, é necessário descartar ocorrências do parâmetro recursivo no lado esquerdo dos espaços de função - daí a verificação de positividade.FGF+GF×GFG

A impredicatividade (no sentido do Sistema F) é geralmente evitada, porque é um princípio que o força a escolher entre a lógica clássica e os modelos da teoria dos conjuntos. Você não pode interpretar tipos como conjuntos na teoria clássica de conjuntos se tiver uma indexação no estilo F. (Veja o famoso "polimorfismo de Reynolds não é teórico-conjunto".)

Categoricamente, a impredicatividade do estilo F diz que a categoria de tipos e termos forma uma pequena categoria completa (ou seja, homs e objetos são conjuntos e existem limites para todos os pequenos diagramas). Classicamente, isso força uma categoria a ser um poset. Muitos construtivistas são construtivos porque querem que seus teoremas se mantenham em mais sistemas do que apenas a lógica clássica e, portanto, não querem provar nada que seja classicamente falso. Portanto, eles desconfiam de polimorfismo impredicativo.

No entanto, o polimorfismo permite dizer muitas condições classicamente "grandes" internamente à sua teoria de tipos - e a positividade é uma delas! Um operador de tipo é funcional, se você pode produzir um termo polimórfico:F

Fmumap:α,β.(αβ)(F(α)F(β))

Vê como isso corresponde à funcionalidade? Na IMO, essa seria uma opção muito boa de ter no Coq, pois permitiria a programação genérica com muito mais facilidade. A natureza sintática da verificação de positividade é um grande obstáculo à programação genérica, e eu ficaria feliz em trocar a possibilidade de axiomas clássicos por programas funcionais mais flexíveis.

EDIT: A pergunta que você está perguntando sobre a diferença entre Prop e Set surge do fato de que os desenvolvedores do Coq querem permitir que você pense nos teoremas do Coq em termos ingênuos da teoria dos conjuntos, se desejar, sem forçar a fazê-lo. Tecnicamente, eles dividem Prop e Set e, em seguida, proíbem que os conjuntos dependam do conteúdo computacional de Prop.

Portanto, você pode interpretar Prop como valores de verdade no ZFC, que são os booleanos true e false. Neste mundo, todas as provas de proposições são iguais e, portanto, obviamente, você não deve poder se ramificar na prova de uma proposição. Portanto, a proibição de conjuntos, dependendo do conteúdo computacional das provas de Prop, é totalmente sensata. Além disso, a rede booleana de 2 elementos é obviamente uma rede completa, portanto deve oferecer suporte à indexação impredicativa, uma vez que existem reuniões arbitrárias com valor definido. A restrição de predicatividade em Conjuntos surge do fato (mencionado acima) de que a indexação no estilo F é degenerada nos modelos clássicos de teoria dos conjuntos.

Coq tem outros modelos (é lógica construtiva!), Mas a questão é que, na prateleira, nunca provará nada pelo qual um matemático clássico ficaria intrigado.


Obrigado pela sua resposta, Neel. Sua definição de "definição indutiva" parece corresponder mais à abordagem "álgebra inicial ": em vez de funções monotônicas (que não dizem nada de provas e conteúdo computacional), nos preocupamos com (a noção mais geral de) functores. Então, em vez de verificar a monotonicidade, Coq está realmente verificando a funcionalidade. No entanto, se predicativity não está em questão, por que Coq distinguir entre o positivo-ocorrência de verificação para objectos definidos em P r O p e aqueles em S e T ou T y p e ? FPropSetType
22411 Scott Stapatrick

Não entendi sua pergunta: Coq odeia o Inductive Blah : Prop := Foo : (Blah -> Blah) -> Blahmesmo que qualquer outra coisa?
Neel Krishnaswami

11
Ah, talvez eu esteja confundindo a verificação de positividade com outra verificação relacionada à impredicatividade. Considere Inductive prop : Prop := prop_intro : Prop -> prop.vs. Inductive set : Set := set_intro: Set -> set.. Por que a distinção se a predicatividade não interessa à definição indutiva?
Scott Kilpatrick

@ ScottKilpatrick: essa é realmente uma verificação diferente e sobre a (im) predicatividade. Tipos Sigma fortes impredicativos permitem codificar o paradoxo de Girard; portanto, um tipo de dados que armazena um membro de algum universo, digamos Type@{i}, deve viver em um universo maior, pelo menos Type@{i+1}.
Blaisorblade 31/03/19

6

Existe uma conexão muito profunda entre definições indutivas e impredicatividade, mas meu entendimento é que, no contexto do que você está falando (im) predicatividade, não é particularmente relevante e o teste é puramente para garantir a monotonicidade, para que a teoria do ponto fixo possa ser aplicado, a saber, que o princípio da indução está bem definido. (Estou disposto a ser corrigido neste ponto.)

A relação entre impredicatividade e definições indutivas é explorada nesta palestra por Coquand. Remonta a alguns resultados dos anos 50 de G. Takeuti que definições impredicativas podem ser reduzidas a definições indutivas. O livro

  • Teoria da Prova de Subsistemas Impredicativos de Análise - Monografias e Livros Didáticos em Ciências Físicas 2 por W. Buchholz, K. Schutte

fornece uma boa análise do tópico, se você puder colocar suas mãos nele. Esses slides fornecem uma visão geral.


4

Apenas para completar a excelente explicação de Neil, a impredicatividade tem um sentido "suave": a definição de conjuntos ou coleções usando uma referência a si mesmas. Nesse sentido:

Inductive Lam : Set :=
| Var : Nat -> Lam
| App : Lam -> Lam -> Lam
| Abs : (Lam -> Lam) -> Lam

é uma definição impredicativa, pois define um tipo indutivo, Lam usando um espaço de função (Lam -> Lam) que se refere à coleção em si. Nessa situação, a impredicatividade é prejudicial : é possível usar o teorema de Cantor para provar False. De fato, esse é o mesmo tipo de impredicatividade que desconta a ingênua teoria dos conjuntos como uma base consistente para a matemática. Portanto, não é permitido no Coq. Outra forma de impredicatividade é permitida, como você sabe:

Definition Unit : Prop := forall X:Prop, X -> X

A definição de Unidade como proposição faz referência à coleção de todas as proposições das quais é membro. No entanto, por razões um tanto obscuras para mim, essa impredicatividade não é prejudicial, pois está presente no ZFC (na forma de compreensão ilimitada ) que não é conhecido por ser inconsistente.

Em conclusão, ocorrências negativas de tipos indutivos nas definições são uma forma de impredicatividade, mas não a normalmente mencionada quando se fala em CoC como uma estrutura impredicativa .


Entendo que você esteja dizendo que o ZFC tem compreensão ilimitada. Mas isso parece errado - math.stackexchange.com/q/24507/79293 . Chlipala discute isso ao discutir -impredicative-setem seu livro: adam.chlipala.net/cpdt/html/Universes.html , e menciona algumas restrições à eliminação, mas isso também é obscuro para mim.
Blaisorblade

11
UMAxBxB

Ah obrigada! Também vejo como a impredicatividade acima corresponde à do ZFC (embora o mapeamento que estou usando seja provavelmente ingênuo). Você pode adicionar o link na resposta?
Blaisorblade 26/05

Infelizmente, isso parece difícil para o Google (ou não conheço as palavras-chave corretas). O que é pior, a Wikipedia e o nLab distinguem entre "compreensão restrita" (no ZFC, en.wikipedia.org/wiki/Axiom_schema_of_specification ) e "separação restrita / limitada" (à qual você vinculou). Consulte ncatlab.org/nlab/show/axiom+of+separation . Mas toda essa terminologia parece um mal-entendido esperando para acontecer - eu costumo raciocinar que "separação ~ compreensão", como você e o autor mathforum.org/kb/message.jspa?messageID=4492130 , também.
Blaisorblade 26/05

Talvez as melhores palavras-chave para esse tipo de discussão sejam "Teoria dos Conjuntos Construtivos", veja, por exemplo , a wikipedia , ou este artigo muito bom de Rathjen.
C26
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.