Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducere în Teoria Categoriilor

Introducere în Teoria Categoriilor

Bucharest FP

July 17, 2014
Tweet

More Decks by Bucharest FP

Other Decks in Science

Transcript

  1. Introducere ˆ ın Teoria Categoriilor Adriana Balan Universitatea Politehnica din

    Bucure¸ sti 17 Iulie 2014 Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 1 / 24
  2. Teoria Categoriilor (1942-1945) Samuel Eilenberg (1913–1998) Saunders MacLane (1909–2005) Adriana

    Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 2 / 24
  3. Teoria Categoriilor ˆ ın Computer Science Adriana Balan (UPB) Introducere

    ˆ ın Teoria Categoriilor 17 Iulie 2014 3 / 24
  4. Outline Categorii, functori Algebre ¸ si coalgebre Adriana Balan (UPB)

    Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 4 / 24
  5. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  6. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  7. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  8. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 dom f = A codom f = B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  9. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 dom f = A f  codom f = B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  10. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 id oo dom f = A f  codom f = B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  11. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 id oo id oo dom f = A f  A idA  codom f = B A Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  12. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 id oo id oo dom f = A f  A idA  codom f = B A Compunerea s˘ aget ¸ilor: f // g // Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  13. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 id oo id oo dom f = A f  A idA  codom f = B A Compunerea s˘ aget ¸ilor: A f // B = B g // C Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  14. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 id oo id oo dom f = A f  A idA  codom f = B A Compunerea s˘ aget ¸ilor: A f // B g // C Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  15. Categorii (I) Categorie C: Mult ¸ime de obiecte C0: A,

    B, C, . . . Mult ¸ime de s˘ aget ¸i C1: f , g, . . . Funct ¸ii: C1 codom // dom // C0 id oo id oo dom f = A f  A idA  codom f = B A Compunerea s˘ aget ¸ilor: A g◦f  f // B g // C Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 5 / 24
  16. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  17. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii A f // B g // C h // D Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  18. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii A f // B h◦g  g // C h // D Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  19. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii A (h◦g)◦f  f // B h◦g  g // C h // D Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  20. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii A (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  21. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  22. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii (h ◦ g) ◦ f A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D = h ◦ (g ◦ f ) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  23. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii (h ◦ g) ◦ f A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D = h ◦ (g ◦ f ) Invariant ¸a compunerii cu s˘ ageata identic˘ a A f // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  24. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii (h ◦ g) ◦ f A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D = h ◦ (g ◦ f ) Invariant ¸a compunerii cu s˘ ageata identic˘ a A f // B idB // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  25. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii (h ◦ g) ◦ f A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D = h ◦ (g ◦ f ) Invariant ¸a compunerii cu s˘ ageata identic˘ a A idB ◦f =f  f // B idB // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  26. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii (h ◦ g) ◦ f A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D = h ◦ (g ◦ f ) Invariant ¸a compunerii cu s˘ ageata identic˘ a A idA // A idB ◦f =f  f // B idB // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  27. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii (h ◦ g) ◦ f A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D = h ◦ (g ◦ f ) Invariant ¸a compunerii cu s˘ ageata identic˘ a A f ◦idA=f OO idA // A idB ◦f =f  f // B idB // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  28. Categorii (II) C =(Obiecte C0, S˘ aget ¸i C1, Compunere

    ◦, Identitate id) Asociativitatea compunerii (h ◦ g) ◦ f A h◦(g◦f ) OO (h◦g)◦f  g◦f OO f // B h◦g  g // C h // D = h ◦ (g ◦ f ) Invariant ¸a compunerii cu s˘ ageata identic˘ a idB ◦ f A f ◦idA=f OO idA // A idB ◦f =f  f // B idB // B = f f ◦ idA Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 6 / 24
  29. Exemple (I) 1 Set Obiecte: mult ¸imi A, B, .

    . . S˘ aget ¸i: funct ¸ii f :: A → B Identitate: funct ¸ia identic˘ a Compunere: compunerea uzual˘ a a funct ¸iilor Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 7 / 24
  30. Exemple (I) 1 Set Obiecte: mult ¸imi A, B, .

    . . S˘ aget ¸i: funct ¸ii f :: A → B Identitate: funct ¸ia identic˘ a Compunere: compunerea uzual˘ a a funct ¸iilor 2 Monoids Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 7 / 24
  31. Exemple (I) 1 Set Obiecte: mult ¸imi A, B, .

    . . S˘ aget ¸i: funct ¸ii f :: A → B Identitate: funct ¸ia identic˘ a Compunere: compunerea uzual˘ a a funct ¸iilor 2 Monoids Obiecte: monoizi (M, ·, e) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 7 / 24
  32. Exemple (I) 1 Set Obiecte: mult ¸imi A, B, .

    . . S˘ aget ¸i: funct ¸ii f :: A → B Identitate: funct ¸ia identic˘ a Compunere: compunerea uzual˘ a a funct ¸iilor 2 Monoids Obiecte: monoizi (M, ·, e) Haskell: class Monoid m where mappend :: m -> m -> m mempty :: m mempty ‘mappend‘ x = x x ‘mappend‘ mempty = x (x ‘mappend‘ y) ‘mappend‘ z = x ‘mappend‘ (y ‘mappend‘ z) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 7 / 24
  33. Exemple (I) 1 Set Obiecte: mult ¸imi A, B, .

    . . S˘ aget ¸i: funct ¸ii f :: A → B Identitate: funct ¸ia identic˘ a Compunere: compunerea uzual˘ a a funct ¸iilor 2 Monoids Obiecte: monoizi (M, ·, e) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 7 / 24
  34. Exemple (I) 1 Set Obiecte: mult ¸imi A, B, .

    . . S˘ aget ¸i: funct ¸ii f :: A → B Identitate: funct ¸ia identic˘ a Compunere: compunerea uzual˘ a a funct ¸iilor 2 Monoids Obiecte: monoizi (M, ·, e) S˘ aget ¸i: morfisme de monoizi Identitate: morfismul identitate Compunere: compunerea uzual˘ a a funct ¸iilor Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 7 / 24
  35. Exemple (II) 1 Mult ¸ime (pre)ordonat˘ a (A, ≤) Obiecte:

    elementele mult ¸imii A S˘ aget ¸i: x → y ⇐⇒ x ≤ y Identitate: x → x reflexivitate ⇐⇒ x ≤ x Compunere: x → y → z ⇐⇒ x ≤ y ≤ z tranzitivitate =⇒ x ≤ z ⇐⇒ x → z Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 8 / 24
  36. Exemple (II) 1 Mult ¸ime (pre)ordonat˘ a (A, ≤) Obiecte:

    elementele mult ¸imii A S˘ aget ¸i: x → y ⇐⇒ x ≤ y Identitate: x → x reflexivitate ⇐⇒ x ≤ x Compunere: x → y → z ⇐⇒ x ≤ y ≤ z tranzitivitate =⇒ x ≤ z ⇐⇒ x → z 2 Monoid (M, ·, e) Obiecte: un singur obiect, notat ∗ S˘ aget ¸i: elementele monoidului: pentru fiecare x ∈ M, un morfism ∗ x − → ∗ Identitate: elementul neutru e al monoidului M Compunere: operat ¸ia binar˘ a pe M: ∗ x − → ∗ ∗ y − → ∗ ∗ xy − → ∗ Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 8 / 24
  37. Exemple (III) Categoria Hask Obiecte: tipuri Haskell (kind ∗)1 1

    f˘ ar˘ a ⊥ (http://www.haskell.org/haskellwiki/Hask) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 9 / 24
  38. Exemple (III) Categoria Hask Obiecte: tipuri Haskell (kind ∗)1 S˘

    aget ¸i: funct ¸ii Haskell id :: a -> a (.) :: (b -> c) -> (a -> b) -> a -> c g . f = \x -> g (f x) 1 f˘ ar˘ a ⊥ (http://www.haskell.org/haskellwiki/Hask) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 9 / 24
  39. Exemple (III) Categoria Hask Obiecte: tipuri Haskell (kind ∗)1 S˘

    aget ¸i: funct ¸ii Haskell id :: a -> a (.) :: (b -> c) -> (a -> b) -> a -> c g . f = \x -> g (f x) Int, Char :: ∗ [ ], Maybe :: ∗ − > ∗ [Int], Maybe Bool :: ∗ 1 f˘ ar˘ a ⊥ (http://www.haskell.org/haskellwiki/Hask) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 9 / 24
  40. Functori (I) C F // D Adriana Balan (UPB) Introducere

    ˆ ın Teoria Categoriilor 17 Iulie 2014 10 / 24
  41. Functori (I) C F // D A  // FA

    Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 10 / 24
  42. Functori (I) C F // D A  // FA

    A f  → FA Ff  B FB Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 10 / 24
  43. Functori (I) C F // D A  // FA

    A f  → FA Ff  B FB A idA  → FA idFA  A FA Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 10 / 24
  44. Functori (I) C F // D A  // FA

    A f  → FA Ff  B FB A g◦f  f // B g  → FA Fg◦Ff !! Ff // FB Fg  C FC Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 10 / 24
  45. Functori (I) C F // D A  // FA

    A f  → FA Ff  B FB A idA  → FA idFA  A g◦f  f // B g  → FA Fg◦Ff !! Ff // FB Fg  A FA C FC FidA=idFA F(g◦f )=Fg◦Ff Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 10 / 24
  46. Functori (II) Haskell: functorii sunt constructori de tipuri (kind ∗

    − > ∗) class Functor (f :: * -> *) where fmap :: (a -> b) -> f a -> f b fmap id = id fmap (f . g) = fmap f . fmap g Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 11 / 24
  47. Exemple 1 Functorul p˘ art ¸ilor Set P → Set

    A  // PA mult ¸imea submult ¸imilor lui A A f  → PA Pf  X ⊆ A _  B PB {b ∈ B | ∃a ∈ X . b = f (a)} Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 12 / 24
  48. Exemple 1 Functorul p˘ art ¸ilor Set P → Set

    A  // PA mult ¸imea submult ¸imilor lui A A f  → PA Pf  X ⊆ A _  B PB {b ∈ B | ∃a ∈ X . b = f (a)} 2 Functorul listelor. Set List → Set, A → ListA A f  → List(A) List(f )  [ ] → [aa . . . an] _  B List(B) [ ] [fa1 . . . fan] Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 12 / 24
  49. Exemple 1 Functorul p˘ art ¸ilor Set P → Set

    A  // PA mult ¸imea submult ¸imilor lui A A f  → PA Pf  X ⊆ A _  B PB {b ∈ B | ∃a ∈ X . b = f (a)} 2 Functorul listelor. Set List → Set, A → ListA A f  → List(A) List(f )  [ ] → [aa . . . an] _  B List(B) [ ] [fa1 . . . fan] instance Functor List where fmap f [] = [] fmap f x:xs = (f x) : fmap xs Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 12 / 24
  50. Exemple 1 Functorul p˘ art ¸ilor Set P → Set

    A  // PA mult ¸imea submult ¸imilor lui A A f  → PA Pf  X ⊆ A _  B PB {b ∈ B | ∃a ∈ X . b = f (a)} 2 Functorul listelor. Set List → Set, A → ListA A f  → List(A) List(f )  [ ] → [aa . . . an] _  B List(B) [ ] [fa1 . . . fan] instance Functor List where fmap = map Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 12 / 24
  51. Outline Am aflat ce sunt categoriile ¸ si functorii Adriana

    Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 13 / 24
  52. Outline Am aflat ce sunt categoriile ¸ si functorii Urmeaz˘

    a: algebre ¸ si coalgebre Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 13 / 24
  53. Algebre ¸ si coalgebre Algebra: ˆ ın Matematic˘ a: (mult

    ¸ime, operat ¸ii, ecuat ¸ii) ˆ ın Computer Science: un proces / ma¸ sin˘ a / program algebra init ¸ial˘ a:2 definit ¸ie(implementare) recursiv˘ a: constructor demonstrat ¸ie inductiv˘ a Coalgebra: black box coalgebra final˘ a:3 definit ¸ie(implementare) corecursiv˘ a (lazy): deconstructor demonstrat ¸ie coinductiv˘ a 2J.A. Goguen, J. Thatcher, E. Wagner. An initial algebra approach to the specification, correctness and implementation of abstract data types, 1978. 3P. Aczel, N. Mendler. A final coalgebra theorem, 1989. Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 14 / 24
  54. Algebre F : C → C functor Adriana Balan (UPB)

    Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  55. Algebre F : C → C functor F-algebr˘ a FA

    f → A Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  56. Algebre F : C → C functor F-algebr˘ a FA

    f → A Morfism de F-algebre Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  57. Algebre F : C → C functor F-algebr˘ a FA

    f → A Morfism de F-algebre FA f // A FB g // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  58. Algebre F : C → C functor F-algebr˘ a FA

    f → A Morfism de F-algebre FA f // A ϕ  FB g // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  59. Algebre F : C → C functor F-algebr˘ a FA

    f → A Morfism de F-algebre FA f // Fϕ  A ϕ  FB g // B Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  60. Algebre F : C → C functor F-algebr˘ a FA

    f → A Morfism de F-algebre FA f // Fϕ  A ϕ  FB g // B ϕ ◦ f = g ◦ Fϕ Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  61. Algebre F : C → C functor F-algebr˘ a FA

    f → A Morfism de F-algebre FA f // Fϕ  A ϕ  FB g // B ϕ ◦ f = g ◦ Fϕ Categorie Alg(F) Obiecte: F-algebre S˘ aget ¸i: Morfisme de F-algebre Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  62. Algebre F : C → C functor F-algebr˘ a FA

    f → A Morfism de F-algebre FA f // Fϕ  A ϕ  FB g // B ϕ ◦ f = g ◦ Fϕ Categorie Alg(F) Obiecte: F-algebre S˘ aget ¸i: Morfisme de F-algebre Functor care ”uit˘ a” structura de F-algebr˘ a Alg(F) U → C Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 15 / 24
  63. Exemple (I) Functor: F : Set→Set FA = 1 +

    A Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 16 / 24
  64. Exemple (I) Functor: F : Set→Set FA = 1 +

    A Haskell: data Maybe a = Nothing | Just a instance Functor Maybe where fmap Nothing = Nothing fmap f (Just x) = Just (f x) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 16 / 24
  65. Exemple (I) Functor: F : Set→Set FA = 1 +

    A F-algebr˘ a: mult ¸ime A, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A → A Haskell: data Maybe a = Nothing | Just a instance Functor Maybe where fmap Nothing = Nothing fmap f (Just x) = Just (f x) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 16 / 24
  66. Exemple (I) Functor: F : Set→Set FA = 1 +

    A F-algebr˘ a: mult ¸ime A, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A → A init :: 1 → A (init ∈ A) next :: A → A Haskell: data Maybe a = Nothing | Just a instance Functor Maybe where fmap Nothing = Nothing fmap f (Just x) = Just (f x) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 16 / 24
  67. Exemple (I) Functor: F : Set→Set FA = 1 +

    A F-algebr˘ a: mult ¸ime A, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A → A init :: 1 → A (init ∈ A) next :: A → A (A, [init, next] :: 1 + A → A) sistem dinamic / algebr˘ a Peano Haskell: data Maybe a = Nothing | Just a instance Functor Maybe where fmap Nothing = Nothing fmap f (Just x) = Just (f x) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 16 / 24
  68. Exemple (I) Functor: F : Set→Set FA = 1 +

    A F-algebr˘ a: mult ¸ime A, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A → A init :: 1 → A (init ∈ A) next :: A → A (A, [init, next] :: 1 + A → A) sistem dinamic / algebr˘ a Peano Morfism de F-algebre: ϕ :: A → B ϕ init = init ϕ $ next x = next $ ϕ x Haskell: data Maybe a = Nothing | Just a instance Functor Maybe where fmap Nothing = Nothing fmap f (Just x) = Just (f x) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 16 / 24
  69. Exemple (II) Functor: F : Set→Set FX = 1 +

    A × X, unde A este o mult ¸ime de etichete/input-uri/caractere Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 17 / 24
  70. Exemple (II) Functor: F : Set→Set FX = 1 +

    A × X, unde A este o mult ¸ime de etichete/input-uri/caractere Haskell data MyFunctor a x = Nil | Cons (a x) instance Functor MyFunctor a where fmap Nil = Nil fmap f (Cons val a val x) = Cons (val a (f val x)) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 17 / 24
  71. Exemple (II) Functor: F : Set→Set FX = 1 +

    A × X, unde A este o mult ¸ime de etichete/input-uri/caractere F-algebr˘ a: mult ¸ime X, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A × X → X init :: 1 → X (init ∈ X) next :: A × X → X Haskell data MyFunctor a x = Nil | Cons (a x) instance Functor MyFunctor a where fmap Nil = Nil fmap f (Cons val a val x) = Cons (val a (f val x)) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 17 / 24
  72. Exemple (II) Functor: F : Set→Set FX = 1 +

    A × X, unde A este o mult ¸ime de etichete/input-uri/caractere F-algebr˘ a: mult ¸ime X, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A × X → X init :: 1 → X (init ∈ X) next :: A × X → X (X, [init, next] :: 1 + A × X → X) automat determinist Haskell data MyFunctor a x = Nil | Cons (a x) instance Functor MyFunctor a where fmap Nil = Nil fmap f (Cons val a val x) = Cons (val a (f val x)) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 17 / 24
  73. Exemple (II) Functor: F : Set→Set FX = 1 +

    A × X, unde A este o mult ¸ime de etichete/input-uri/caractere F-algebr˘ a: mult ¸ime X, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A × X → X init :: 1 → X (init ∈ X) next :: A × X → X (X, [init, next] :: 1 + A × X → X) automat determinist Morfism de F-algebre: ϕ :: X → Y ϕ init = init ϕ $ next a x = next $ a (ϕ x) Haskell data MyFunctor a x = Nil | Cons (a x) instance Functor MyFunctor a where fmap Nil = Nil fmap f (Cons val a val x) = Cons (val a (f val x)) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 17 / 24
  74. Exemple (II) Functor: F : Set→Set FX = 1 +

    A × X, unde A este o mult ¸ime de etichete/input-uri/caractere F-algebr˘ a: mult ¸ime X, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A × X → X init :: 1 → X (init ∈ X) next :: A × X → X (X, [init, next] :: 1 + A × X → X) automat determinist Morfism de F-algebre: ϕ :: X → Y ϕ init = init ϕ $ next a x = next $ a (ϕ x) Haskell data MyFunctor a x = Nil | Cons (a x) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 17 / 24
  75. Exemple (II) Functor: F : Set→Set FX = 1 +

    A × X, unde A este o mult ¸ime de etichete/input-uri/caractere F-algebr˘ a: mult ¸ime X, ˆ ımpreun˘ a cu o funct ¸ie f :: 1 + A × X → X init :: 1 → X (init ∈ X) next :: A × X → X (X, [init, next] :: 1 + A × X → X) automat determinist Morfism de F-algebre: ϕ :: X → Y ϕ init = init ϕ $ next a x = next $ a (ϕ x) Haskell data List a x = Nil | Cons (a List x) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 17 / 24
  76. Algebra init ¸ial˘ a / κατα-morphism Definit ¸ie Fie F

    : C → C un functor. F-algebra init ¸ial˘ a µF FµF in // µF Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 18 / 24
  77. Algebra init ¸ial˘ a / κατα-morphism Definit ¸ie Fie F

    : C → C un functor. F-algebra init ¸ial˘ a µF FµF in // µF FA f // A Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 18 / 24
  78. Algebra init ¸ial˘ a / κατα-morphism Definit ¸ie Fie F

    : C → C un functor. F-algebra init ¸ial˘ a µF FµF in // µF (|f |)  FA f // A (|f |) = catamorfismul (fold-ul) algebrei (A, f : FA → A) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 18 / 24
  79. Algebra init ¸ial˘ a / κατα-morphism Definit ¸ie Fie F

    : C → C un functor. F-algebra init ¸ial˘ a µF FµF in // F(|f |)  µF (|f |)  FA f // A (|f |) = catamorfismul (fold-ul) algebrei (A, f : FA → A) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 18 / 24
  80. Algebra init ¸ial˘ a / κατα-morphism Definit ¸ie Fie F

    : C → C un functor. F-algebra init ¸ial˘ a µF FµF in // F(|f |)  µF (|f |)  FA f // A (|f |) ◦ in = f ◦ F(|f |) (|f |) = catamorfismul (fold-ul) algebrei (A, f : FA → A) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 18 / 24
  81. Algebra init ¸ial˘ a / κατα-morphism Definit ¸ie Fie F

    : C → C un functor. F-algebra init ¸ial˘ a µF FµF in // F(|f |)  µF (|f |)  FA f // A (|f |) ◦ in = f ◦ F(|f |) (|f |) = catamorfismul (fold-ul) algebrei (A, f : FA → A) Catamorfismul (|f |) este un constructor. F-algebra init ¸ial˘ a este modelul minimal al (categoriei) F-algebrelor. Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 18 / 24
  82. Algebra init ¸ial˘ a / κατα-morphism Definit ¸ie Fie F

    : C → C un functor. F-algebra init ¸ial˘ a µF FµF in // F(|f |)  µF (|f |)  FA f // A (|f |) ◦ in = f ◦ F(|f |) (|f |) = catamorfismul (fold-ul) algebrei (A, f : FA → A) Catamorfismul (|f |) este un constructor. F-algebra init ¸ial˘ a este modelul minimal al (categoriei) F-algebrelor. Teorem˘ a (Lambek) FµF in // µF este un izomorfism. Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 18 / 24
  83. Exemple (I) Functor: F : Set → Set FA =

    1 + A Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 19 / 24
  84. Exemple (I) Functor: F : Set → Set FA =

    1 + A F-algebr˘ a: sistem dinamic (A, f = [init, next]) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 19 / 24
  85. Exemple (I) Functor: F : Set → Set FA =

    1 + A F-algebr˘ a: sistem dinamic (A, f = [init, next]) init _  // next(init) _  // next(next(init)) _  // . . . 0 1 2 . . . Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 19 / 24
  86. Exemple (I) Functor: F : Set → Set FA =

    1 + A F-algebr˘ a: sistem dinamic (A, f = [init, next]) init _  // next(init) _  // next(next(init)) _  // . . . 0 1 2 . . . F-algebra init ¸ial˘ a: (Nat, in = [zero, succ]) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 19 / 24
  87. Exemple (I) Functor: F : Set → Set FA =

    1 + A F-algebr˘ a: sistem dinamic (A, f = [init, next]) init _  // next(init) _  // next(next(init)) _  // . . . 0 1 2 . . . F-algebra init ¸ial˘ a: (Nat, in = [zero, succ]) Catamorfism: 1 + Nat [zero,succ] //  Nat (|f |)  1 + A [init,next] // A (|f|) zero = init (|f|) $ succ n = next $ (|f|) n Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 19 / 24
  88. Exemple (I) (|f|) :: Nat → (A, [init, next]) (|f|)

    zero = init (|f|) $ succ n = next $ (|f|) n Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 20 / 24
  89. Exemple (I) (|f|) :: Nat → (A, [init, next]) (|f|)

    zero = init (|f|) $ succ n = next $ (|f|) n addWith m:: Nat → Nat addWith m zero = m addWith m $ succ n = succ $ (addWith m n) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 20 / 24
  90. Exemple (I) (|f|) :: Nat → (A, [init, next]) (|f|)

    zero = init (|f|) $ succ n = next $ (|f|) n addWith m:: Nat → Nat addWith m zero = m addWith m $ succ n = succ $ (addWith m n) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 20 / 24
  91. Exemple (I) (|f|) :: Nat → (A, [init, next]) (|f|)

    zero = init (|f|) $ succ n = next $ (|f|) n addWith m:: Nat → Nat addWith m zero = m addWith m $ succ n = succ $ (addWith m n) isEven :: Nat → Bool isEven zero = true isEven $ succ n = not $ isEven n Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 20 / 24
  92. Exemple (I) (|f|) :: Nat → (A, [init, next]) (|f|)

    zero = init (|f|) $ succ n = next $ (|f|) n addWith m:: Nat → Nat addWith m zero = m addWith m $ succ n = succ $ (addWith m n) isEven :: Nat → Bool isEven zero = true isEven $ succ n = not $ isEven n Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 20 / 24
  93. Exemple (II) Functor: F : Set → Set FX =

    1 + A × X Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 21 / 24
  94. Exemple (II) Functor: F : Set → Set FX =

    1 + A × X F-algebr˘ a: (X, [init, next] : 1 + A × X → X) automat determinist Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 21 / 24
  95. Exemple (II) Functor: F : Set → Set FX =

    1 + A × X F-algebr˘ a: (X, [init, next] : 1 + A × X → X) automat determinist init _  a0 // next(a0, init) _  a1 // next(a1, next(a0, init)) _  // . . . [ ] [a0] [a1a0] . . . Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 21 / 24
  96. Exemple (II) Functor: F : Set → Set FX =

    1 + A × X F-algebr˘ a: (X, [init, next] : 1 + A × X → X) automat determinist init _  a0 // next(a0, init) _  a1 // next(a1, next(a0, init)) _  // . . . [ ] [a0] [a1a0] . . . F-algebra init ¸ial˘ a: ([A], in = [[ ], (:)]) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 21 / 24
  97. Exemple (II) Functor: F : Set → Set FX =

    1 + A × X F-algebr˘ a: (X, [init, next] : 1 + A × X → X) automat determinist init _  a0 // next(a0, init) _  a1 // next(a1, next(a0, init)) _  // . . . [ ] [a0] [a1a0] . . . F-algebra init ¸ial˘ a: ([A], in = [[ ], (:)]) Catamorfism: 1 + A × [A] [[ ],(:)] //  [A] (|f |)  1 + A × X f =[init,next] // X (|f |) [ ] = init (|f |) x : xs = next(x, ((|f |) xs)) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 21 / 24
  98. Exemple (II) (|f|) ::[A] -> (X,[init,next]) (|f|) nil = init

    (|f|) (x:xs) = next x ((|f|) xs) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 22 / 24
  99. Exemple (II) (|f|) ::[A] -> (X,[init,next]) (|f|) nil = init

    (|f|) (x:xs) = next x ((|f|) xs) length :: [A] -> Int length [] = 0 length x:xs = 1 + length xs Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 22 / 24
  100. Exemple (II) (|f|) ::[A] -> (X,[init,next]) (|f|) nil = init

    (|f|) (x:xs) = next x ((|f|) xs) length :: [A] -> Int length [] = 0 length x:xs = 1 + length xs Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 22 / 24
  101. Exemple (II) (|f|) ::[A] -> (X,[init,next]) (|f|) nil = init

    (|f|) (x:xs) = next x ((|f|) xs) length :: [A] -> Int length [] = 0 length x:xs = 1 + length xs double :: [A] -> [A] double [ ] = [ ] double x:xs = x:(x:double xs) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 22 / 24
  102. Exemple (II) (|f|) ::[A] -> (X,[init,next]) (|f|) nil = init

    (|f|) (x:xs) = next x ((|f|) xs) length :: [A] -> Int length [] = 0 length x:xs = 1 + length xs double :: [A] -> [A] double [ ] = [ ] double x:xs = x:(x:double xs) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 22 / 24
  103. Exemple (II) (|f|) ::[A] -> (X,[init,next]) (|f|) nil = init

    (|f|) (x:xs) = next x ((|f|) xs) length :: [A] -> Int length [] = 0 length x:xs = 1 + length xs double :: [A] -> [A] double [ ] = [ ] double x:xs = x:(x:double xs) append :: [A] -> [A] -> [A] append [ ] = id append (x:xs) ys = x:(append xs ys) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 22 / 24
  104. Exemple (II) (|f|) ::[A] -> (X,[init,next]) (|f|) nil = init

    (|f|) (x:xs) = next x ((|f|) xs) length :: [A] -> Int length [] = 0 length x:xs = 1 + length xs double :: [A] -> [A] double [ ] = [ ] double x:xs = x:(x:double xs) append :: [A] -> [A] -> [A] append [ ] = id append (x:xs) ys = x:(append xs ys) Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 22 / 24
  105. Dual: coalgebre To be continued... Adriana Balan (UPB) Introducere ˆ

    ın Teoria Categoriilor 17 Iulie 2014 23 / 24
  106. Referint ¸e Saunders MacLane. Categories for the Working Mathematician. Springer,

    1971 Steve Awodey. Category Theory, Oxford University Press, 2010 Benjamin Pierce,Basic Category Theory for Computer Scientists, MIT Press, 1991 R. F. C. Walters, Categories and Computer Science, Cambridge University Press, 1992 Michael Barr, Charles Wells, Category Theory fo Computing Science, Prentice Hall 1995 Adriana Balan (UPB) Introducere ˆ ın Teoria Categoriilor 17 Iulie 2014 24 / 24