Правило типа

редактировать

В теории типа, правило типа является правилом вывода, который описывает, как система типа присваивает тип к синтаксической конструкции. Эти правила могут быть применены к системе типа, чтобы определить, является ли программа хорошо набирается и какие выражения имеют. Прототипичный пример использования правил типа в определении логического вывода типа в простого типизированного лямбда - исчисления, которое является внутренним языком в декартовых замкнутых категорий.

Обозначение

Выражение типа записывается как. Среда ввода записывается как. Обозначение для вывода является обычным для секвенций и правил вывода и имеет следующий общий вид е {\ displaystyle e} τ {\ Displaystyle \ тау} е : τ {\ Displaystyle е \!: \! \ тау} Γ {\ displaystyle \ Gamma}

Γ 1 е 1 : τ 1 Γ п е п : τ п Γ е : τ {\ displaystyle {\ frac {\ Gamma _ {1} \ vdash e_ {1} \!: \! \ tau _ {1} \ quad \ cdots \ quad \ Gamma _ {n} \ vdash e_ {n} \!: \! \ tau _ {n}} {\ Gamma \ vdash e \!: \! \ tau}}}

Секвенции над линией - это посылки, которые должны быть выполнены для применения правила, дающего вывод: секвенции ниже линии. Это можно прочесть так: если выражение имеет тип в среде для всех, то выражение будет иметь среду и тип е я {\ displaystyle e_ {i}} τ я {\ Displaystyle \ тау _ {я}} Γ я {\ displaystyle \ Gamma _ {i}} я знак равно 1.. п {\ displaystyle i = 1..n} е {\ displaystyle e} Γ {\ displaystyle \ Gamma} τ {\ Displaystyle \ тау}.

Например, простой язык для выполнения арифметических вычислений действительных чисел может иметь следующие правила:

Γ е 1 : р е а л Γ е 2 : р е а л Γ е 1 + е 2 : р е а л Γ е 1 : я п т е г е р Γ е 2 : я п т е г е р Γ е 1 + е 2 : я п т е г е р {\ displaystyle {\ frac {\ Gamma \ vdash e_ {1} \!: \! real \ quad \ Gamma \ vdash e_ {2} \!: \! real} {\ Gamma \ vdash e_ {1} + e_ { 2} \!: \! Real}} \ qquad {\ frac {\ Gamma \ vdash e_ {1} \!: \! Integer \ quad \ Gamma \ vdash e_ {2}: integer} {\ Gamma \ vdash e_ { 1} + e_ {2} \!: \! Integer}} \ qquad \ cdots}

Правило типа может не иметь предпосылок, и обычно в этих случаях строка опускается. Правило типа также может изменять среду, добавляя новые переменные в предыдущую среду; например, объявление может иметь следующее правило типа, в которое добавляется новая переменная с типом: я d {\ displaystyle id} τ {\ displaystyle \ tau '} Γ {\ displaystyle \ Gamma}

Γ е : τ Γ , я d : τ е : τ Γ пусть id =  е  в  е  конец : τ {\ displaystyle {\ frac {\ Gamma \ vdash e '\!: \! \ tau' \ quad \ Gamma, id \!: \! \ tau '\ vdash e \!: \! \ tau} {\ Gamma \ vdash {\ text {let id =}} e '{\ text {in}} e {\ text {end}}: \! \ tau}}}

Здесь синтаксис выражения let аналогичен синтаксису Standard ML. Таким образом, правила типов можно использовать для получения типов составных выражений, как при естественном выводе.

Смотрите также
дальнейшее чтение
Последняя правка сделана 2023-04-13 05:19:10
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте