Есть ли хорошее понятие о несоблюдении и остановке доказательств в теории типов?


10

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

В частности, то, что я ищу, - это способ, которым, учитывая тип, представляющий, возможно, не завершающие вычисления типа , T ( A ) , должно быть некоторое представление о доказательствах того, что x : T ( A ) завершается типа H ( x ) , таким образом, что данные х : Т ( ) и р : Н ( х ) , мы можем построить термин ~ х : а .AT(A)x:T(A)H(x)x:T(A)p:H(x)x~:A

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


3
fAB dom(f)xAdom(f)(x)fx


AB

Ответы:


11

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

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

  • F x yfxf(x)=yx(y,F x y)(¬y,F x y)

    Более сложный способ сделать это - метод «Бове-Капретта» (см. Рекурсия моделирования в теории типов , которая для каждой рекурсивной функции определяет «доступный предикат», который кодирует тот факт, что данное вычисление является конечным. Определение функции принимает дополнительный аргумент, который является доказательством того, что данные входные данные доступны. Чтобы определить функцию без этого дополнительного предиката, необходимо доказать, что доступны все возможные комбинации входных данных.

  • A

    codata Delay A =
    | Now : A -> Delay A
    | Later (Delay A)
    

    Это кодирует возможно бесконечный поток Laterтокенов («тиков» вычислений), который может заканчиваться результатом Now a. Не прекращение эквивалентно тому, чтобы быть похожим на программу

    loop = Более поздний цикл и завершение могут быть определены с помощью индуктивного предиката Delay A:

    data Terminates : Data A -> Prop =
    | Term_now : forall x, Terminates (Now x)
    | Term_later : forall d, Terminates d -> Terminates (Later d)
    

    Я думаю, что агдаистам есть что сказать по этому поводу, которое они называют монадой пристрастности (см., Например, Даниэльссон ).

  • Подход "теории частичного типа" : это немного более экспериментально (теория все еще разрабатывается), но есть некоторые теории типов, которые разрабатываются, чтобы справиться с тем фактом, что по существу есть два типа функций, которые мы хотим написать в теории типов: условия доказательства и программы. Оказывается, трудно получить разумную теорию этих вещей (и сохранить последовательность теории), но серьезная попытка здесь сделана Casinghino et al. , И аналогичная попытка Kimmel et al .

Я уверен, что есть другие подходы, о которых я не знаю, и я был бы рад, если кто-то захочет завершить этот список.

Π10

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


Интересно, спасибо за информацию! Я полагаю, что подход теории частичных типов, вероятно, наиболее близок по духу к тому, что я ищу - и, по крайней мере, статья Киммела, по-видимому, предоставляет на каком-то уровне именно то, что я ищу (см. Правила набора текста для «tcast»). ).
Натан Беделл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.