Então, estou lendo um pouco sobre elaboração, particularmente sobre algoritmos baseados no Cálculo de Construção Bicolor, e estou um pouco confuso. Não entendo qual é exatamente o propósito da . Parece ser idêntico a exceto que há uma distinção entre argumentos implícitos e explícitos para funções. Em particular, não vejo como isso permite que você escreva vez de . Se assumirmos um sistema para definições globais, então,
e
.
As regras realmente permitem ? Claro que a sintaxe sim, mas não a vejo na relação de digitação. Estou esquecendo de algo? Estou entendendo o papel de incorretamente?
Além disso, a propriedade da confluência não é perdida? Acho que meu problema é que estou lendo sobre elaboração sem ter lido muito sobre antes disso. O que é um bom artigo que o apresenta e sozinho?
Edit: Para ser mais específico, estou perguntando como é aceito no lugar de ( i d quando as regras para tanto explícita e implícita Π aplicação são sytnax modulo idênticos. Não vejo diferença entre : e | as regras para ambos parecem as mesmas.
Edit: Eu não estou falando sobre o cálculo implícito de Construções, que é uma teoria diferente e tem regras diferentes para explícita 's (geração vs. aplicação.)
Edit: Ok, acho que estou começando a entender isso, mas não vou responder a essa pergunta até ter certeza. Basicamente não digita cheque e, de fato, é apenas elaborado para ( i d imediatamente antes da verificação do tipo ou realizada como uma responsabilidade secundária do algoritmo de verificação do tipo. Essencialmente, esses cálculos implícitos devem ser linguagens de interface (final do usuário), elaboradas nos cálculos usuais (explícitos) ou pelo menos no fragmento explícito dos cálculos implícitos antes que os termos sejam verificados. Se for esse o caso, acho que vejo o quadro geral. alguém pode por favor confirmar isso?
Respostas:
No cálculo implícito de construções que estende os sistemas de tipo puro com um aglutinante e subtipo de tipo de interseção , Alexandre Miquel apresenta os conceitos básicos para o cálculo implícito de construções, que acredito ser sinônimo de cálculo de construções bicolor.
O ponto é (entre outras coisas) ter um cálculo sem a confusão de anotações explícitas de tipo em todos os lugares. A inferência de tipo é (muito provavelmente) indecidível.
Neste cálculo, se tomarmos , em seguida, você pode derivar ⊢ i d : ∀ X : T y p e . X → X simplesmente usando o produto explícito e as regras implícitas do produto em sucessão. Em seguida, a regra para a instanciação do produto implícito permite ⊢ i d : N um t → N um T e assim ⊢ i d 0 : N um teu d= λ x . x
fonte
id !1 0
elaborado paraid Nat 0
. Neste texto, a elaboração é abordada na seção 4.