Из Википедии, свободной энциклопедии
Перейти к навигацииПерейти к поиску

В математике , логике и информатике система типов - это формальная система, в которой каждый термин имеет «тип», который определяет его значение и операции, которые могут выполняться с ним. Теория типов - это академическое исследование систем типов.

Некоторые теории типов служат альтернативой теории множеств как основе математики . Два известных таких теорий Алонзо Чёрч «s типизированного λ-исчисление и Мартин-Лёф » s интуиционистской теории типа .

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

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

История

Между 1902 и 1908 годами Бертран Рассел предложил различные «теории типов» в ответ на его открытие, что версия наивной теории множеств Готтлоба Фреге поражена парадоксом Рассела . К 1908 году Рассел пришел к «разветвленной» теории типов вместе с « аксиомой сводимости », обе из которых занимали видное место в « Principia Mathematica» Уайтхеда и Рассела.опубликовано между 1910 и 1913 годами. Они попытались разрешить парадокс Рассела, сначала создав иерархию типов, а затем назначив каждый конкретный математический (и, возможно, другой) объект типу. Сущности данного типа создаются исключительно из сущностей тех типов, которые находятся ниже в своей иерархии, что предотвращает присвоение сущности самой себе.

В 1920-х годах Леон Чвистек и Фрэнк П. Рэмси предложили неразветвленную теорию типов, теперь известную как «теория простых типов» или теория простых типов , которая разрушила иерархию типов в более ранней разветвленной теории и как таковая не требовала аксиома сводимости.

Обычно «теория типов» используется, когда эти типы используются в системе перезаписи терминов . Самый известный ранний пример - это просто типизированное лямбда-исчисление Алонзо Чёрча . Теория типов Чёрча [1] помогла формальной системе избежать парадокса Клини – Россера , поразившего исходное нетипизированное лямбда-исчисление. Черч продемонстрировал, что он может служить основой математики, и был назван логикой более высокого порядка .

Некоторые другие теории типа включают Per Martin-LOF «s интуиционистской теории типа , которая была основой используется в некоторых областях конструктивной математики . Тьерри Кокана «сек Исчисление конструкций и ее производные являются основой используется Coq , Постный , и другими. Эта область является областью активных исследований, что демонстрирует теория гомотопического типа .

Основные понятия

Современное представление систем типов в контексте теории типов стало систематизированным с помощью концептуальной основы, введенной Хенком Барендрегтом . [2]

Тип, срок, значение

В системе теории типов термин противопоставляется типу . Например, 4 , 2 + 2 иявляются отдельными терминами с типом nat для натуральных чисел. Традиционно за термином следует двоеточие и его тип, например 2: nat - это означает, что число 2 относится к типу nat . Помимо этого противостояния и синтаксиса, мало что можно сказать о типах в этой общности, но часто они интерпретируются как своего рода набор (не обязательно наборы) значений, которые может оценивать термин. Термы обычно обозначают через e, а типы - через τ . Форма терминов и типов зависит от конкретной системы типов и уточняется некоторым синтаксисом и дополнительными ограничениями корректности .

Среда ввода, назначение типа, оценка типа

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

Правила перезаписи, конвертация, редукция

Теории типов имеют явное вычисление и закодированы в правилах переписывания терминов. Они называются правилами преобразования или, если правило работает только в одном направлении, правилом редукции . Например, и синтаксически разные термины, но первое сводится ко второму. Это сокращение написано. Эти правила также устанавливают соответствующие эквивалентности между терминами, написанными.

Срок сводится к . Сне подлежит дальнейшему сокращению, это называется нормальной формой . Различные системы типизированного лямбда-исчисления, включая просто типизированное лямбда-исчисление , систему F Жан-Ива Жирара и исчисление конструкций Тьерри Коквана, являются строго нормализующими . В таких системах успешная проверка типа подразумевает прекращение срока действия.

Правила типа

На основе суждений и эквивалентностей правила вывода типов могут использоваться для описания того, как система типов присваивает тип синтаксическим конструкциям (терминам), как и в естественном выводе . Чтобы быть значимыми, правила преобразования и типов обычно тесно связаны, например, с помощью свойства сокращения предмета , которое может установить часть надежности системы типов.

Проблемы с решением

Система типа естественным образом связана с проблемами решения о проверке типа , typability и тип обитания . [3]

Проверка типа

Проблема решения проверки типов (сокращенно) является:

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

Разрешимость проверки типов означает, что безопасность типа любого заданного текста программы (исходного кода) может быть проверена.

Типичность

Решение проблемы типизации (сокращенно:) является:

Учитывая срок , решите, существует ли среда типа и тип так что срок можно присвоить тип в типовой среде .

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

Типичность тесно связана с выводом типа . В то время как типизация (как проблема решения) касается существования типа для данного термина, вывод типа (как проблема вычисления) требует вычисления фактического типа.

Тип обитания

Проблема решения типа заселения (сокращенно) является:

Учитывая типовое окружение и тип , решите, существует ли термин которому можно присвоить тип в типовой среде .

Парадокс Жирара показывает, что заселение типов сильно связано с согласованностью системы типов с соответствием Карри – Ховарда. Чтобы такая система была надежной, она должна иметь необитаемые типы.

Противопоставление терминов и типов также может рассматриваться как одно из воплощений и спецификаций . Посредством программного синтеза (вычислительного аналога) размещение типов (см. Ниже) может использоваться для построения (всех или частей) программ из спецификации, представленной в форме информации о типе. [4]

Интерпретации теории типов

Теория типов тесно связана со многими областями активных исследований. В частности, соответствие Карри – Ховарда обеспечивает глубокий изоморфизм между интуиционистской логикой, типизированным лямбда-исчислением и декартово закрытыми категориями.

Интуиционистская логика

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

Теория категорий

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

Отличие от теории множеств

Существует много различных теорий множеств и много разных систем теории типов, поэтому все, что следует ниже, является обобщением.

  • Теория множеств построена на логике. Для этого требуется отдельная система, такая как логика предикатов . В теории типов такие понятия, как «и» и «или», могут быть закодированы как типы в самой теории типов.
  • В теории множеств элемент не ограничен одним множеством. В теории типов термины (как правило) принадлежат только к одному типу. (Там, где будет использоваться подмножество, теория типов имеет тенденцию использовать функцию предиката, которая возвращает истину, если термин входит в подмножество, и возвращает ложь, если значение нет. Объединение двух типов может быть определено как новый тип, называемый суммой типа , который содержит новые термины.)
  • Теория множеств обычно кодирует числа как множества. (0 - это пустое множество, 1 - это набор, содержащий пустое множество, и т. Д. См. Теоретико-множественное определение натуральных чисел .) Теория типов может кодировать числа как функции с использованием кодировки Чёрча или, что более естественно, как индуктивные типы . Индуктивные типы создают новые константы для функции-преемника и нуля, очень напоминающие аксиомы Пеано .
  • Теория типов имеет простую связь с конструктивной математикой через интерпретацию BHK . Это может быть связано с логикой изоморфизмом Карри – Ховарда . А некоторые теории типов тесно связаны с теорией категорий .

Дополнительные функции

Зависимые типы

Зависит тип представляет собой тип , который зависит от срока или другого типа. Таким образом, тип, возвращаемый функцией, может зависеть от аргумента функции.

Например, список s длины 4 может быть другого типа, чем список s длины 5. В теории типов с зависимыми типами можно определить функцию, которая принимает параметр «n» и возвращает список, содержащий «n» нулей. Вызов функции с 4 приведет к созданию члена с другим типом, чем если бы функция вызывалась с 5.

Другой пример - это тип, состоящий из доказательств того, что термин аргумента имеет определенное свойство, такое как член тип, например заданное натуральное число, является простым. См. Переписку Карри-Ховарда .

Зависимые типы играют центральную роль в интуиционистской теории типов и в разработке таких языков функционального программирования, как Idris , ATS , Agda и Epigram .

Типы равенства

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

В интуиционистской теории типов тип равенства (также называемый типом идентичности) известен как для идентичности. Есть тип когда это тип и и оба термина типа . Срок типа интерпретируется как означающее, что равно .

На практике можно построить тип но такого термина не будет. В интуиционистской теории типов новые термины равенства начинаются с рефлексивности. Если это термин типа , то существует терм типа . Более сложные равенства могут быть созданы путем создания рефлексивного члена и последующего сокращения с одной стороны. Так что если это термин типа , то есть член типа и, уменьшив, сгенерируйте член типа . Таким образом, в этой системе тип равенства означает, что два значения одного и того же типа могут быть преобразованы редукциями.

Наличие типа для равенства важно, потому что им можно манипулировать внутри системы. Обычно нельзя судить, что два члена не равны; вместо этого, как в интерпретации Брауэра – Гейтинга – Колмогорова , мы отображаем к , куда это нижний тип , не имеющий значений. Существует термин с типом, но не одного типа.

Теория гомотопических типов отличается от интуиционистской теории типов главным образом тем, что она обращается с типом равенства.

Индуктивные типы

Система теории типов требует использования некоторых основных терминов и типов. Некоторые системы строят их из функций, использующих кодировку Чёрча . В других системах есть индуктивные типы : набор базовых типов и набор конструкторов типов, которые генерируют типы с хорошо управляемыми свойствами. Например, некоторые рекурсивные функции, вызываемые индуктивными типами, гарантированно завершаются.

Коиндуктивные типы - это бесконечные типы данных, созданные с помощью функции, которая генерирует следующий элемент (ы). См. Coinduction и Corecursion .

Индукция-индукция - это функция для объявления индуктивного типа и семейства типов, которое зависит от индуктивного типа.

Индукционная рекурсия позволяет использовать более широкий диапазон хорошо управляемых типов, позволяя определять тип и рекурсивные функции, работающие с ним, одновременно.

Типы вселенной

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

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

Универсальные типы типов особенно сложны в теории типов. Первоначальное предложение интуиционистской теории типов страдало от парадокса Жирара .

Вычислительный компонент

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

Система теории типов, которая имеет хорошо управляемый вычислительный компонент, также имеет простую связь с конструктивной математикой через интерпретацию BHK .

Неконструктивная математика в этих системах возможна путем добавления операторов к продолжениям, таких как вызов с текущим продолжением . Однако эти операторы имеют тенденцию нарушать желаемые свойства, такие как каноничность и параметричность .

Типовые теории

Майор

  • Просто типизированное лямбда-исчисление, которое является логикой более высокого порядка ;
  • интуиционистская теория типов ;
  • система F ;
  • LF часто используется для определения других теорий типов;
  • исчисление конструкций и его производные.

Незначительный

  • Автомат ;
  • Теория типа СТ ;
  • UTT (Единая теория зависимых типов Луо)
  • некоторые формы комбинаторной логики ;
  • другие определены в лямбда-кубе ;
  • другие под названием набирали лямбда-исчисление ;
  • другие - под названием « чистая система типов» .

Активный

  • Теория гомотопического типа находится в стадии исследования.

Практическое воздействие

Языки программирования

Существует обширное пересечение и взаимодействие между областями теории типов и систем типов. Системы типов - это функция языка программирования, предназначенная для выявления ошибок. Любой анализ статической программы , такие как тип проверки алгоритмов в семантическом анализе фазе компилятора , имеет связь с теорией типа.

Ярким примером является Agda , язык программирования, который использует UTT (унифицированная теория зависимых типов Луо) для своей системы типов. Язык программирования ML был разработан для управления теориями типов (см. LCF ), и на его собственную систему типов они сильно повлияли.

Математические основы

Первый помощник компьютерного доказательства, названный Automath , использовал теорию типов для кодирования математики на компьютере. Мартин-Лёф специально разработал интуиционистскую теорию типов, чтобы закодировать всю математику, чтобы служить новым основанием для математики. Продолжаются исследования математических основ с использованием теории гомотопического типа .

Математикам, работающим в области теории категорий, уже было трудно работать с широко признанным основанием теории множеств Цермело – Френкеля . Это привело к таким предложениям, как «Элементарная теория категорий множеств Лавера» (ETCS). [5] Теория гомотопических типов продолжает эту линию, используя теорию типов. Исследователи изучают связи между зависимыми типами (особенно типом идентичности) и алгебраической топологией (в частности, гомотопией ).

Помощники по доказательству

Большая часть текущих исследований теории типов проводится с помощью средств проверки доказательства , интерактивных помощников по доказательству и автоматических средств доказательства теорем . Большинство этих систем используют теорию типов в качестве математической основы для кодирования доказательств, что неудивительно, учитывая тесную связь между теорией типов и языками программирования:

  • LF используется Twelf , часто для определения других теорий типов;
  • многие теории типов, подпадающие под логику более высокого порядка , используются семейством доказывающих HOL и PVS ;
  • теория вычислительных типов используется NuPRL ;
  • исчисление конструкций и его производные используются Coq , Matita и Lean ;
  • UTT (Единая теория зависимых типов Луо) используется Agda, которая является одновременно языком программирования и помощником по проверке.

Многие теории типов поддерживаются LEGO и Изабель . Изабель также поддерживает основы помимо теорий типов, такие как ZFC . Мицар - пример системы доказательств, которая поддерживает только теорию множеств.

Лингвистика

Теория Тип также широко используется в формальных теориях семантики в естественных языках , особенно Монтегю грамматики и его потомков. В частности, категориальные грамматики и предгрупповые грамматики широко используют конструкторы типов для определения типов слов ( существительное , глагол и т. Д.).

Самая обычная конструкция принимает основные типы и для индивидов и истинностных значений , соответственно, и рекурсивно определяет набор типов следующим образом:

  • если и типы, значит, тоже ;
  • ничего, кроме основных типов, и то, что можно построить из них с помощью предыдущего предложения, является типами.

Сложный тип это тип функций из сущностей типа объектам типа . Таким образом, есть такие типы, каккоторые интерпретируются как элементы набора функций от сущностей до истинностных значений, то есть индикаторные функции наборов сущностей. Выражение типаявляется функцией от наборов сущностей до истинностных значений, то есть (индикаторная функция) набора наборов. Этот последний тип обычно считается типом квантификаторов естественного языка , таких как все или никто ( Montague 1973, Barwise and Cooper 1981).

Социальные науки

Грегори Бейтсон ввел теорию логических типов в социальные науки; его представления о двойном связывании и логических уровнях основаны на теории типов Рассела.

Отношение к теории категорий

Хотя первоначальная мотивация теории категорий была далека от фундаментализма, оказалось, что эти две области имеют глубокую связь. Как пишет Джон Лейн Белл : «Фактически категории сами по себе могут рассматриваться как теории типов определенного вида; один этот факт указывает на то, что теория типов гораздо более тесно связана с теорией категорий, чем с теорией множеств». Короче говоря, категорию можно рассматривать как теорию типов, рассматривая ее объекты как типы (или сорта), т.е. «грубо говоря, категорию можно рассматривать как теорию типов, лишенную синтаксиса». Таким образом, следует ряд важных результатов: [6]

  • декартово закрытые категории соответствуют типизированному λ-исчислению ( Lambek , 1970);
  • C-моноиды (категории с произведениями и экспонентами и один нетерминальный объект) соответствуют нетипизированному λ-исчислению (независимо наблюдаемому Ламбеком и Даной Скотт около 1980 г.);
  • локально декартовы замкнутые категории соответствуют теориям типа Мартина-Лёфа (Seely, 1984).

Взаимодействие, известное как категориальная логика , с тех пор стало предметом активных исследований; см., например, монографию Джейкобса (1999).

См. Также

  • Тип данных для конкретных типов данных в программировании
  • Теория предметной области
  • Тип (теория модели)
  • Система типов для более практического обсуждения систем типов для языков программирования
  • Универсальные основы

Примечания

  1. ^ Церковь, Алонсо (1940). «Формулировка простой теории типов». Журнал символической логики . 5 (2): 56–68. DOI : 10.2307 / 2266170 . JSTOR  2266170 .
  2. ^ Барендрегт, Хенк (1991). «Введение в системы обобщенных типов». Журнал функционального программирования . 1 (2): 125–154. DOI : 10.1017 / s0956796800020025 . ЛВП : 2066/17240 . ISSN 0956-7968 . 
  3. ^ Хенк Барендрегт; Вил Деккерс; Ричард Статман (20 июня 2013 г.). Лямбда-исчисление с типами . Издательство Кембриджского университета. п. 66. ISBN 978-0-521-76614-2.
  4. ^ Heineman, Джордж Т .; Бессай, Ян; Дуддер, Борис; Rehof, Якоб (2016). «Долгий и извилистый путь к модульному синтезу». Использование формальных методов, проверки и подтверждения: основные методы . ISoLA 2016. Конспект лекций по информатике. 9952 . Springer. С. 303–317. DOI : 10.1007 / 978-3-319-47166-2_21 .
  5. ^ ETCS в nLab
  6. ^ Белл, Джон Л. (2012). «Типы, множества и категории» (PDF) . В Канамори, Акихиро (ред.). Наборы и расширения в двадцатом веке . Справочник по истории логики. 6 . Эльзевир. ISBN  978-0-08-093066-4.

Ссылки

  • Фермер, Уильям М. (2008). «Семь достоинств теории простых типов». Журнал прикладной логики . 6 (3): 267–286. DOI : 10.1016 / j.jal.2007.11.001 .

Дальнейшее чтение

  • Aarts, C .; Backhouse, R .; Hoogendijk, P .; Voermans, E .; ван дер Вуде, Дж. (декабрь 1992 г.). «Реляционная теория типов данных» . Технический университет Эйндховена.
  • Эндрюс Б., Питер (2002). Введение в математическую логику и теорию типов: к истине через доказательство (2-е изд.). Kluwer. ISBN 978-1-4020-0763-7.
  • Джейкобс, Барт (1999). Категориальная логика и теория типов . Исследования по логике и основам математики. 141 . Эльзевир. ISBN 978-0-444-50170-7.Подробно описывает теорию типов, включая расширения полиморфных и зависимых типов. Придает категориальную семантику .
  • Карделли, Лука (1996). «Типовые системы» . В Такере, Аллен Б. (ред.). Справочник по информатике и инженерии . CRC Press. С. 2208–36. ISBN 9780849329098.
  • Коллинз, Джордан Э. (2012). История теории типов: развитие после второго издания «Principia Mathematica». Lambert Academic Publishing. ЛВП : 11375/12315 . ISBN 978-3-8473-2963-3. Предоставляет исторический обзор развития теории типов с акцентом на упадок теории как основы математики в течение четырех десятилетий после публикации второго издания «Principia Mathematica».
  • Констебль, Роберт Л. (2012) [2002]. "Наивная теория типов вычислений" (PDF) . В Schwichtenberg, H .; Steinbruggen, R. (ред.). Доказательство и надежность системы . Серия "Наука НАТО" II. 62 . Springer. С. 213–259. ISBN 9789401004138.Задуман как аналог теории типов наивной теории множеств Пола Халмоса (1960).
  • Кокванд, Тьерри (2018) [2006]. «Теория типов» . Стэнфордская энциклопедия философии .
  • Томпсон, Саймон (1991). Теория типов и функциональное программирование . Аддисон-Уэсли. ISBN 0-201-41667-0.
  • Хиндли, Дж. Роджер (2008) [1995]. Основная теория простых типов . Издательство Кембриджского университета. ISBN 978-0-521-05422-5.Хорошее введение в простую теорию типов для компьютерных специалистов; Однако описанная система не совсем соответствует СТТ Черча. Рецензия на книгу
  • Kamareddine, Fairouz D .; Лаан, Тван; Недерпелт, Роб П. (2004). Современный взгляд на теорию типов: от истоков до наших дней . Springer. ISBN 1-4020-2334-0.
  • Феррейрос, Хосе; Домингес, Хосе Феррейрос (2007). «X. Логика и теория типов в межвоенный период». Лабиринт мысли: история теории множеств и ее роль в современной математике (2-е изд.). Springer. ISBN 978-3-7643-8349-7.
  • Лаан, TDL (1997). Эволюция теории типов в логике и математике (PDF) (PhD). Эйндховенский технологический университет. DOI : 10.6100 / IR498552 . ISBN 90-386-0531-5.

Внешние ссылки

  • Роберт Л. Констебль (ред.). «Вычислительная теория типов» . Scholarpedia .
  • Форум TYPES - модерируемый форум электронной почты, посвященный теории типов в информатике, действующий с 1987 года.
  • Nuprl Книга : « Введение в теорию типа. »
  • Виды Проектные конспекты летних школ 2005–2008 гг.
    • В летней школе 2005 года проходят вводные лекции.
  • Теория типов в nLab , где есть статьи по многим связанным темам.
  • Летняя школа языков программирования Орегона , много лекций и некоторые заметки.
    • Лето 2015 г. Типы, логика, семантика и верификация