Sformalizowanie teorii zbiorów skończonych w teorii typów

10

Większość asystentów dowodowych ma sformalizowaną koncepcję „zbioru skończonego”. Te formalizacje różnią się jednak bardzo dziko (choć można mieć nadzieję, że wszystkie są w zasadzie równoważne!). Nie rozumiem w tym momencie zajmowanej przestrzeni projektowej oraz jakie są zalety i wady każdej formalizacji.

W szczególności chciałbym zrozumieć, co następuje:

  • Czy mogę aksjatyzować zbiory skończone (tj. Typy zamieszkałe przez skończoną liczbę mieszkańców) w prostej teorii typów? System F? Jakie są wady robienia tego w ten sposób?
  • Wiem, że można to zrobić „elegancko” w systemie zależnym od typu. Jednak z klasycznego punktu widzenia powstałe definicje wydają się bardzo obce. [Nie twierdzę, że się mylą, wręcz przeciwnie!]. Ale nie rozumiem też, dlaczego mają rację. Rozumiem, że wybrali prawidłową koncepcję, ale głębszego powodu „mówienia w ten sposób” jest to, czego nie do końca rozumiem.

Zasadniczo chciałbym uzasadnione wprowadzenie do przestrzeni projektowej sformalizowania pojęcia „zbioru skończonego” w teorii typów.

Jacques Carette
źródło

Odpowiedzi:

8

Wiem, że można to zrobić „elegancko” w systemie zależnym od typu. Jednak z klasycznego punktu widzenia powstałe definicje wydają się bardzo obce.

Czy potrafisz wyjaśnić, co rozumiesz przez „kosmitę”? Wydaje mi się, że formalizujesz pojęcie zbioru skończonego dokładnie w ten sam sposób w teorii typów i teorii mnogości.

W teorii zbiorów kontynuujesz definiując zbiór jako Następnie definiujesz predykat skończoności jako: Gdzie oznacza izomorfizm zbiorów.Fin(n)

Fin(n){kN|k<n}
Finite(X)nN.XFin(n)
AB

W teorii typów możesz zrobić dokładnie to samo! Zauważ, że jest typem zawierającym elementów (ponieważ drugi składnik pary nie ma znaczenia dla dowodów). Następnie możesz zdefiniować konstruktor typu skończoności jako: Gdzie oznacza izomorfizm typów.

Fin(n)Σk:N.ifk<nthenUnitelseVoid
Fin(n)n
Finite(X)Σn:N.XFin(n)
AB
Neel Krishnaswami
źródło
Alien, ponieważ widziałem tylko surowe definicje bez testu towarzyszącego, który wyjaśnia, jak je czytać. Plus fakt, że zwykła definicja płetwy, wykonywana indukcyjnie, jeszcze bardziej zaciemnia sytuację. Potrzebuję twojego krótkiego wyjaśnienia, aby kliknięcie było możliwe.
Jacques Carette,
5

Zobaczę, czy mogę dodać coś użytecznego do odpowiedzi Neela. „Przestrzeń projektowa” dla zbiorów skończonych jest znacznie większa konstrukcyjnie niż klasycznie, ponieważ różne definicje „skończonych” nie muszą konstruktywnie się zgadzać. Różne definicje w teorii typów dają nieco inne pojęcia. Oto kilka możliwości.

Zestawy skończone Kuratowskiego ( skończone) można scharakteryzować jako wolne -semilattice: biorąc pod uwagę zbiór, typ lub obiekt , elementy wolnego -semilattice mogą być thougth jako skończone podzbiory . Rzeczywiście, każdy taki element jest generowany przez:KXK(X)X

  • element neutralny , który odpowiada pustemu zestawowi, lub0
  • generator , który odpowiada singletonowi , lubxX{x}
  • połączyć lub dwa elementy, co odpowiada unii.ST

Równoważna kompozycja z wynosi: znaczy -finite wtedy i tylko wtedy, gdy istnieje i surjection .K(X)SXKnN e:{1,,n}S

Jeśli porównamy to z definicji Neel widzimy, że wymaga on do bijection . Sprowadza się to do wzięcia tych skończonych podzbiorów które mają rozstrzygającą równość: . Użyjmy do zbierania rozstrzygalne -finite podzbiorów .e:{1,,n}SKSXx,yS.x=yxyD(X)KX

Oczywiście jest zamknięty w skończonych związkach, ale nie musi być zamknięty w skończonych skrzyżowaniach. I nie jest zamknięty w ramach żadnych operacji. Ponieważ ludzie oczekują, że zbiory skończone zachowują się trochę jak „agoola boolowska bez góry”, można również spróbować zdefiniować je jako dowolną uogólnioną algebrę boolowską ( , , i krewny / uzupełnienie ), ale tak naprawdę nigdy słyszałem o takim wysiłku.K(X)D(X)0

Decydując, jaka jest „poprawna” definicja, musisz zwrócić uwagę na to, co chcesz zrobić ze zbiorami skończonymi. I nie ma jednej poprawnej definicji. Na przykład, w jakim sensie „skończony” jest zbiorem złożonych pierwiastków wielomianowego skończonego ?

Zobacz konstruktywnie skończony? Thierry'ego Coquanda i Arnauda Spiwacka za szczegółowe omówienie skończoności. Lekcja jest taka, że ​​skończoność wcale nie jest oczywista konstruktywnie.

Andrej Bauer
źródło
Tak, wiedziałem o tym wystarczająco dużo, aby wiedzieć, że moje pytanie nie było banalne. Teraz mogę przejść i ponownie przeczytać części bibliotek Coq, Isabelle i Agda, które zajmują się skończonymi zbiorami, i mam nadzieję na zrozumienie, jakich wyborów dokonali (gra słów zamierzonych).
Jacques Carette,
Zastanawiam się, jak świadomi byli autorzy bibliotek. Prawdopodobnie właśnie weszli do jednej z definicji. Naturalną rzeczą jest założenie, że ma decydującą równość, ponieważ wtedy pokrywa się z i wszystko idzie gładko i bardzo podobnie jak w przypadku klasycznym. Problem zaczyna się, gdy nie ma rozstrzygającej równości. AK(A)D(A)A
Andrej Bauer,
Aby być uczciwym, często używa się zestawów skończonych w celu sformalizowania aspektów weryfikacji programu, a w takim przypadku zwykle można założyć, że obowiązuje rozstrzygająca równość.
cody