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:L→Lμ(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 : S→ TFFe : S→ T .F( E ) : M( 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× GF→ G
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
F m a p :∀α,β.( α → β) → ( 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.
Inductive Blah : Prop := Foo : (Blah -> Blah) -> Blah
mesmo que qualquer outra coisa?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?Type@{i}
, deve viver em um universo maior, pelo menosType@{i+1}
.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
fornece uma boa análise do tópico, se você puder colocar suas mãos nele. Esses slides fornecem uma visão geral.
fonte
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:
é 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:
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 .
fonte
-impredicative-set
em seu livro: adam.chlipala.net/cpdt/html/Universes.html , e menciona algumas restrições à eliminação, mas isso também é obscuro para mim.