Чи конструктивна індукція шляху?


17

Я читаю книгу HoTT, і мені важко індукувати шлях.

Коли я дивлюся на тип у розділі 1.12.1 : я не маю жодних проблем з розумінням того, що це означає (я просто записав тип із пам'яті, щоб перевірити це).

ind=A:∏C:∏x,y:A(x=Ay)→U((∏x:AC(x,x,reflx))→∏x,y:A∏p:x=AyC(x,y,p)),

Що у мене виникло питання - це наступне твердження: моє перше враження полягало в тому, що цей останній вираз не визначає отриману функцію а просто констатує її власність .

with the equalityind=A(C,c,x,x,reflx):≡c(x)
f:∏x,y:A∏p:x=AyC(x,y,p),

Це на відміну від попередніх прикладів принципів індукції , або - там є визначення рівняння для цих елементів - ми на насправді знаємо , як побудувати результуючу функцію, враховуючи приміщення. Що узгоджується з "конструктивністю" теорії типів, оголошеною у всій главі.indA×BindA+BindN

Повертаючись до ind=A , я підозріло ставився до того, що (схоже) він не визначений. Заявивши, що елемент f просто існує, здавалося, не співпадає з рештою глави. І справді, розділ 1.12.1, схоже, підкреслює, що моє враження неправильне і ми насправді визначилися

... функція F: \ prod_ {х, у: А} \ prod_ {р: х = _Ay} С (х, у, р), визначається індукцією шляху з C: \ prod_ {х: A} C ( x, x, \ text {refl} _x) , який більше задовольняє f (x, x, \ text {refl} _x): \ equiv c (x) ...f:∏x,y:A∏p:x=AyC(x,y,p),
c:∏x:AC(x,x,reflx)
f(x,x,reflx):≡c(x)

Це залишає мене зовсім розгубленим, але я маю відчуття, що цей момент дуже важливий для всіх подальших подій. Тож із яким читанням для я повинен пройти? Або, напевно, я пропускаю якусь важливу тонкість, і відповідь - "ні"? ind=A


До речі, це насправді не специфічне для HoTT питання, а більш загальне питання "залежних типів".
— коді

Відповіді:


12

Це ілюзія, що правила обчислення "визначають" або "конструюють" об'єкти, про які вони говорять. Ви правильно зауважили, що рівняння для не "визначає" це, але не помічає, що те саме є і в інших випадках. Розглянемо принцип індукції для блоку типу , який видається особливо очевидно «визначеним». Згідно з розділом 1.5 книги HoTT у нас є з рівняння Це "визначає" чи "конструює" у тому сенсі, що це не залишає сумнівів щодо того, що "робить"? Наприклад, встановити 1 i n d 1 : ∏ C : 1 → T y p e C(⋆)→ ∏ x : 1 P(x) i n d 1 (C,c,⋆)=c. i n d 1 i n d 1 C(x)= Nind=A1

ind1:∏C:1→TypeC(⋆)→∏x:1P(x)
ind1(C,c,⋆)=c.
ind1ind1C(x)=N і , і розглянемо, що можна сказати про для заданого виразу типу . Вашою першою думкою може бути те, що ми можемо зменшити це до оскільки " є єдиним елементом ". Але якщо бути досить точним, рівняння для застосовується лише в тому випадку, якщо ми покажемо , що неможливо, наприклад, коли є змінною. Ми можемо спробувати вийти з цього і сказати, що нас цікавлять тільки обчислення із закритими термінами, тому слід закрити.i n d 1 ( C , 42 , e ) e 1 42 ⋆ 1 i n d 1 e ≡ ⋆ e ea=42
ind1(C,42,e)
e142⋆1ind1e≡⋆ee

Чи не так, що кожен закритий член типу судження є рівним ? Це насправді залежить від неприємних деталей і складних доказів нормалізації. У разі HOTT відповідь «ні» , тому що не може містити екземпляри унівалентностью Axiom, і це не ясно , що робити , щоб про це (це відкрита проблема в HOTT).1 ⋆ ee1⋆e

Ми можемо обійти проблеми з univalance, розглядаючи варіант теорії типу , яка робить добрі властивості , так що кожні замкнуті терми типу є суб'єктивно рівні . У цьому випадку було б справедливо сказати , що ми дійсно знаємо , як обчислити з , але:⋆ i n d 11⋆ind1

  1. Ж матиме місце для типу ідентичності, тому що кожен замкнутий член типу ідентичності буде суб'єктивно одно деякими , і так , то рівняння для буде сказати , нам, як обчислити.i n d = Arefl(a)ind=A

  2. Просто тому, що ми знаємо, як обчислити закриті терміни типу, це не означає, що ми насправді щось визначили, тому що тип має більше, ніж його закриті терміни , як я намагався пояснити одного разу.

Наприклад, теорію типів Мартіна-Лефа (без типів ідентичності) можна інтерпретувати теоретично домену таким чином, що містить два елементи і , де відповідає і не припиняючи. На жаль, оскільки немає можливості записати незакінчуваний вираз у теорії типів, не можна назвати. Отже, рівняння для зовсім НЕ говорить нам , як обчислити на (два очевидних варіанту є «жадібністю» і «ледачим»).⊥ ⊤ ⊤ ⋆ ⊥ ⊥ i n d 1 ⊥1⊥⊤⊤⋆⊥⊥ind1⊥

У плані інженерії програмного забезпечення, я б сказав, що ми маємо плутанину між специфікацією та реалізацією . Аксіоми HoTT для типів ідентичності є специфікацією . Рівняння не говорить нам, як обчислити, чи як побудувати , але, однак, однак "реалізований", нам потрібно, щоб він задовольнив рівняння. Окреме питання, чи можна таке отримати конструктивно.ind=C(C,c,x,x,refl(x))≡c(x)ind=Cind=Cind=C

Нарешті, я трохи втомився, як ви вживаєте слово "конструктивний". Схоже, ви думаєте, що "конструктивне" те саме, що "визначене". Згідно з цією інтерпретацією оракул Halting є конструктивним, оскільки його поведінка визначається вимогою, яку ми накладаємо на нього (а саме тим, що він виводить 1 або 0 відповідно до того, чи зупиняється дана машина). Переважно можна описати об'єкти, які існують лише в неконструктивних умовах. І навпаки, цілком можна конструктивно говорити про властивості та інші речі, які насправді неможливо обчислити. Ось одне: відношення визначене H⊆N×{0,1}

H(n,d)⟺(d=1⇒n-th machine halts)∧(d=0⇒n-th machine diverges)
є конструктивним, тобто немає нічого поганого в цьому визначенні з конструктивної точки зору. Так буває, що конструктивно не можна показати, що - це сумарне відношення, і його характеристична карта не через , тому ми не можемо "обчислити" його значення.HχH:N×{0,1}→Propbool

Додаток: Назва вашого питання "Чи індукція контуру конструктивна?" Очистивши різницю між "конструктивним" та "визначеним", ми можемо відповісти на питання. Так, індукція шляху, як відомо, є конструктивною у певних випадках:

  1. Якщо ми обмежимося теорією типів без однозначності, щоб ми могли проявити сильну нормалізацію, то індукція тракту та все інше є конструктивним, оскільки існують алгоритми, які виконують процедуру нормалізації.

  2. Існують моделі реалізації теорії типів, які пояснюють, як кожному закритому терміну в теорії типів відповідає машина Тьюрінга. Однак ці моделі задовольняють Аксіому К Стрейхера, яка виключає Універсальність.

  3. Існує переклад теорії типів (знову ж таки без однозначності) на конструктивну теорію множин CZF. Це ще раз підтверджує аксіому К. Стрейхера.

  4. Всередині моделі реалізаційності є групоподібна модель, яка дозволяє інтерпретувати теорію типів без К. Стрейчера. Це попередня робота Стіва Уоді і я.

Нам дійсно потрібно розібратися в конструктивному стані Універсальності.


Я вважаю, що ця відповідь зараз (частково) застаріла
— WorldSEnder

Дійсно, в середній час теорія кубічного типу дала позитивну відповідь: існує конструктивна модель теорії одновалентного типу.
— Андрій Бауер

7

Я не HoTT людина, але я закину свої два центи.

Припустимо, ми хочемо зробити функцію Як би ми це зробили? Ну, припустимо, нам дано будь-яке x , y : A і доказ їх рівності p : x = A y . Оскільки я нічого не знаю про довільний тип A , я нічого не знаю про `структуру ' x , y

fA:∏x,y:A∏p:x=AyC(x,y,p)
x,y:Ap:x=AyAx,y. Однак я знаю щось про конкретний тип рівності: він має єдиний конструктор, Отже, p ≡ r e f l a для деякого a : A , але це примусить x = a = y . Отже, якби у нас був елемент C ( x , x , r e f l x ) для будь-якого
refla:a=Aa, for any a:A
p≡reflaa:Ax=a=yC(x,x,reflx) ; тобто якщо ми мали функцію b a s e C : ∏ x : A C ( x , x , r e f l x ) (для нашого конкретного C ), то нашу функцію f A можна визначити так: f A ( x , y , p ) : = b a s e C ( x , x , p )x:A
baseC:∏x:AC(x,x,reflx)
CfA
fA(x,y,p):=baseC(x,x,p)
.

Позбавлення від підписок призводить до загального спонукального визначення.

Сподіваюся, що це допомагає!


eEE


1
Можливо, ви можете трохи зрозуміти це, або принаймні занепокоїтись своїми поточними інтуїціями, перевіривши math.andrej.com/2013/08/28/the-elements-of-an-inductive-type, де я намагаюся пояснити, чому шкідливо думати, що закриті терміни типу - це все, що є для типу.
— Андрій Бауер

2
refl

3

А×БА×Б

pаir : А→Б→А×Б
f А×Бpаir

pаirf:А×Б→САБ

f′:A→B→C
fA×B
(A→B→C)→(A×B→C)
indA×B

f pair(a,b)ff′

f(pair(a,b)) := f′ a b
indA×B f′ pair(a,b) := f′ a b
=

Отже, ви бачите, що визначення елімінатора для індуктивного типу з даними конструкторами відбувається в 2 етапи:

  1. ind

  2. ind


=Ax,y:Ap:x=yCpx=y refl(z)z

f:Πx,y:A,x=y→C
f′:Πz:A,C
refl(z)C

ff′

f z z refl(z):=f′ z

A×B=A

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