Přirozená transformace

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání

V teorii kategorií je přirozená transformace způsob, jakým se navzájem transformují dva funktory mezi stejnými kategoriemi tak, že se zachovává vnitřní struktura (tzn. skládání morfismů) příslušných kategorií. Po kategoriích a funktorech jsou přirozené transformace jedním ze základních konceptů teorie kategorií, objevují se tedy ve většině jejích aplikací.

Definice[editovat | editovat zdroj]

Mějme dvě kategorie a dva funktory mezi nimi: . Přirozená transformace z do pak je soubor morfismů v kategorii obsahující pro každé jednu složku , přičemž pro každý morfismus (v kategorii ) platí

.

Tato podmínka vyjadřuje, že existuje následující komutativní diagram (zobrazující morfismy v kategorii ):

Komutativní diagram přirozené transformace η

Jinými slovy, definice přirozené transformace říká, že pro každý morfismus v kategorii existuje v kategorii právě jeden morfismus . V případě je tímto morfismem , obecně pak výsledný morfismus tvoří diagonálu ve výše zobrazeném komutativním diagramu, která je jednoznačná právě díky komutativnosti tohoto diagramu (a přirozenou transformaci pak lze chápat jako mapování morfismů na komutativní čtverce).

V případě, že složky jsou pro každé izomorfismem, označuje se jako přirozený izomorfismus (též přirozená ekvivalence nebo ekvivalence funktorů).

Příkladem izomorfismu používaným ve funkcionálním programování je

.

Skládání přirozených transformací[editovat | editovat zdroj]

Přirozené transformace lze též skládat; existují přitom dva způsoby, jakým na sebe mohou skládané transformace navazovat, podle běžného způsobu znázornění na diagramu se tyto dva způsoby skládání označují jako vertikální a horizontální:

Horizontální a vertikální skládání přirozených transformací

Jsou-li tři funktory mezi dvěma stejnými kategoriemi a přirozené transformace mezi těmito funktory, pak můžeme tyto dvě transformace složit (vertikálně), přičemž platí

.

Vertikální skládání je tedy asociativní a má identitu (identitní přirozenou transformaci transformující funktor sám na sebe). Díky tomu se lze pro každou dvojici kategorií dívat na soubor všech funktorů spolu s přirozenými transformace mezi nimi jako na kategorii; viz kategorie funktorů.

Vedle toho můžeme definovat také horizontální skládání: máme-li dvě dvojice funktorů a a dvě odpovídající přirozené transformace a , můžeme jejich horizontálním složením získat přirozenou transformaci mezi složenými funktory, jež je vzhledem k vlastnostem přirozených transformací dobře definovaná.

Horizontální a vertikální skládání lze kombinovat, neboť platí

Funkcionální programování[editovat | editovat zdroj]

Ve funkcionálním programování odpovídají funktorům (přesněji endofunktorům v kategorii typů daného programovacího jazyka a funkcí mezi nimi) generické typy, které poskytují operaci fmap mapující funkce na funkce. Přirozenou transformací pak je generická funkce mapující dva generické typy mezi sebou. Pokud například existují generické typy List<T> a Set<T>, odpovídá přirozené transformaci generická funkce List<T> → Set<T>. Podmínka komutativnosti přirozené transformace pak znamená, že dvě možnosti, jak provést konverzi např. z List<int> na Set<string> (buď nejprve zkonvertovat List<int> na List<string> pomocí fmap a následně zkonvertovat List<string> na Set<string> pomocí generické funkce pro transformaci, anebo naopak nejprve ztransformovat List<int> na Set<int> a poté aplikovat fmap pro konverzi Set<int> na Set<string>) musí dát stejný výsledek.

Přirozené transformace jsou také nedílnou součástí definice monád a monadických operátorů.

Reference[editovat | editovat zdroj]

  • LEINSTER, Tom. Basic Category Theory. Cambridge: Cambridge University Press, 2014. (Cambridge Studies in Advanced Mathematics; sv. 143). Bibcode:2016arXiv161209375L. arXiv:1612.09375 [math.CT]. Kapitola 1.3 Natural transformations, s. 27–38.