Причину запрета негативных явлений можно понять по аналогии с теоремой Кнастера-Тарского. Эта теорема говорит, что
если - полная решетка и f : L → L - монотонная функция на L , то множество неподвижных точек f также является полной решеткой. В частности, существует наименьшее фиксированная точка μ F и наибольший фиксированная точка ν F .Lf:L→LLfμfνf
В традиционной теории моделей решетки можно рассматривать как суждения, а отношение порядка p ≤ q можно понимать как следствие (т. Е. Правда q связана с истинностью p ).Lp≤qqp
Когда мы переходим от теории моделей к теории доказательств, решетки обобщаются на категории. Типы можно рассматривать как объекты категории , а отображение е : P → Q представляет собой доказательство того, что Q может быть получена из Q .Ce:P→QQQ
Когда мы пытаемся интерпретировать типы, определенные рекурсивными уравнениями, ее, , очевидное, что нужно сделать, это искать обобщение теоремы Кнастера-Тарского. Таким образом, вместо монотонной функции на решетке мы знаем, что нам нуженфунктор F : C → C , который отправляет объекты объектам, но обобщает условие монотонности, так что каждое отображение e : P → Q получает отображение F ( e ) : F ( P ) → F ( Q ) (с условиями когерентности, что F отправляет тождества в тождества и сохраняет композиции так, чтобы FN=μα.1+α F:C→Ce:P→QF(e):F(P)→F(Q)F ).F(g∘f)=F(g)∘F(f)
Так что если вы хотите, чтобы индуктивный тип данных , вам также необходимо указать функторное действие в терминах для оператора типа F , чтобы быть уверенным, что требуемая фиксированная точка существует. Условие строгой позитивности в Agda и Coq являетсясинтаксическимусловием, подразумевающим этосемантическоеограничение. Грубо говоря, он говорит, что если вы строите оператор типа из сумм и продуктов, то вы всегда можете составить функторное действие, и поэтому любой тип, сформированный таким образом, должен иметь фиксированную точку.μ α .F( α )F
В языках с зависимой типизацией у вас также есть индексированные и параметризованные типы, поэтому ваша реальная задача более сложна. Боб Атки (который писал об этом здесь и здесь ) говорит мне, что хорошее место для поиска этой истории:
Как отмечает Андрей, принципиально, хорошо или нет отрицательный случай, зависит от того, какая у вас модель теории типов. По сути, когда у вас есть рекурсивное определение, вы ищете фиксированную точку, и в математике существует множество теорем о фиксированной точке.
Лично я часто использовал теорему Банаха о неподвижной точке, которая гласит, что если у вас есть строго сжимающая функция в метрическом пространстве, то она имеет единственную неподвижную точку. Эта идея была введена в семантику Морисом Ниватом (IIRC) и была тщательно изучена Америкой и Руттеном, а недавно Биркедал и его сотрудники были связаны с популярной операционной техникой, называемой «пошаговая индексация».
Это порождает теории типов, где отрицательные вхождения в рекурсивных типах разрешены, но только когда отрицательные вхождения происходят в специальном конструкторе типа «осторожность». Эта идея была введена Хироши Накано, и связь с теоремой Банаха была сделана мной и Ником Бентоном, а также Ларсом Биркедалом и его соавторами.