Правда ли, что добавление аксиом в CIC может оказать негативное влияние на вычислительное содержание определений и теорем? Я понимаю , что в нормальном поведении теории, любой замкнутый терм сведет к канонической нормальной форме, например , если верно, то п должен сводиться к слагаемому виду ( S у с с . . . ( S U c c ( 0 ) ) ) . Но при постулировании аксиомы - скажем, аксиомы экстенсиональности функции - мы просто добавляем новую константу в системуfunext
это просто «волшебным образом» производит доказательство из любого доказательства Π x : A f ( x ) = g ( x ) , без какого-либо вычислительного значения вообще ( в том смысле, что мы не можем извлечь из них какой-либо код? )
Но почему это "плохо"?
Для funext
, я прочитал в этой записи Coq и этот mathoverflow вопросе , что это приведет систему к любой свободной каноничности или разрешимой проверке. Запись coq, кажется, представляет собой хороший пример, но я все еще хотел бы еще несколько ссылок на это - и почему-то я не могу найти их.
Как такое добавление дополнительных аксиом может привести к ухудшению поведения CIC? Любые практические примеры были бы великолепны. (Например, аксиома однолистности?) Боюсь, что этот вопрос слишком мягкий, но если бы кто-то мог пролить свет на эти вопросы или дать мне некоторые ссылки, было бы здорово!
PS: В записи Coq упоминается, что «Тьерри Коканд уже заметил, что сопоставление с образцом по интенциональным семьям несовместимо с экстенсиональностью в середине 90-х». Кто-нибудь знает, в какой газете или что-то?
Prop
в помощниках по доказательству Coq, соответствуют чисто логическим утверждениям; Prop-Нерелевантность соответствуют игнорировать внутреннюю структуру доказательств этих утверждений) можно сделать в основном, не заботясь о них больше, это не должно влиять на вычисления - но это нужно делать осторожно, чтобы не сделать систему несовместимой.Чтобы понять, почему расширение средства доказательства теорем с помощью некоторых аксиом может вызвать проблемы, также интересно посмотреть, когда это будет полезно. На ум приходят два случая, и оба они связаны с тем фактом, что мы не заботимся о вычислительном поведении постулатов.
В теории типов наблюдений можно постулировать доказательство любого непротиворечивого,
Prop
не теряя каноничности. Действительно, все доказательства считаются равными, и система обеспечивает это, полностью отказываясь рассматривать термины. Как следствие, тот факт, что доказательство было построено вручную или просто постулировано, не имеет никакого значения. Типичным примером может служить доказательство «сплоченности»: если у нас есть доказательствоeq
этого,A = B : Type
то для любогоt
типаA
,t == coerce A B eq t
гдеcoerce
просто переносится член вдоль доказательства равенства.В MLTT можно постулировать любую отрицательную последовательную аксиому без потери каноничности . Интуиция позади этого состоит в том, что отрицательные аксиомы (аксиомы формы
A -> False
) когда-либо используются только, чтобы отклонить несущественные ветви. Если аксиома непротиворечива, то она может использоваться только в тех ветвях, которые действительно не имеют значения и поэтому никогда не будут приниматься при оценке терминов.источник
Практический пример плохого поведения аксиомы вы спрашиваете, а как насчет этого?
Упомянутая статья Coquand может быть [1], где он показывает, что зависимый ITT (интуиционистская теория типов Мартина-Лёфа), расширенная с помощью сопоставления с образцом, позволяет вам доказать UIP (аксиома уникальности доказательств идентичности ). Позже Штрайхер и Хоффманн [2] представляют модель ITT, которая фальсифицирует UIP. Следовательно, сопоставление с образцом не является консервативным расширением ITT.
Т. Coquand, сопоставление с образцом зависимых типов .
М. Хофманн, Т. Штрайхер, Группоидная интерпретация теории типов .
источник