Algebra początkowa

W matematyce algebra początkowa jest obiektem początkowym w kategorii F - algebr dla danego endofunktora F . Ta inicjalność zapewnia ogólne ramy dla indukcji i rekurencji .

Przykłady

Funktor 1 + (−)

Rozważmy endofunktor F : Set Set wysyłający X do 1 + X , gdzie 1 to zbiór jednopunktowy ( singleton ) , obiekt końcowy w kategorii. Algebrą dla tego endofunktora jest zbiór X (nazywany nośnikiem algebry) wraz z funkcją f : (1 + X ) → X . Zdefiniowanie takiej funkcji sprowadza się do zdefiniowania punktu i funkcja X X . Definiować

I

Wtedy zbiór N liczb naturalnych wraz z funkcją [zero,succ]: 1 + N N jest początkową F -algebrą. Inicjalność ( właściwość uniwersalna w tym przypadku) nie jest trudna do ustalenia; unikalny homomorfizm do dowolnej F -algebry ( A , [ e , f ]) , dla e : 1 → A element A i f : A A funkcja na A , to funkcja przesyłająca liczbę naturalną n do f n ( e ) , to znaczy f ( f (…( f ( e ))…)) , n -krotne zastosowanie f do e .

Zbiór liczb naturalnych jest nośnikiem algebry początkowej dla tego funktora: punktem jest zero, a funkcją jest następnik .

Funktor 1 + N × (-)

Jako drugi przykład rozważmy endofunktor 1 + N × (-) w kategorii zbiorów, gdzie N jest zbiorem liczb naturalnych. Algebrą dla tego endofunktora jest zbiór X wraz z funkcją 1 + N × X X . Aby zdefiniować N , X . potrzebujemy i funkcji Zbiór list skończonych liczb naturalnych jest algebrą początkową tego funktora. Chodzi o pustą listę, a funkcją jest cons , biorąc liczbę i skończoną listę i zwracając nową skończoną listę z liczbą na początku.

W kategoriach z koproduktami binarnymi podane definicje są równoważne zwykłym definicjom odpowiednio obiektu liczby naturalnej i obiektu listy .

Końcowa koalgebra

Podwójnie końcowa koalgebra jest obiektem końcowym w kategorii F -koalgebr . Ostateczność zapewnia ogólne ramy dla koindukcji i współkursowania .

Na przykład, używając tego samego funktora 1 + (-) jak poprzednio, kogebra jest zdefiniowana jako zbiór X wraz z funkcją f : X → (1 + X ) . Zdefiniowanie takiej funkcji sprowadza się do zdefiniowania funkcji częściowej f ' : X Y , której dziedzinę tworzą te , dla których f ( x ) należy do 1 . Taką strukturę można postrzegać jako łańcuch zbiorów, w których X 0 nie jest zdefiniowane f ′ , X 1 , które elementy odwzorowują się w X 0 przez f , X 2 które elementy odwzorowują się w X 1 przez f itd. oraz X ω zawierający pozostałe elementy X . Mając to na uwadze, zestaw składający się ze zbioru liczb naturalnych rozszerzonego o nowy element ω jest nośnikiem ostatecznej węgla w kategorii, gdzie jest funkcją poprzednika ( odwrotnością funkcji następcy) na dodatnich liczbach naturalnych, ale działa jak tożsamość na nowym elemencie ω : f ( n + 1) = n , f ( ω ) = ω . Ten zbiór , który jest nośnikiem końcowej kogebry 1 + (-), jest znany jako zbiór liczb współnaturalnych.

Jako drugi przykład rozważmy ten sam funktor 1 + N × (-), co poprzednio. W tym przypadku nośnikiem ostatecznej kogebry są wszystkie listy liczb naturalnych, zarówno skończonych, jak i nieskończonych . Operacje to funkcja testująca sprawdzająca, czy lista jest pusta, oraz funkcja dekonstrukcji zdefiniowana na niepustych listach, zwracająca parę składającą się z początku i końca listy wejściowej.

Twierdzenia

  • Algebry początkowe są minimalne (tj. nie mają właściwej podalgebry).
  • Końcowe węglanie są proste (tj. nie mają odpowiednich ilorazów).

Zastosowanie w informatyce

Różne skończone struktury danych używane w programowaniu , takie jak listy i drzewa , można otrzymać jako algebry początkowe określonych endofunktorów. Chociaż dla danego endofunktora może istnieć kilka algebr początkowych, są one unikalne aż do izomorfizmu , co nieformalnie oznacza, że ​​​​„obserwowalne” właściwości struktury danych można odpowiednio uchwycić, definiując ją jako algebrę początkową.

Aby uzyskać typ List( A ) list, których elementy należą do zbioru A , należy wziąć pod uwagę, że operacje tworzące listy to:

Połączone w jedną funkcję dają:

co czyni to F -algebrą dla endofunktora F wysyłającego X do 1 + ( A × X ) . W rzeczywistości jest to początkowa F - algebra . Inicjalność jest ustalana przez funkcję znaną jako foldr w funkcjonalnych językach programowania, takich jak Haskell i ML .

Podobnie drzewa binarne z elementami na liściach można otrzymać jako algebrę początkową

Otrzymane w ten sposób typy są znane jako algebraiczne typy danych .

Typy zdefiniowane za pomocą konstrukcji najmniejszego punktu stałego z funktorem F można uważać za początkową F -algebrę, pod warunkiem, że dla typu obowiązuje parametryczność .

W dwojaki sposób podobny związek istnieje między pojęciami największego punktu stałego i końcowej F -koalgebry, z zastosowaniami do typów koindukcyjnych . Można ich używać do dopuszczania potencjalnie nieskończonych obiektów przy zachowaniu silnej właściwości normalizacji . W silnie normalizującym (każdy program się kończy) języku programowania Charity, koindukcyjne typy danych mogą być wykorzystywane do uzyskiwania zaskakujących wyników , np . .

Zobacz też

Notatki

  1. ^ a b Philip Wadler: Typy rekurencyjne za darmo! University of Glasgow, lipiec 1998. Wersja robocza.
  2. ^ Robin Cockett: Myśli charytatywne ( ps.gz )

Linki zewnętrzne