Czy indukcja ścieżki jest konstruktywna?

17

Czytam poprzez książki hott i mam trudności z indukcją ścieżki.

Kiedy patrzę na typ w sekcji 1.12.1 : nie mam problemu ze zrozumieniem, co to znaczy (właśnie napisałem typ z pamięci, aby to sprawdzić).

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

Mam problem z następną samą instrukcją: moje pierwsze wrażenie było takie, że to ostatnie wyrażenie nie definiuje wynikowej funkcji a jedynie podaje jej własność .

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

Jest to w przeciwieństwie do poprzednich przykładów zasad wprowadzających , \ text {ind} _ {A + B} lub \ text {ind} _ \ mathbb {N} - tam są zdefiniowaniu równania dla tych elementów - faktycznie wie, jak skonstruować wynikowy funkcję danego pomieszczenia. Co jest zgodne z „konstruktywnością” teorii typów reklamowaną w całym rozdziale.indA×BindA+BindN

Wracając do ind=A , byłem podejrzliwy co do tego, że (wygląda jak) nie jest zdefiniowane. Stwierdzenie, że element f właśnie istnieje, wydawało się niezgodne z resztą rozdziału. I rzeczywiście, sekcja 1.12.1 wydaje się podkreślać, że moje wrażenie jest błędne, a my faktycznie to zdefiniowaliśmy

... funkcja f: \ Prod_ {x, y: A} \ Prod_ {f: X = _Ay} C (x, y, t), określa indukcji ścieżka z c: \ Prod_ {X:} C ( x, x, \ text {refl} _x) , który ponadto spełnia 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)

To sprawia, że ​​jestem całkowicie zdezorientowany, ale mam wrażenie, że ten punkt jest bardzo ważny dla wszystkich dalszych zmian. Więc z którym z dwóch odczytów dla powinienem iść? A może brakuje mi ważnej subtelności, a odpowiedź brzmi „ani”? ind=A

Kostya
źródło
Nawiasem mówiąc, nie jest to tak naprawdę pytanie specyficzne dla HoTT, ale bardziej ogólne pytanie „typów zależnych”.
cody

Odpowiedzi:

12

To złudzenie, że reguły obliczeniowe „definiują” lub „konstruują” obiekty, o których mówią. Prawidłowo zauważyłeś, że równanie dla nie „go definiuje”, ale nie zauważyłeś, że to samo dotyczy również innych przypadków. Rozważmy zasadę indukcji dla jednostki typu , która wydaje się szczególnie wyraźnie „określona”. Zgodnie z rozdziałem 1.5 książki HoTT mamy z równanie Czy to „definiuje” czy „konstruuje” w tym sensie, że nie pozostawia wątpliwości, co „robi”? Na przykład ustaw 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 i zastanów się, co moglibyśmy powiedzieć o i n d 1 ( C , 42 , e ) ea=42
ind1(C,42,e)
etypu . Twoja pierwsza myśl może być taka, że ​​możemy zmniejszyć to do ponieważ „ jest jedynym elementem ”. Aby być bardziej precyzyjnym, równanie dla ma zastosowanie tylko wtedy, gdy pokażemy42 1 i n d 1 e 1421ind1e , co jest niemożliwe , na przykład, gdy jest zmienną. Możemy próbować poruszać się z tego i powiedzieć, że jesteśmy zainteresowani tylko w obliczeniach z zamkniętymi warunkach, tak powinny być zamknięte.eee

Czy nie jest tak, że każdy zamknięty termin typu jest w sensie sądowym równy1 e1 ? To zależy od nieprzyjemnych szczegółów i skomplikowanych dowodów normalizacji. W przypadku HoTT odpowiedź brzmi „nie”, ponieważ mogą zawierać instancje aksjomatu Univalence, i nie jest jasne, co z tym zrobić (jest to otwarty problem w HoTT).e

Możemy obejść problemy z univalance uznając wersję typu teorii, która robi dobre właściwości, tak aby każdy zamknięty określenie typu jest judgmentally równa . W takim przypadku można powiedzieć, że tak1 wiem jak obliczyć z , ale:ind1

  1. To samo dotyczy typu tożsamości, ponieważ każdy zamknięty termin typu tożsamości będzie sądowo równy pewnym , a więc równanie dlai n d = Arefl(a)ind=A będzie stwierdzić nas jak obliczyć.

  2. Tylko dlatego, że wiemy, jak obliczyć z zamkniętymi terminami typu, nie oznacza to, że faktycznie coś zdefiniowaliśmy, ponieważ istnieje więcej niż typ zamknięty , jak próbowałem kiedyś wyjaśnić.

Na przykład teorię typów Martina-Löfa (bez typów tożsamości) można interpretować teoretycznie w domenie w taki sposób, że zawiera dwa elementy i , gdzie odpowiada a nieterminacji. Niestety, ponieważ w teorii typów nie ma sposobu, aby zapisać wyrażenie nie kończące się, nie można nazwać . W związku z tym, równanie ma niei n d 11ind1 mówią nam, jak obliczyć na (dwa oczywiste wybory są „chętnie” i „leniwie”).

Pod względem inżynierii oprogramowania powiedziałbym, że mamy pomieszanie specyfikacji i implementacji . Aksjomaty HoTT dla typów tożsamości są specyfikacją . Równanie nie mówi nam, jak obliczyć, ani jak zbudować , ale raczej, że jednak jest „zaimplementowany”, wymagamy, aby spełniał równanie. Osobnym pytaniem jest, czy taki można uzyskać w konstruktywny sposób. i n d = C i n d = C i n d = Cind=C(C,c,x,x,refl(x))c(x)ind=Cind=Cind=C

Wreszcie jestem trochę zmęczony tym, jak używasz słowa „konstruktywny”. Wygląda na to, że uważasz, że „konstruktywny” jest taki sam jak „zdefiniowany”. Zgodnie z tą interpretacją wyrocznia Halting jest konstruktywna, ponieważ jej zachowanie jest określone przez nałożony na nią wymóg (mianowicie, że generuje 1 lub 0 w zależności od tego, czy dana maszyna zatrzymuje się). Idealnie możliwe jest opisywanie obiektów, które istnieją tylko w niekonstruktywnym otoczeniu. I odwrotnie, można całkowicie konstruktywnie mówić o właściwościach i innych rzeczach, których w rzeczywistości nie można obliczyć. Oto jedna: relacja jest konstruktywna, tzn. Nie ma nic złego w tej definicji z konstruktywnego punktu widzenia. Tak się składa, że ​​konstruktywnie nie można wykazać, że jest relacją całkowitą,H ( n , d )HN×{0,1} zdefiniowana przez H χ H : N × { 0 , 1 } P r o p b o o l

H(n,d)(d=1n-th machine halts)(d=0n-th machine diverges)
HχH:N×{0,1}Prop nie uwzględnia przez , więc nie możemy „obliczyć” jego wartości.bool

Uzupełnienie: Tytuł twojego pytania brzmi: „Czy indukcja ścieżki jest konstruktywna?” Po wyjaśnieniu różnicy między „konstruktywnym” a „zdefiniowanym” możemy odpowiedzieć na pytanie. Tak, wiadomo, że indukcja ścieżki jest konstruktywna w niektórych przypadkach:

  1. Jeśli ograniczymy się do teorii typów bez Jedności, abyśmy mogli wykazać silną normalizację, wówczas indukcja ścieżki i wszystko inne jest konstruktywne, ponieważ istnieją algorytmy, które wykonują procedurę normalizacji.

  2. Istnieją modele wykonalności teorii typów, które wyjaśniają, w jaki sposób każdy termin zamknięty w teorii typów odpowiada maszynie Turinga. Jednak te modele spełniają Axiom K Streichera, co wyklucza Univalence.

  3. Istnieje tłumaczenie teorii typów (ponownie bez Univalence) na konstruktywną teorię zbiorów CZF. Po raz kolejny potwierdza to aksjomat K. Streichera

  4. W modelach wykonalności znajduje się model grupoidalny, który pozwala nam interpretować teorię typów bez K. Streichera. To wstępna praca Steve'a Awodeya i mnie.

Naprawdę musimy ustalić konstruktywny status Univalence.

Andrej Bauer
źródło
Wierzę, że ta odpowiedź jest (częściowo) nieaktualna
WorldSEnder
Rzeczywiście, w międzyczasie teoria typu sześciennego dała pozytywną odpowiedź: istnieje konstruktywny model teorii typu Univalent.
Andrej Bauer,
7

Nie jestem osobą HoTT, ale wrzucę moje dwa centy.

Załóżmy, że chcemy stworzyć funkcję Jak to zrobilibyśmy? Załóżmy, że otrzymaliśmy dowolne i dowód ich równości . Ponieważ nic nie wiem o dowolnym typie , nie wiem nic o „strukturze” . Wiem jednak coś o konkretnym typie równości: ma on jednego konstruktora, Stąd, for niektóre , ale wymusiłoby to . Dlatego jeśli mielibyśmy element dla dowolnegox , y : A p : x = A y A x , y r e f l a : a = A a ,  dla każdego  a : A p r e f l

fA:x,y:Ap:x=AyC(x,y,p)
x,y:Ap:x=AyAx,y
refla:a=Aa, for any a:A
a : A x = a = y C ( x , x , r e f l x ) x : A b a s e C : x : A C ( x , x , r e f l x ) C f A f A ( x , y , p ) : = bpreflaa:Ax=a=yC(x,x,reflx)x:A; tzn. jeśli mielibyśmy funkcję (dla naszego konkretnego ), to naszą funkcję można zdefiniować w następujący sposób: .
baseC:x:AC(x,x,reflx)
CfA
fA(x,y,p):=baseC(x,x,p)

Pozbycie się indeksów dolnych prowadzi do ogólnej definicji indukcyjnej.

Mam nadzieję, że to pomaga!


PS. Nie jestem facetem HoTT, więc zakładam „Axiom K”. Dokładniej, jestem przy założeniu, że element typu musi być wynikiem wielokrotnych zastosowań konstruktora . O ile mi wiadomo, HoTT, prawdopodobnie rozdział 2, odrzuca to pojęcie ... i to nie ma dla mnie żadnego sensu.eEE

Musa Al-hassy
źródło
1
Być może możesz to zrozumieć, a przynajmniej martwić się o swoje obecne intuicje, sprawdzając math.andrej.com/2013/08/28/the-elements-of-an-inductive-typ, w którym próbuję wyjaśnić, dlaczego myślenie, że zamknięte terminy danego typu są dla danego typu szkodliwe, jest szkodliwe.
Andrej Bauer,
2
refl
3

A×BA×B

pair : ABA×B
f A×B , wystarczy opisać swoje działania napair

pairfa:ZA×bdoZAb

fa:ZAbdo
faZA×b
(ZAbdo)(ZA×bdo)
janreZA×b

fa pzajar(za,b)fafa

fa(pzajar(za,b)) : = fa za b
janreZA×b fa pzajar(za,b) : = fa za b
=

Widzicie więc, że definicja eliminatora typu indukcyjnego w danych konstruktorach składa się z 2 etapów:

  1. janre

  2. janre


=ZAx,y:ZAp:x=ydopx=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

cody
źródło