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.