Eu sei que autores diferentes usam notação diferente para representar a semântica da linguagem de programação. De fato, Guy Steele aborda esse problema em um vídeo interessante .
Gostaria de saber se alguém sabe se o operador líder de torniquete tem um significado bem reconhecido. Por exemplo, eu não entendo o operador principal no início do denominador do seguinte:
Alguém pode me ajudar a entender? Obrigado.
type-theory
denotational-semantics
Jim Newton
fonte
fonte
type-checking
Respostas:
À esquerda da catraca, você encontra o contexto local, uma lista finita de suposições sobre os tipos de variáveis em questão.
Acima, pode ser zero, resultando em . Isso significa que nenhuma suposição sobre variáveis é feita. Geralmente, isto significa que é um termo fechada (sem quaisquer variáveis livres) tendo tipo .⊢ E : T e Tn ⊢e:T e T
Freqüentemente, a regra mencionada é escrita de uma forma mais geral, onde pode haver mais hipóteses do que a mencionada na pergunta.
Aqui, representa qualquer contexto e representa sua extensão obtida anexando a hipótese adicional à lista . É comum exigir que não apareça em , para que a extensão não "entre em conflito" com uma suposição anterior.Γ , x : T 1 x : T 1 Γ x ΓΓ Γ,x:T1 x:T1 Γ x Γ
fonte
Como complemento para as outras respostas, observe que existem três níveis de "implicação" na digitação de derivações. E a mesma observação vale para derivações lógicas, uma vez que existe realmente uma correspondência entre as duas (denominada correspondência de Curry-Howard).
A primeira implicação é a seta que aparece nas fórmulas e corresponde à implicação lógica em uma fórmula (ou um tipo de função para o cálcio).λ
A segunda implicação é materializada pelo símbolo da catraca, e significa "assumindo todas as fórmulas à esquerda, a fórmula à direita vale". Em particular, a regra que você indica diz como se deve provar uma implicação: para provar , é preciso provar B sob a suposição de que A é válido. Em termos do λ- cálculo, para provar que λ x . t possui o tipo A → B , deve-se mostrar que t possui o tipo B , assumindo que x é uma variável do tipo A (consulte a correspondência?).A⇒B B A λ λx.t A→B t B x A
O terceiro nível de implicação é materializado pela barra horizontal e significa "se todas as premissas (elementos no topo) se mantêm, então a conclusão (o elemento na parte inferior) se mantém". Você pode vincular isso à interpretação da regra de digitação para a atração que você deu (consulte a explicação no parágrafo anterior).λ
fonte
Nos sistemas de verificação de tipos, ( ) representa a relação ternária sobre ambientes, expressões e tipos de tipos: ⊢ E n v × E x p × T y p .⊢ ⊢Env×Exp×Typ
No seu exemplo, a expressão é digitado no tipo T 2 wrt. para um ambiente de tipo com uma suposição de tipo mapeando T 1 para alguma variável de tipo xt2 T2 T1 x
Neste contexto, um ambiente de tipo é uma função parcial que atribui tipos de variáveis, geralmente denotada com onde Γ ∈ E N v : V uma r ⇀ T y pΓ Γ∈Env:Var⇀Typ
Observe que, o operador reserva sua funcionalidade independentemente de onde ela aparece, na premissa ou na conclusão da regra.
fonte
Em todas as situações que eu vi, significa que há uma prova de Y assumindo que X é válido. Se X estiver vazio, isso significa que Y é uma tautologia: possui uma prova sem precisar de nenhuma suposição.X⊢Y Y X X Y
fonte