Yoneda 1 Recap 1.1 Natural transformation Mějme funktory F, G : C —> V. Přirozená transformace a : F => G je soubor morfismů: a = {aa : F a —> G a \ a € C}, kde pro všechny morfismy / : a —>&,/€ C následující diagram komutuje: Fa Ga Fb Gb Pokud všechny aa jsou izo, pak F a G jsou přirozeně izomorfní. Pokud C je malá kategorie, pak Nat(F, G) bude značit množinu všech přirozených transformací z F do G. 1.2 Hom-functor Mějme malou kategorii C. Pak pro každé dva objekty a, b € C, C(a, b) je množina morfismů z a do b. Zafixujme si objekt cěC. Pak C(c, —) : C —> Set budeme nazývat hom-funktor. a i—■—> C(c, a) f |c(cj) b fci C(c,b) Jak ale vypadá C(c, /), aby nám diagram výše komutoval? C(c, /) : (g : c a) ^ (/ o ff : c 6) 2 Yoneda Mějme C malou kategorii, c G C a funktor F : C —> Set. Yonedovo lemma tvrdí Nat(C(c, -), F) ^ Fc, případně Func[C, Set] (C(c, -), F) = Fc. C(c,x) ^4 C(c,y) F f Fx--—> Fy Spoiler je na další stránce! Hned navrchu! 1 «*(/) = (F /) K idc) F c = {ac idc I a : C(c, -) F} 3 Yoneda in Haskell " homfunktor" Reader a x = a —> x "transformace" alpha : : forall x. (a —> x) —> F x "yoneda" forall x. (a—>x)—>Fx = Fa "co-yoneda" forall x. (x—>a)—>Fx = Fa 4 Yoneda embedding Yonedovo vložení: • Y+ : C -> Func[Cop, Set] • a i—> C( —, a) • (/ : a 6) h-> ({ac c € C} : Func[Cop, Set](C(-, a), C(-, &))) • "c(ff) = /°j(j:c^a) Hezčí yonedovo vložení: • Y* : Cop -> Func[C,Set] • a i—> C(a, —) • (/ : a 6) h-> ({ac c € C} : Func[C, Set](C(6, -),C(a, -))) • "c(ff) = go f (g:b^ c) C c Y > Set0"1* C<* c—!L_> setc f 1-^ C(-,0 C H> C(f,-) 5 YEiH Druhé yonedovo vložení: forall x.(a -> x) -> (b -> x) = b -> a. BtoA::B->A, fromY::(A -> x) -> (B -> x) fromY f b = f (BtoA b). BtoA b = fromY id b 2