Em um tópico recente na lista de discussão da Agda, surgiu a questão das leis , na qual Peter Hancock fez comentários instigantes .
Meu entendimento é que leis vêm com tipos negativos, ie. conectivos cujas regras de introdução são invertíveis. Para desabilitar para funções, Hank sugere o uso de um eliminador personalizado, com divisão de diversão , em vez da regra usual do aplicativo. Eu gostaria de entender a observação de Hank em termos de polaridades.
Por exemplo, há duas apresentações -types. Existe o eliminador de divisão tradicional Martin-Löf , em um estilo positivo:
E há a versão negativa:
Esta última apresentação facilita a obtenção de para pares, ie. para qualquer par (onde == representa a igualdade de definição). Em termos de provabilidade, essa diferença não importa: intuicionisticamente, você pode implementar projeções com divisão ou o contrário.( π 0 p , π 1 p ) = = p p
Agora, os tipos são geralmente (e sem controvérsia, acredito) tomados negativamente:
O que nos fornece para funções: .λ x . f x = = f
No entanto, nesse e-mail, Hank lembra do eliminador de divisões simples (Programação na teoria do tipo ML, [http://www.cse.chalmers.se/research/group/logic/book/], p.56). É descrito na estrutura lógica por:
Curiosamente, Nordstrom et al. motive esta definição dizendo que "[esta] forma não canônica alternativa se baseia no princípio da indução estrutural". Há um forte cheiro de positividade nessa declaração: as funções seriam 'definidas' pelo construtor .
No entanto, não consigo definir uma apresentação satisfatória dessa regra na dedução natural (ou, melhor ainda, no cálculo sequencial). O (ab) uso da estrutura lógica para introduzir parece crucial aqui.
Então, é divertida uma apresentação positiva do tipo ? Também temos algo semelhante no cálculo sequencial (não dependente)? Como seria?
Quão comum / curioso é isso para os teóricos da prova em campo?