Нет, в этом случае предсказуемость и монотонность не тесно связаны.
Проверка позитивности в Coq / Adga служит для того, чтобы убедиться, что вы берете наименьшую фиксированную точку монотонной вещи, примерно.
Вот как следует думать об индуктивных типах в терминах решеток и монотонных операторов. Напомним, что теорема Кнастера-Тарского гласит, что на полной решетке каждый монотонный оператор f : L → L имеет наименьшую неподвижную точку μ ( fLf:L→L . Далее, мы можем думать о типах в теории типов как о формировании решетки при доказуемости. То есть, тип S ниже T , если истина S влечетсобойчто из T . Теперь, что мы хотели бы сделать, это взять монотонный оператор Fμ(f)STSTF для типов и использовать Кнастера-Тарского, чтобы получить интерпретацию наименее неподвижной точки этого оператора. . μ(F)
Однако типы в теории типов - это не просто решетка: они образуют категорию. То есть, учитывая два типа и T , есть потенциально много способов для S , чтобы быть ниже Т с одним способом для каждого доказательства е : S → TSTSTe:S→T . Таким образом, оператор типа также должен сделать что-то разумное в этих доказательствах. Подходящим обобщением монотонности является функториальность . То есть мы хотим, чтобы F имел оператор над типами, а также имел действие над доказательствами, например, если e : S → T , то F (FFe:S→T .F(e):F(S)→F(T)
Теперь функториальность сохраняется с помощью сумм и произведений (т. Е. Если и G являются эндофункторами на типах, то F + G и F × G (действующие точечно) также являются функторами на типах (предполагая, что в нашей алгебре есть суммы и произведения). типы). Однако оно не сохраняется функциональным пространством, так как экспоненциальный бифунктор F → G является контравариантным в своем левом аргументе. Поэтому, когда вы пишете определение индуктивного типа, вы определяете функтор, который принимает наименьшую фиксированную точку. Чтобы убедиться, что это действительно функтор, вам нужно исключить вхождения рекурсивного параметра в левой части функциональных пространств - отсюда и проверка положительности.FGF+GF×GF→G
Обычно исключают непредсказуемость (в смысле Системы F), потому что это принцип, который заставляет вас выбирать между классической логикой и теоретико-множественными моделями. Вы не можете интерпретировать типы как наборы в классической теории множеств, если у вас есть индексация в F-стиле. (См. Знаменитое «Полиморфизм Рейнольдса не является теоретико-множественным».)
Категорически непредсказуемость в стиле F говорит о том, что категория типов и терминов образует небольшую законченную категорию (то есть, homs и объекты являются обоими наборами, и существуют ограничения для всех маленьких диаграмм). Классически это заставляет категорию быть сетом. Многие конструктивисты конструктивны, потому что они хотят, чтобы их теоремы содержались в большем количестве систем, чем просто классическая логика, и поэтому они не хотят доказывать что-либо, что было бы классически ложным. Следовательно, они опасаются непредсказуемого полиморфизма.
Тем не менее, полиморфизм позволяет вам сказать много условий, которые классически «велики» внутри вашей теории типов - и положительность является одним из них! Оператор типа является функториальным, если вы можете создать полиморфный термин:F
Fmap:∀α,β.(α→β)→(F(α)→F(β))
Видите, как это соответствует функториальности? IMO, это был бы очень хороший вариант, чтобы иметь в Coq, так как это позволило бы вам сделать общее программирование намного проще. Синтаксическая природа проверки положительности является большим препятствием для общего программирования, и я был бы рад обменять возможность классических аксиом на более гибкие функциональные программы.
РЕДАКТИРОВАТЬ: Вопрос, который вы спрашиваете о разнице между Prop и Set, возникает из-за того, что разработчики Coq хотят разрешить вам думать о теоремах Coq, если хотите, в наивных теоретико-множественных терминах, не заставляя вас делать это. Технически они разделяют Prop и Set, а затем запрещают сетам зависеть от вычислительного содержания Prop.
Таким образом, вы можете интерпретировать Prop как истинные значения в ZFC, которые являются логическими значениями true и false. В этом мире все доказательства предложений равны, и поэтому очевидно, что вы не сможете перейти к доказательству предложения. Таким образом, запрет на множества в зависимости от вычислительного содержания доказательств Prop абсолютно разумен. Кроме того, двухэлементная булева решетка, очевидно, является полной решеткой, поэтому она должна поддерживать индексирование с непредсказуемостью, поскольку существуют произвольные множественные числа. Ограничение предикативности для множеств возникает из-за того факта (упомянутого выше), что индексация в F-стиле вырождена в классических теоретико-множественных моделях.
У Coq есть и другие модели (это конструктивная логика!), Но дело в том, что с полки она никогда не докажет ничего, что могло бы озадачить классического математика.