stringtranslate.com

Теория типов

В математике и теоретической информатике теория типов — это формальное представление конкретной системы типов . [a] Теория типов — это академическое изучение систем типов.

Некоторые теории типов служат альтернативами теории множеств как фундамента математики . Две влиятельные теории типов, которые были предложены в качестве фундамента:

Большинство компьютеризированных систем корректуры используют в своей основе теорию типов . Распространенной является «Исчисление индуктивных конструкций» Тьерри Коканда .

История

Теория типов была создана, чтобы избежать парадокса в математическом уравнении, основанном на наивной теории множеств и формальной логике . Парадокс Рассела (впервые описанный в работе Готтлоба Фреге « Основания арифметики ») заключается в том, что без надлежащих аксиом можно определить множество всех множеств, которые не являются членами самих себя; это множество как содержит себя, так и не содержит себя. В период с 1902 по 1908 год Бертран Рассел предложил различные решения этой проблемы.

К 1908 году Рассел пришел к разветвленной теории типов вместе с аксиомой сводимости , обе из которых появились в Principia Mathematica Уайтхеда и Рассела , опубликованных в 1910, 1912 и 1913 годах. Эта система избежала противоречий, предложенных в парадоксе Рассела, создав иерархию типов, а затем присвоив каждую конкретную математическую сущность определенному типу. Сущности данного типа были построены исключительно из подтипов этого типа, [b] таким образом предотвращая определение сущности с использованием самой себя. Это разрешение парадокса Рассела похоже на подходы, принятые в других формальных системах, таких как теория множеств Цермело-Френкеля . [3]

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

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

Приложения

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

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

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

Помощники по проверке

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

Многие теории типов поддерживаются LEGO и Isabelle . Isabelle также поддерживает фундаменты помимо теорий типов, такие как ZFC . Mizar является примером системы доказательств, которая поддерживает только теорию множеств.

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

Любой статический анализ программы , например, алгоритмы проверки типов в фазе семантического анализа компилятора , имеет связь с теорией типов. Ярким примером является Agda , язык программирования, который использует UTT (Luo's Unified Theory of dependible Types) для своей системы типов.

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

Лингвистика

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

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

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

Теория типов с записями — это формальная структура представления семантики , использующая записи для выражения типов теории типов . Она использовалась в обработке естественного языка , в основном в вычислительной семантике и диалоговых системах . [11] [12]

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

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

Теория типов как логика

Теория типов — это математическая логика , то есть набор правил вывода , которые приводят к суждениям . Большинство логик имеют суждения, утверждающие « Предложение истинно» или « Формула является правильно сформированной формулой ». [13] Теория типов имеет суждения, которые определяют типы и назначают их набору формальных объектов, известных как термины. Термин и его тип часто записываются вместе как .

Условия

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

Суждения

Большинство теорий типов содержат 4 суждения:

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

Если нет никаких предположений, то слева от турникета ничего не будет.

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

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

Правила вывода

Правила вывода теории типов говорят, какие суждения могут быть сделаны на основе существования других суждений. Правила выражаются как вывод в стиле Генцена с использованием горизонтальной линии, с требуемыми входными суждениями над линией и результирующим суждением под линией. [15] Например, следующее правило вывода устанавливает правило подстановки для суждения равенства. Правила являются синтаксическими и работают путем переписывания . Метапеременные , , , , и могут фактически состоять из сложных терминов и типов, которые содержат множество применений функций, а не только отдельные символы.

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

Тип обитания

Как правило, желаемым заключением доказательства в теории типов является заключение о заселении типа . [16] Проблема принятия решения о заселении типа (сокращенно ) такова:

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

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

Теория типов обычно имеет несколько правил, включая следующие:

Также для каждого типа «по правилу» существует 4 различных вида правил

Заинтересованный читатель может ознакомиться с примерами правил в Приложении А.2 книги « Теория гомотопических типов» [14] или прочитать «Интуиционистскую теорию типов» Мартина-Лёфа [17] .

Подключения к фундаментам

Логическая структура теории типов имеет сходство с интуиционистской или конструктивной логикой. Формально теория типов часто упоминается как реализация интерпретации интуиционистской логики Брауэра–Гейтинга–Колмогорова . [17] Кроме того, можно установить связи с теорией категорий и компьютерными программами .

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

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

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

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

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

Конструктивная математика

Пер Мартин-Лёф предложил свою интуиционистскую теорию типов в качестве основы для конструктивной математики . [13] Конструктивная математика требует, чтобы при доказательстве «существует со свойством » было построено частное и доказательство того, что оно имеет свойство . В теории типов существование достигается с помощью зависимого типа произведения, а его доказательство требует термина этого типа.

Примером неконструктивного доказательства является доказательство от противного . Первый шаг — предположение, что не существует, и опровержение этого от противного. Вывод из этого шага — «не существует того, что не существует». Последний шаг — это вывод с помощью двойного отрицания о существовании. Конструктивная математика не допускает последнего шага — устранения двойного отрицания, чтобы сделать вывод о существовании. [18]

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

Переписка Карри-Ховарда

Соответствие Карри–Ховарда — это наблюдаемое сходство между логиками и языками программирования. Импликация в логике «A B» напоминает функцию из типа «A» в тип «B». Для различных логик правила похожи на выражения в типах языка программирования. Сходство идет дальше, поскольку применение правил похоже на программы в языках программирования. Таким образом, соответствие часто обобщается как «доказательства как программы».

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

Вывод типа

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

Области исследований

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

Основная статья: Теория категорий

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

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

Теория гомотопического типа

Теория гомотопических типов пытается объединить теорию типов и теорию категорий. Она фокусируется на равенствах, особенно на равенствах между типами. Теория гомотопических типов отличается от интуиционистской теории типов в основном тем, как она обрабатывает тип равенства. В 2016 году была предложена кубическая теория типов, которая является теорией гомотопических типов с нормализацией. [21] [22]

Определения

Термины и типы

Атомарные термины

Самые основные типы называются атомами, а термин, тип которого является атомом, известен как атомный термин. Обычные атомные термины, включенные в теории типов, — это натуральные числа , часто обозначаемые типом , булевы логические значения ( / ), обозначаемые типом , и формальные переменные , тип которых может варьироваться. [16] Например, следующие могут быть атомарными терминами.

Термины функции

В дополнение к атомарным термам большинство современных теорий типов также допускают функции . Типы функций вводят символ стрелки и определяются индуктивно : если и являются типами, то нотация представляет собой тип функции, которая принимает параметр типа и возвращает терм типа . Типы этой формы известны как простые типы . [16]

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

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

Лямбда-термины

Новые функциональные термы могут быть построены с использованием лямбда-выражений и называются лямбда-термами. Эти термы также определяются индуктивно: лямбда-терм имеет форму , где — формальная переменная, а — терм, а его тип обозначается как , где — тип , а — тип . [16] Следующий лямбда-терм представляет функцию, которая удваивает входное натуральное число.

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

Лямбда-терм часто называют [d] анонимной функцией, поскольку у него нет имени. Концепция анонимных функций появляется во многих языках программирования.

Правила вывода

Применение функции

Сила теорий типов заключается в определении того, как термины могут быть объединены посредством правил вывода . [4] Теории типов, которые имеют функции, также имеют правило вывода применения функции : если является термином типа , и является термином типа , то применение к , часто записываемое , имеет тип . Например, если известны обозначения типов , , и , то из применения функции можно вывести следующие обозначения типов . [16]

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

Скидки

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

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

Например, следующий термин может быть сокращен.

В теориях типов, которые также устанавливают понятия равенства для типов и терминов, существуют соответствующие правила вывода -равенства и -равенства. [16]

Общие термины и типы

Пустой тип

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

Тип устройства

Тип единицы имеет ровно 1 канонический терм. Тип записывается или и единственный канонический терм записывается . Тип единицы также используется в доказательствах типа inhabitation. Если для типа , последовательно вывести функцию типа , то inhabited , то есть он должен иметь один или несколько термов.

Булев тип

Тип Boolean имеет ровно 2 канонических термина. Тип обычно записывается как или или . Канонические термины обычно и .

Натуральные числа

Натуральные числа обычно реализуются в стиле арифметики Пеано . Существует канонический термин для нуля. Канонические значения больше нуля используют итеративные применения функции- последователя .

Зависимая типизация

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

Некоторые теории также позволяют типам зависеть от терминов вместо типов. Например, теория может иметь тип , где — термин типа, кодирующий длину вектора . Это обеспечивает большую специфичность и безопасность типов : функции с ограничениями длины вектора или требованиями соответствия длины, такие как скалярное произведение , могут кодировать это требование как часть типа. [24]

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

Тип продукта

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

Помимо упорядоченных пар, этот тип используется для понятий логического соединения и пересечения .

Тип суммы

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

Тип суммы используется для понятий логической дизъюнкции и объединения .

Зависимые произведения и суммы

Два общих типа зависимости , типы зависимого произведения и зависимой суммы, позволяют теории кодировать интуиционистскую логику BHK , действуя как эквиваленты универсальной и экзистенциальной квантификации ; это формализовано соответствием Карри–Ховарда . [24] Поскольку они также связаны с произведениями и суммами в теории множеств , они часто записываются с помощью символов и , соответственно. [17] Типы зависимого произведения и суммы обычно появляются в типах функций и часто включаются в языки программирования. [26]

Например, рассмотрим функцию , которая принимает a и терм типа и возвращает список с элементом в конце. Аннотацией типа такой функции будет , что можно прочитать как «для любого типа , передать a и an , и вернуть a ».

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

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

Тогда тип может быть записан как .

Тип личности

Следуя идее соответствия Карри-Ховарда, тип тождества — это тип, введенный для отражения пропозициональной эквивалентности , в отличие от оценочной (синтаксической) эквивалентности , которую уже обеспечивает теория типов.

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

Сложность равенства в теории типов делает его активной темой исследований; гомотопическая теория типов является заметной областью исследований, которая в основном занимается равенством в теории типов.

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

Индуктивные типы являются общим шаблоном для создания большого разнообразия типов. Фактически, все типы, описанные выше, и другие могут быть определены с использованием правил индуктивных типов. Два метода создания индуктивных типов — это индукция-рекурсия и индукция-индукция . Метод, который использует только лямбда-термины — это кодирование Скотта .

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

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

Наиболее общепринятой основой математики является логика первого порядка с языком и аксиомами теории множеств Цермело–Френкеля с аксиомой выбора , сокращенно ZFC. Теории типов, имеющие достаточную выразительность , также могут выступать в качестве основы математики. Между этими двумя подходами есть ряд различий.

Сторонники теории типов также укажут на ее связь с конструктивной математикой через интерпретацию BHK , на ее связь с логикой посредством изоморфизма Карри–Ховарда и на ее связь с теорией категорий .

Свойства теорий типов

Термины обычно принадлежат к одному типу. Однако существуют теории множеств, определяющие «подтипирование».

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

Некоторые комбинации типов эквивалентны другим комбинациям типов. Когда функции рассматриваются как «возведение в степень», комбинации типов могут быть записаны аналогично алгебраическим тождествам. [26] Таким образом, , , , , .

Аксиомы

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

Иногда теория типов добавляет несколько аксиом. Аксиома — это суждение, которое принимается без вывода с использованием правил вывода. Они часто добавляются для обеспечения свойств, которые не могут быть добавлены чисто через правила.

Аксиомы могут вызывать проблемы, если они вводят термины без способа вычисления этих терминов. То есть, аксиомы могут мешать нормализующему свойству теории типов. [27]

Вот некоторые часто встречающиеся аксиомы:

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

Список теорий типов

Главный

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

Активные исследования

Смотрите также

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

Примечания

  1. ^ См. § Термины и типы
  2. ^ В системе типов Julia , например, абстрактные типы не имеют экземпляров, но могут иметь подтип, [1] : 110,  тогда как конкретные типы не имеют подтипов, но могут иметь экземпляры, для « документирования, оптимизации и диспетчеризации ». [2]
  3. ^ Чёрч продемонстрировал свой логистический метод с помощью своей простой теории типов [4] и объяснил свой метод в 1956 году [5] на страницах 47-68.
  4. ^ В Julia , например, функция без имени, но с двумя параметрами в некотором кортеже (x,y) может быть обозначена, скажем, (x,y) -> x^5+yкак анонимная функция. [23]

Ссылки

  1. ^ Балберт, Иво (2015) Начало работы с программированием Julia ISBN 978-1-78328-479-5
  2. ^ docs.julialang.org v.1 Типы Архивировано 24.03.2022 на Wayback Machine
  3. Стэнфордская энциклопедия философии (ред. Пн., 12 октября 2020 г.) Парадокс Рассела Архивировано 18 декабря 2021 г. на Wayback Machine 3. Ранние ответы на парадокс
  4. ^ abcd Чёрч, Алонзо (1940). «Формулировка простой теории типов». Журнал символической логики . 5 (2): 56–68. doi :10.2307/2266170. JSTOR  2266170. S2CID  15889861.
  5. ^ Алонзо Чёрч (1956) Введение в математическую логику Том 1
  6. ^ ETCS в n Lab
  7. ^ Chatzikyriakidis, Stergios; Luo, Zhaohui (2017-02-07). Современные перспективы в теоретико-типовой семантике. Springer. ISBN 978-3-319-50422-3. Архивировано из оригинала 2023-08-10 . Получено 2022-07-29 .
  8. ^ Винтер, Йоад (2016-04-08). Элементы формальной семантики: Введение в математическую теорию значения естественного языка. Издательство Эдинбургского университета. ISBN 978-0-7486-7777-1. Архивировано из оригинала 2023-08-10 . Получено 2022-07-29 .
  9. ^ Купер, Робин. «Теория типов и семантика в движении. Архивировано 10 мая 2022 г. в Wayback Machine ». Справочник по философии науки 14 (2012): 271-323.
  10. ^ Барвайз, Джон; Купер, Робин (1981) Обобщенные квантификаторы и естественный язык Лингвистика и философия 4 (2):159--219 (1981)
  11. ^ Купер, Робин (2005). «Записи и типы записей в семантической теории». Журнал логики и вычислений . 15 (2): 99–112. doi :10.1093/logcom/exi004.
  12. ^ Купер, Робин (2010). Теория типов и семантика в движении . Справочник по философии науки. Том 14: Философия лингвистики . Elsevier.
  13. ^ ab Martin-Löf, Per (1 декабря 1987 г.). «Истина предложения, очевидность суждения, действительность доказательства». Synthese . 73 (3): 407–420. doi :10.1007/BF00484985. ISSN  1573-0964.
  14. ^ abcd Программа унивалентных оснований (2013). Теория гомотопических типов: унивалентные основания математики. Теория гомотопических типов.
  15. ^ Смит, Питер. "Типы систем доказательств" (PDF) . logicmatters.net . Архивировано (PDF) из оригинала 2022-10-09 . Получено 29 декабря 2021 .
  16. ^ abcdefgh Хенк Барендрегт; Уил Деккерс; Ричард Стэтман (20 июня 2013 г.). Лямбда-исчисление с типами. Издательство Кембриджского университета. стр. 1–66. ISBN 978-0-521-76614-2.
  17. ^ abcd "Правила интуиционистской теории типов Мартина-Лёфа" (PDF) . Архивировано (PDF) из оригинала 2021-10-21 . Получено 2022-01-22 .
  18. ^ "доказательство от противного". nlab . Архивировано из оригинала 13 августа 2023 . Получено 29 декабря 2021 .
  19. ^ Хайнеман, Джордж Т.; Бессай, Ян; Дюддер, Борис; Рехоф, Якоб (2016). «Долгая и извилистая дорога к модульному синтезу». Использование формальных методов, верификации и валидации: основные методы . ISoLA 2016. Конспект лекций по информатике. Том 9952. Springer. С. 303–317. doi :10.1007/978-3-319-47166-2_21. ISBN 978-3-319-47165-5.
  20. ^ Белл, Джон Л. (2012). "Типы, множества и категории" (PDF) . В Канамори, Акихиро (ред.). Множества и расширения в двадцатом веке . Справочник по истории логики. Том 6. Elsevier. ISBN 978-0-08-093066-4. Архивировано (PDF) из оригинала 2018-04-17 . Получено 2012-11-03 .
  21. ^ Стерлинг, Джонатан; Анджиули, Карло (2021-06-29). «Нормализация для теории кубических типов». 36-й ежегодный симпозиум ACM/IEEE по логике в компьютерных науках (LICS) 2021 года . Рим, Италия: IEEE. стр. 1–15. arXiv : 2101.11479 . doi :10.1109/LICS52264.2021.9470719. ISBN 978-1-6654-4895-6. S2CID  231719089. Архивировано из оригинала 2023-08-13 . Получено 2022-06-21 .
  22. ^ ab Cohen, Cyril; Coquand, Thierry; Huber, Simon; Mörtberg, Anders (2016). "Cubical Type Theory: A constructive interpretation of the univalence axiom" (PDF) . 21st International Conference on Types for Proofs and Programs (TYPES 2015) . arXiv : 1611.02108 . doi : 10.4230/LIPIcs.CVIT.2016.23 (неактивен 1 ноября 2024 г.). Архивировано (PDF) из оригинала 2022-10-09.{{cite journal}}: CS1 maint: DOI inactive as of November 2024 (link)
  23. ^ Балберт, Иво (2015) Начало работы с Джулией
  24. ^ ab Bove, Ana; Dybjer, Peter (2009), Bove, Ana; Barbosa, Luís Soares; Pardo, Alberto; Pinto, Jorge Sousa (ред.), "Dependent Types at Work", Language Engineering and Rigorous Software Development: International LerNet ALFA Summer School 2008, Пириаполис, Уругвай, 24 февраля - 1 марта 2008 г., Revised Tutorial Lectures , Lecture Notes in Computer Science, Берлин, Гейдельберг: Springer, стр. 57–99, doi :10.1007/978-3-642-03153-3_2, ISBN 978-3-642-03153-3, получено 2024-01-18
  25. ^ Барендегт, Хенк (апрель 1991 г.). «Введение в обобщенные системы типов». Журнал функционального программирования . 1 (2): 125–154. doi :10.1017/S0956796800020025. hdl : 2066/17240 – через Cambridge Core.
  26. ^ ab Milewski, Bartosz. "Programming with Math (Exploring Type Theory)". YouTube . Архивировано из оригинала 2022-01-22 . Получено 2022-01-22 .
  27. ^ "Аксиомы и вычисления". Доказательство теорем в Lean . Архивировано из оригинала 22 декабря 2021 г. Получено 21 января 2022 г.
  28. ^ "Axiom K". nLab . Архивировано из оригинала 2022-01-19 . Получено 2022-01-21 .

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

Вводный материал

Расширенный материал