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


17

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

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

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

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

with the equalityind=A(C,c,x,x,reflx):≡c(x)
f:x,y:Ap: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:Ap: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:1TypeC()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)
e1421ind1eee

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

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

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

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

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

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

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

H(n,d)(d=1n-th machine halts)(d=0n-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:Ap: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
preflaa: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:ABC
fA×B
(ABC)(A×BC)
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=yC
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.