Конструктивная теория типов с ее базовой интерпретацией под соответствием Карри Ховарда состоит только из полных вычислимых функций. В литературе некоторые говорили об использовании «теории вычислительных типов» для представления не-завершения в функциональных программах, но в работах, с которыми я сталкивался, это, кажется, не является основной мотивацией для теории (например, Бентон упоминает о недетерминированности, продолжениях и исключениях, не вдаваясь в подробности о недопущении), поэтому мне еще предстоит найти статью, дающую надежную интерпретацию недопущения с использованием теории вычислительного типа.
В частности, то, что я ищу, - это способ, которым, учитывая тип, представляющий, возможно, не завершающие вычисления типа , T ( A ) , должно быть некоторое представление о доказательствах того, что x : T ( A ) завершается типа H ( x ) , таким образом, что данные х : Т ( ) и р : Н ( х ) , мы можем построить термин ~ х : а .
Моя мотивация для этого заключается в том, что я хотел бы в конечном итоге иметь возможность более формально связать понятия в теории вычислительной сложности с конструктивной теорией типов. В частности, меня интересует, какую силу конструктивные типы формальной теории приобретают, имея доступ к оракулу остановки, и для этого мне, конечно же, нужно иметь формальное представление о возможном недопущении и доказательствах прекращения идти вместе с ним внутри теоретико-типовой структуры.
источник
Ответы:
Поскольку одним из основных применений теории типов в формализации было изучение языков программирования и вычислений в целом, много усилий было уделено способам представления, возможно, не завершающих программ.
Я не буду делать полный обзор здесь, но я постараюсь дать указания на основные направления различных направлений.
Более сложный способ сделать это - метод «Бове-Капретта» (см. Рекурсия моделирования в теории типов , которая для каждой рекурсивной функции определяет «доступный предикат», который кодирует тот факт, что данное вычисление является конечным. Определение функции принимает дополнительный аргумент, который является доказательством того, что данные входные данные доступны. Чтобы определить функцию без этого дополнительного предиката, необходимо доказать, что доступны все возможные комбинации входных данных.
Это кодирует возможно бесконечный поток
Later
токенов («тиков» вычислений), который может заканчиваться результатомNow a
. Не прекращение эквивалентно тому, чтобы быть похожим на программуloop = Более поздний цикл и завершение могут быть определены с помощью индуктивного предиката
Delay A
:Я думаю, что агдаистам есть что сказать по этому поводу, которое они называют монадой пристрастности (см., Например, Даниэльссон ).
Подход "теории частичного типа" : это немного более экспериментально (теория все еще разрабатывается), но есть некоторые теории типов, которые разрабатываются, чтобы справиться с тем фактом, что по существу есть два типа функций, которые мы хотим написать в теории типов: условия доказательства и программы. Оказывается, трудно получить разумную теорию этих вещей (и сохранить последовательность теории), но серьезная попытка здесь сделана Casinghino et al. , И аналогичная попытка Kimmel et al .
Я уверен, что есть другие подходы, о которых я не знаю, и я был бы рад, если кто-то захочет завершить этот список.
Существуют и другие, весьма плодотворные взаимодействия между теорией типов и теорией сложности, обычно под эгидой неявной вычислительной сложности .
источник