Яка роль предикативності в індуктивних визначеннях в теорії типів?


16

Ми часто хочемо визначити об’єкт відповідно до деяких правил виводу. Ці правила позначають виробляє функцію , яка, коли вона монотонна, яке повертає міру нерухому точку . Візьму , щоб бути «індуктивним визначенням» . Більше того, монотонність дозволяє обґрунтувати "принцип індукції", щоб визначити, коли множина містить (тобто коли властивість універсально тримається на ).AUFμFA:=μFAFAA

У Coq це відповідає написанню визначення з явними термінами введення. Хоча це визначення позначає конкретну функцію , ця функція не обов'язково є монотонною. Тому Coq використовує деякі синтаксичні перевірки, щоб гарантувати «добре сформованість» визначення. До деякого наближення він відкидає виникнення в негативних положеннях у типах термінів введення.InductiveAFA

(Якщо моє розуміння до цього моменту є помилковим, будь ласка, виправте мене!)

По-перше, кілька питань у контексті Coq:

1) Чи синтаксична перевірка в Coq служить лише для того, щоб визначення було предикативним ? (Якщо так, чи є непередбачуваність єдиним способом, у якому це визначення було б неправильним?) Або це перевірка на монотонність? (Відповідно, чи не монотонність, що може її вбити?)A

2) Чи обов'язково означає таке негативне виникнення , що визначення є непередбачуваним / немонотонним? Або Coq просто не в змозі перевірити, чи добре він визначений у такому випадку?AA

І в цілому:

3) Який взаємозв'язок між предиктивністю індуктивного визначення та монотонністю генеруючої функції цього визначення? Вони дві сторони однієї монети? Вони не пов'язані між собою? Неформально, хто з них має більше значення?

Відповіді:


14

Ні, в цьому випадку прогнозованість і монотонність не є тісно пов'язаними.

Перевірка позитивності в Coq / Adga служить для того, щоб ви сприймали найменше фіксовану точку монотонної речі, приблизно.

Ось як можна думати про індуктивні типи з точки зору решіток та монотонних операторів. Нагадаємо, що теорема Кнастера-Тарського говорить, що на повній решітці кожен монотонний оператор f : L L має найменшу фіксовану точку μ ( f ) . Далі ми можемо розглядати типи в теорії типів як такі, що утворюють ґрати під доцільністю. Тобто, тип S нижче T , якщо істина S тягне за собою , що з T . Тепер, що ми хотіли б зробити, це взяти монотонний оператор F для типів і використовувати Кнастер-Тарскі, щоб отримати інтерпретацію найменш фіксованої точки цього оператораLf:LLμ(f)STSTF . μ(F)

Однак типи в теорії типів не є лише решіткою: вони утворюють категорію. Тобто, враховуючи два типу і T , є потенційно багато способів для S , щоб бути нижче Т з одним способом для кожного доказу е : S T . Тому оператор типу F також повинен зробити щось розумне з цих доказів. Відповідне узагальнення монотонності - функціональність . Тобто ми хочемо, щоб F мав оператора на типи, а також здійснював дію на докази, такі як якщо e : S T , то F (STSTe:STFFe:ST .F(e):F(S)F(T)

Тепер функціональність зберігається за сумами та продуктами (тобто, якщо і G є ендофайнерами на типи, тоді F + G і F × G (діючі в точці)) також є функторами за типами (якщо припустимо, що в нашій алгебрі є суми та продукти Тим не менш, це не збережене в просторі функцій, оскільки експоненціальний біфунктор F G є протилежним у лівому аргументі. Отже, коли ви пишете індуктивне визначення типу, ви визначаєте функтора, щоб взяти найменш фіксовану точку. Щоб переконатися, що він дійсно є функтором, вам потрібно виключити виникнення рекурсивного параметра в лівій частині функціональних просторів --- звідси перевірка позитивності.FGF+GF×GFГ

Імпредикативності (у значенні Система F) взагалі уникають, тому що це принцип, який змушує вас обирати між класичною логікою та теоретично заданими моделями. Ви не можете інтерпретувати типи як набори в класичній теорії множин, якщо у вас індексація у стилі F. (Див. Знаменитий Рейнольдс "Поліморфізм не заданий теоретичним".)

Категорично, непередбачуваність у стилі F говорить про те, що категорія типів і термінів утворює малу повну категорію (тобто, хоми та об’єкти є обома множинами, а межі всіх малих діаграм є). Класично це змушує категорію бути поетом. Багато конструктивістів є конструктивними, тому що вони хочуть, щоб їх теореми трималися в більшій системі, ніж просто класична логіка, і тому вони не хочуть доводити нічого, що було б класично помилковим. Отже, вони визивають непередбачуваний поліморфізм.

Однак поліморфізм дозволяє говорити про багато умов, які є класично «великими» всередині вашої теорії типу - і позитивність є однією з них! Оператор типу є функціональним, якщо ви можете створити поліморфний термін:F

Fmap:α,β.(αβ)(F(α)F(β))

Подивіться, як це відповідає функціональності? ІМО, це було б дуже приємним варіантом роботи в Coq, оскільки це дозволить вам робити загальне програмування набагато простіше. Синтаксичний характер перевірки позитивності є великою перешкодою для загального програмування, і я би радий торгувати можливістю класичних аксіом для більш гнучких функціональних програм.

EDIT: Питання, яке ви задаєте про різницю між Prop і Set, виникає з того, що розробники Coq хочуть дозволити вам думати про теореми Coq в наївних множинно-теоретичних термінах, якщо ви хочете, не змушуючи вас це робити. Технічно вони розділяють Prop і Set, а потім забороняють набори залежно від обчислювального вмісту Prop.

Таким чином, ви можете інтерпретувати Prop як значення істини в ZFC, які є булевими істинними та хибними. У цьому світі всі докази пропозицій рівні, і тому очевидно, що ви не повинні мати змогу розгалужуватися на доказ пропозиції. Тож заборона на множини залежно від обчислювального змісту доказів Prop є цілком розумною. Крім того, 2-елементна булева гратка, очевидно, є повною решіткою, тому вона повинна підтримувати непередбачувану індексацію, оскільки існують довільні задані значення. Обмеження предикативності для Sets виникає з факту (згаданого вище), що індексація стилю F є виродженою у класичних множинно-теоретичних моделях.

У Coq є інші моделі (це конструктивна логіка!), Але справа в тому, що з полиці вона ніколи не доведе нічого, що класичний математик здивував би.


Дякую за вашу відповідь, Ніл. Ваше визначення "індуктивне визначення", схоже, більше відповідає "початковому -алгебрі" підходу: замість монотонних функцій (які нічого не говорять про докази та обчислювальний зміст) ми ставимося до (більш загальним поняттям) функторів. Тому замість того, щоб перевіряти монотонність, Coq насправді перевіряє функціональність. Однак якщо предикативність не викликає сумнівів, чому Coq розрізняє перевірку позитивних явищ для визначених об'єктів у P r o p та тих, що в S e t або T y p e ? FPropSetType
Скотт Кілпатрік

Я не розумію вашого запитання: Кок ненавидить те Inductive Blah : Prop := Foo : (Blah -> Blah) -> Blahсаме, що і все інше?
Neel Krishnaswami

1
А, мабуть, я помиляюсь на перевірку позитивності для чергової перевірки, пов'язаної з непередбачуваністю. Розглянемо Inductive prop : Prop := prop_intro : Prop -> prop.проти Inductive set : Set := set_intro: Set -> set.. Чому розрізнення, якщо предикативність не стосується індуктивного визначення?
Скотт Кілпатрік

@ScottKilpatrick: це справді інша перевірка та про (не) прогнозованість. Ненасичені сильні типи Sigma дозволяють кодувати парадокс Жирара, тому тип даних, що зберігає члена якогось Всесвіту, скажімо Type@{i}, повинен жити у більшому Всесвіті, принаймні Type@{i+1}.
Blaisorblade

6

Існує дуже глибокий зв’язок між індуктивними визначеннями та непередбачуваністю, але моє розуміння полягає в тому, що в контексті того, про що ви говорите (не) прогнозованість не особливо актуальна, і тест суто гарантує монотонність, щоб теорія фіксованої точки могла бути застосовується, а саме, що принцип індукції чітко визначений. (Я готовий виправитись з цього приводу.)

Взаємозв'язок між непередбачуваністю та індуктивними визначеннями досліджується у цій бесіді Кокендом. Це повертається до деяких результатів 50-х років Г. Такеуті, що непередбачувані визначення можна звести до індуктивних визначень. Книга

  • Теорія доказів непрямих підсистем аналізу - монографії та підручники з фізичних наук 2 В. Бухгольц, К. Шутт

дає хороший аналіз теми, якщо ви можете взяти на себе її. Ці слайди дають огляд.


4

Просто для завершення чудового пояснення Ніла, непередбачуваність має "м'який" сенс: визначення наборів або колекцій за допомогою посилання на себе. У цьому сенсі:

Inductive Lam : Set :=
| Var : Nat -> Lam
| App : Lam -> Lam -> Lam
| Abs : (Lam -> Lam) -> Lam

є непередбачуваним визначенням, оскільки воно визначає індуктивний тип, Lam використовуючи функціональний простір (Lam -> Lam), який відноситься до самої колекції. У цій ситуації непередбачуваність шкідлива : можна використовувати теорему Кантора, щоб довести хибність. Насправді це та сама марка непередбачуваності, яка знижує наївну теорію множини як послідовну основу математики. Тому це заборонено в Coq. Інша форма impredicativity буде дозволена, як ви знаєте:

Definition Unit : Prop := forall X:Prop, X -> X

Визначення підрозділу як пропозиції посилається на збір усіх пропозицій, членом яких він є. Однак з дещо незрозумілих мені причин ця непередбачуваність не є шкідливою, оскільки вона присутня в ZFC (у формі безмежного розуміння ), який, як відомо, є непослідовним.

На закінчення, негативні випадки індуктивних типів у визначеннях є формою непередбачуваності, але не тією, яку зазвичай називають КоК як непередбачуваною основою .


Я розумію, ви говорите, що ZFC має безмежне розуміння. Але це звучить неправильно - math.stackexchange.com/q/24507/79293 . Хліпала це обговорює, обговорюючи -impredicative-setу своїй книзі: adam.chlipala.net/cpdt/html/Universes.html , і згадує про деякі обмеження щодо усунення, але це також для мене незрозуміло.
Blaisorblade

1
AxBxB

Ах, дякую! Я також бачу, як вищевказана непередбачуваність відповідає тій, що є в ZFC (хоча відображення, яке я використовую, напевно, занадто наївне). Чи можете ви додати посилання у відповіді?
Blaisorblade

На жаль, Google це здається важким (або я не знаю правильних ключових слів). Що ще гірше, і Вікіпедія, і nLab розрізняють "обмежене розуміння" (у ZFC, en.wikipedia.org/wiki/Axiom_schema_of_specification ) і "обмежене / обмежене розділення" (те, що ви пов’язали). Див. Ncatlab.org/nlab/show/axiom+of+separation . Але вся ця термінологія виглядає як непорозуміння, яке чекає, коли це станеться - я зазвичай вважаю, що "поділ ~ розуміння", як ви і автор mathforum.org/kb/message.jspa?messageID=4492130 теж.
Blaisorblade

Може бути , кращі ключові слова для такого роду обговорень є «Конструктивна теорія множин», див , наприклад , вікіпедія , або це дуже хороша стаття Rathjen.
коді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.