В недавнем потоке в списке рассылки Агда, вопрос - законов выскочил, в котором Питер Hancock сделал заставляющий думать замечание .
Насколько я понимаю, законы приходят с отрицательными типами, т.е. связующие, правила введения которых обратимы. Чтобы отключить для функций, Хэнк предлагает использовать специальный элиминатор funsplit вместо обычного правила приложения. Я хотел бы понять замечание Хэнка с точки зрения полярности.
Например, есть две презентации -types. Существует традиционный Martin-Löf сплит нейтрализатор, в позитивном стиле:
И есть отрицательная версия:
Последнее представление позволяет легко получить для пар, т.е. для любой пары (где == обозначает равенство определений). С точки зрения доказуемости это различие не имеет значения: интуитивистски можно реализовать проекции с разбивкой или наоборот.
Теперь, -типы обычно (и неоспоримый, я считаю) негативно воспринят:
Что дает нам для функций: .
Тем не менее, в этом письме Хэнк вспоминает элиминатор funsplit (Программирование в теории типов ML, [http://www.cse.chalmers.se/research/group/logic/book/], стр. 56). Это описывается в логической структуре:
Интересно, что Nordstrom et al. мотивировать это определение, сказав, что «[эта] альтернативная неканоническая форма основана на принципе структурной индукции». Это утверждение сильно пахнет позитивом: функции будут «определены» их конструктором .
Тем не менее, я не могу достаточно точно описать это правило в естественной дедукции (или, что еще лучше, в последовательном исчислении). (Ab) использование логического каркаса для введения представляется здесь решающим.
Итак, является ли funsplit позитивным представлением -типов? Есть ли у нас что-то похожее в (независимом) исчислении секвенций? Как бы это выглядело?
Насколько распространено / любопытно это для теоретиков доказательства в этой области?
Вот немного другой взгляд на ответ Фредрика. Как правило, случайные церковные кодировки типов удовлетворяют соответствующим законам , но не удовлетворяют законам .ηβ η
Таким образом, это означает, что мы можем определить зависимую пару следующим образом:
л 1 л 1 : ∃ х : Х .
Однако вторая проекция реализуема , и в параметрической модели вы можете показать, что она также имеет правильное поведение. (См. Мой недавний проект с Дереком Дрейером о параметричности в исчислении конструкций, чтобы узнать больше об этом.) Поэтому я думаю, что проекция фундаментально требует некоторых сильных свойств экстенсиональности, чтобы иметь смысл.π2
В терминах последовательного исчисления слабый элиминатор имеет правило, которое выглядит примерно так:
pΓ′CΓ,x:X,y:Y[x],
источник
Ричард Гарнер написал хорошую статью о применении против funsplit, О силе зависимых продуктов в теории типов Мартина-Лёфа (APAL 160 (2009)), в которой также обсуждается природа высшего порядка правила funsplit (со ссылкой на Питер Шредер-Хейстер. Естественное продолжение естественного дедукции (JSL 49 (1984))).
Ричард показывает, что при наличии типов идентичности (а также правил формирования и введения для типов ) funsplit является взаимозависимым с правилом приложения выше + пропозициональная эта, то есть следующие два правила:Π
То есть, если у вас есть funsplit, вы можете определить application и как указано выше, чтобы . Что еще интереснее, если у вас есть приложение и правила предложения, то вы можете определить funsplit.η ( Π -Проп- п-comp )
Кроме того, funsplit строго сильнее приложения: правила пропационного эта не определимы в теории с единственным применением - следовательно, фунсплит не определим, так как тогда и правила пропа будут также. Интуитивно понятно, что это потому, что правила приложения дают вам немного больше времени: в отличие от funsplit (и т. Д.), Они не сообщают вам, что такое функции, а только то, что их можно применять к аргументам. Я считаю, что аргумент Ричарда можно повторить и для типов , чтобы показать тот же результат для против проекций.Σ s p l i t
Обратите внимание, что если бы у вас были определенные правила eta, вы бы наверняка использовали их и пропозиционально (с ). Таким образом, я думаю, что ваши утверждения «[...] которые дают нам для функций» и «[...] эта последняя презентация облегчает получение для пар» неверны. Agda, однако, реализует как для функций, так и для пар (если определена как запись), но это не следует только из приложения.η( м ) : = р е фл (м) η η η Σ
источник