Я знаю, что разные авторы используют разные обозначения для представления семантики языка программирования. На самом деле Гай Стил решает эту проблему в интересном видео .
Я хотел бы знать, знает ли кто-нибудь, имеет ли ведущий оператор турникета общепризнанное значение. Например, я не понимаю ведущего оператора в начале знаменателя следующего:
Может кто-нибудь помочь мне понять? Благодарю.
type-theory
denotational-semantics
Джим ньютон
источник
источник
type-checking
Ответы:
Слева от турникета вы можете найти локальный контекст, конечный список предположений о типах переменных под рукой.
Выше, может быть равно нулю, что приводит к . Это означает, что не делается никаких предположений о переменных. Как правило, это означает , что является закрытым термином (без каких - либо свободных переменных) , имеющий тип .⊢ e : T e Tn ⊢e:T e T
Часто упомянутое вами правило написано в более общей форме, где может быть больше гипотез, чем упомянуто в вопросе.
Здесь представляет любой контекст, а представляет его расширение, полученное путем добавления дополнительной гипотезы в список . Обычно требуется, чтобы не отображалось в , чтобы расширение не «конфликтовало» с предыдущим предположением.Γ , x : T 1 x : T 1 Γ x ΓΓ Γ,x:T1 x:T1 Γ x Γ
источник
В дополнение к другим ответам, обратите внимание, что существует три уровня «импликации» в типизации дериваций. И то же самое замечание относится и к логическим выводам, поскольку между ними фактически есть соответствие (называемое соответствием Карри-Ховарда).
Первое значение - это стрелка, которая появляется в формулах, и соответствует логическому значению в формуле (или типу функции для -calculus).λ
Второе значение материализовано символом турникета и означает «принимая каждую формулу слева, формула справа имеет место». В частности, правило, которое вы даете, говорит о том, как следует доказать импликацию: чтобы доказать , нужно доказать при условии, что выполнено. В терминах -calculus, чтобы доказать, что имеет тип , нужно показать, что имеет тип , предполагая, что является переменной типа (см. Соответствие?).A⇒B B A λ λx.t A→B t B x A
Третий уровень импликации материализуется горизонтальной чертой и означает «если выполняется каждая посылка (элементы сверху), то справедливо заключение (элемент снизу)». Вы можете связать это с интерпретацией правила набора для -abstraction, которое вы дали (см. Объяснение в предыдущем абзаце).λ
источник
В системах проверки типов ( ) представляет троичное отношение над средами типов, выражениями и типами: .⊢ ⊢Env×Exp×Typ
В вашем примере выражение набрано с типом относительно. в среду типа, имеющую допущение типа, отображающее в некоторую переменную типаt2 T2 T1 x
В этом контексте среда типов - это частичная функция, которая присваивает типы переменным, обычно обозначается как гдеΓ Γ∈Env:Var⇀Typ
Обратите внимание, что оператор резервирует свои функциональные возможности независимо от того, где он появляется, либо в предпосылке, либо в заключении правила.
источник
В каждой ситуации, которую я видел, означает, что существует доказательство того, что предполагает, что выполнено. Если пусто, это означает, что тавтология: у нее есть доказательства, не требующие каких-либо предположений.X⊢Y Y X X Y
источник