Что означает ведущий оператор турникета?

12

Я знаю, что разные авторы используют разные обозначения для представления семантики языка программирования. На самом деле Гай Стил решает эту проблему в интересном видео .

Я хотел бы знать, знает ли кто-нибудь, имеет ли ведущий оператор турникета общепризнанное значение. Например, я не понимаю ведущего оператора в начале знаменателя следующего:

x:T1t2:T2λx:T1.t2 : T1T2

Может кто-нибудь помочь мне понять? Благодарю.

Джим ньютон
источник
Связанные
leftaround около
Вау, этот вопрос имеет более 1 000 просмотров, что больше, чем сумма просмотров всех остальных 29 новых вопросов! Как я уже проверял, ни один из тегов «теория типов» и «денотационная семантика» не входит в число первых 50 популярных тегов. Мне любопытно узнать причину этого явления. Без понятия. @DW? У меня есть мета вопрос?
Джон Л.
Если я не ошибаюсь, вы должны переместить оператор турникета ( ), в заключение правила, между и . Я также добавил бы тегλ x : T 1 t 2λx:T1t2type-checking
mchar
3
@ Apass.Jack Это закончилось в Hot Network Questions, поэтому привлекает больше внимания из-за этого.
JAB

Ответы:

20

Слева от турникета вы можете найти локальный контекст, конечный список предположений о типах переменных под рукой.

x1:T1,,xn:Tne:T

Выше, может быть равно нулю, что приводит к . Это означает, что не делается никаких предположений о переменных. Как правило, это означает , что является закрытым термином (без каких - либо свободных переменных) , имеющий тип .e : T e Tne:TeT

Часто упомянутое вами правило написано в более общей форме, где может быть больше гипотез, чем упомянуто в вопросе.

Γ,x:T1t:T2Γ(λx:T1.t):T1T2

Здесь представляет любой контекст, а представляет его расширение, полученное путем добавления дополнительной гипотезы в список . Обычно требуется, чтобы не отображалось в , чтобы расширение не «конфликтовало» с предыдущим предположением.Γ , x : T 1 x : T 1 Γ x ΓΓΓ,x:T1x:T1ΓxΓ

чи
источник
7

В дополнение к другим ответам, обратите внимание, что существует три уровня «импликации» в типизации дериваций. И то же самое замечание относится и к логическим выводам, поскольку между ними фактически есть соответствие (называемое соответствием Карри-Ховарда).

Первое значение - это стрелка, которая появляется в формулах, и соответствует логическому значению в формуле (или типу функции для -calculus).λ

Второе значение материализовано символом турникета и означает «принимая каждую формулу слева, формула справа имеет место». В частности, правило, которое вы даете, говорит о том, как следует доказать импликацию: чтобы доказать , нужно доказать при условии, что выполнено. В терминах -calculus, чтобы доказать, что имеет тип , нужно показать, что имеет тип , предполагая, что является переменной типа (см. Соответствие?).ABBAλλx.tABtBxA

Третий уровень импликации материализуется горизонтальной чертой и означает «если выполняется каждая посылка (элементы сверху), то справедливо заключение (элемент снизу)». Вы можете связать это с интерпретацией правила набора для -abstraction, которое вы дали (см. Объяснение в предыдущем абзаце).λ

Родольф Лепигре
источник
3

В системах проверки типов ( ) представляет троичное отношение над средами типов, выражениями и типами: .Env×Exp×Typ

В вашем примере выражение набрано с типом относительно. в среду типа, имеющую допущение типа, отображающее в некоторую переменную типаt2T2 T1x

В этом контексте среда типов - это частичная функция, которая присваивает типы переменным, обычно обозначается как где ΓΓEnv:VarTyp

Обратите внимание, что оператор резервирует свои функциональные возможности независимо от того, где он появляется, либо в предпосылке, либо в заключении правила.

mchar
источник
-1

В каждой ситуации, которую я видел, означает, что существует доказательство того, что  предполагает, что  выполнено. Если  пусто, это означает, что  тавтология: у нее есть доказательства, не требующие каких-либо предположений.XYYXXY

Дэвид Ричерби
источник
1
но если то, что вы говорите, правда, это странно, потому что именно это и означает горизонтальная полоса, верно? Что если вершина верна, то низ верна. Таким образом, будет означать, что если истинно, то безусловно истинно. XYXY
Джим Ньютон
1
Горизонтальная полоса означает, что вещь на дне является немедленным вычетом из вещи наверху. Хотя я согласен, что в вашем примере выглядит очень странно, что безусловная истина является производной от условной ...
Дэвид Ричерби,
Теория типов не логика. Это, конечно, связано во многих отношениях и (в некоторой степени преднамеренно) использует аналогичные обозначения, но, безусловно, нет никакой априорной связи с отношением доказуемости, и часто также нет апостериорной связи (по крайней мере, с удаленно разумной логикой). Как пишет ответ, в лучшем случае , вводит в заблуждение , поскольку она предполагает , что « » формула , которая практически никогда не бывает в теории типов, например , язык , содержащий формулы , как является обычно не описывается и часто невозможно в стандартной мета-логике, например, для линейного лямбда-исчисления. x:T1(x:T1)(y:T2)
Дерек Элкинс покинул SE
@DerekElkins Это система доказательств, а системы доказательств - логика. - это в точности предложение, а - не что иное, как утверждение, что предложение выполняется, когда выполняется . Тот факт, что дизъюнкции предложений не являются формулами, является просто ограничением синтаксиса логики. x:TΓx:TΓ
Дэвид Ричерби
Это не просто дизъюнкция. Ни одно из , или является формулами. Или вы говорите, что это логика, которая имеет только атомарные суждения? Я упомянул линейную логику в качестве примера. В упорядоченной линейной логике очень легко может быть случай, когда выполняется, а - нет. Каким соединительным соответствуют запятая и которые берут « значения» , и и производят описанное выше поведение? Есть вариант, если мета-логика также является упорядоченной линейной логикой, но тогда мы ничего не объясняем. ( x : A ) ( y : B ) ( x : A ) ( y : B ) x : A , y : B t : C y : B , x : A t : C x : A y : B t : C¬(x:A)(x:A)(y:B)(x:A)(y:B)x:A,y:Bt:Cy:B,x:At:Cx:Ay:Bt:C
Дерек Элкинс покинул SE