Initial algebra

Inom matematiken är en initial algebra ett initialobjekt i kategorin F -algebror för en given endofunctor F . Denna initialitet ger en allmän ram för induktion och rekursion .

Exempel

Funktion 1 + (−)

Betrakta endofunktorn F : Set Ställ in att skicka X till 1 + X , där 1 är enpunktsuppsättningen ( singleton ) , terminalobjektet i kategorin. En algebra för denna endofunctor är en mängd X (kallad algebras bärare ) tillsammans med en funktion f : (1 + X ) → X . Att definiera en sådan funktion motsvarar att definiera en punkt och en funktion X X . Definiera

och

Då är mängden N av naturliga tal tillsammans med funktionen [noll,succ]: 1 + N N en initial F -algebra. Initialiteten (den universella egenskapen för detta fall) är inte svår att fastställa; den unika homomorfismen till en godtycklig F -algebra ( A , [ e , f ] ) , för e : 1 → A ett element av A och f : A A en funktion på A , är funktionen som skickar det naturliga talet n till f n ( e ) , det vill säga f ( f (…( f ( e ))...)) , den n -faldiga tillämpningen av f till e .

Mängden naturliga tal är bäraren för en initial algebra för denna funktion: punkten är noll och funktionen är efterföljande funktion .

Funktion 1 + N × (−)

För ett andra exempel, betrakta endofunktorn 1 + N × (−) i kategorin mängder, där N är mängden naturliga tal. En algebra för denna endofunctor är en mängd X tillsammans med en funktion 1 + N × X X . För att definiera en sådan funktion behöver vi en punkt och en funktion N × X X . Uppsättningen av ändliga listor av naturliga tal är en initial algebra för denna funktion. Poängen är den tomma listan, och funktionen är cons , tar ett tal och en finit lista och returnerar en ny finit lista med numret i spetsen.

I kategorier med binära samprodukter motsvarar de nyss angivna definitionerna de vanliga definitionerna av ett naturligt talobjekt respektive ett listobjekt .

Sista koalgebra

Dualt är en slutlig koalgebra ett terminalobjekt i kategorin F -koalgebra . Finaliteten ger en allmän ram för koinduktion och corecursion .

Till exempel, med samma funktion 1 + (−) som tidigare, definieras en koalgebra som en mängd X tillsammans med en funktion f : X → (1 + X ) . Att definiera en sådan funktion motsvarar att definiera en partiell funktion f' : X Y vars domän bildas av de för vilka f ( x ) hör till 1 . En sådan struktur kan ses som en kedja av mängder, X 0 på vilken f inte är definierad, X 1 vilka element mappar till X 0 med f , X 2 vilka element mappar till X 1 med f , etc. och X ω som innehåller de återstående elementen i X . Med detta i sikte är mängden bestående av mängden naturliga tal utökade med ett nytt element ω bäraren av den slutliga koalgebra i kategorin, där är föregångarens funktion ( inversen av efterföljarfunktionen) på de positiva naturliga, men fungerar som identiteten på det nya elementet ω : f ( n + 1) = n , f ( ω ) = ω . Denna mängd som är bäraren för den slutliga koalgebran av 1 + (−) är känd som uppsättningen av konaturliga tal.

För ett andra exempel, betrakta samma funktor 1 + N × (−) som tidigare. I detta fall består bäraren av den slutliga koalgebra av alla listor av naturliga tal, finita såväl som oändliga . Operationerna är en testfunktion som testar om en lista är tom, och en dekonstruktionsfunktion definierad på icke-tomma listor som returnerar ett par bestående av huvudet och svansen av inmatningslistan.

Satser

  • Initiala algebror är minimala (dvs. har ingen riktig subalgebra).
  • Slutliga koalgebras är enkla (dvs. har inga korrekta kvoter).

Används inom datavetenskap

Olika finita datastrukturer som används i programmering , såsom listor och träd , kan erhållas som initiala algebror för specifika endofunctors. Även om det kan finnas flera initiala algebror för en given endofunctor, är de unika upp till isomorfism , vilket informellt betyder att de "observerbara" egenskaperna hos en datastruktur kan fångas adekvat genom att definiera den som en initial algebra.

För att erhålla typen List( A ) av listor vars element är medlemmar i uppsättning A , tänk på att de listbildande operationerna är:

Kombinerade till en funktion ger de:

vilket gör detta till en F -algebra för endofunktorn F som skickar X till 1+ ( A × X ) . Det är faktiskt den initiala F -algebra. Initialitet etableras av funktionen som kallas foldr i funktionella programmeringsspråk som Haskell och ML .

Likaså kan binära träd med element vid bladen erhållas som initial algebra

Typer som erhålls på detta sätt är kända som algebraiska datatyper .

Typer definierade genom att använda minst fixpunktskonstruktion med funktion F kan betraktas som en initial F -algebra, förutsatt att parametrisiteten gäller för typen.

På ett dubbelt sätt finns ett liknande förhållande mellan föreställningar om största fixpunkt och terminal F -koalgebra, med tillämpningar på koduktiva typer. Dessa kan användas för att tillåta potentiellt oändliga objekt samtidigt som en stark normaliseringsegenskap bibehålls . I det starkt normaliserande (varje program avslutas) Charity-programmeringsspråket kan koduktiva datatyper användas för att uppnå överraskande resultat, t.ex. definiera uppslagskonstruktioner för att implementera sådana " starka" funktioner som Ackermann-funktionen .

Se även

Anteckningar

  1. ^ a b Philip Wadler: Rekursiva typer gratis! University of Glasgow, juli 1998. Utkast.
  2. ^ Robin Cockett: Välgörande tankar ( ps.gz )

externa länkar