Teoria kategorii dla informatyków

From Studia Informatyczne

Spis treści

Forma zajęć

Wykład (30 godzin) + ćwiczenia (30 godzin)

Opis

Stefan Banach powiedział kiedyś, że dobry matematyk to taki, który potrafi znaleźć analogie pomiędzy twierdzeniami, zaś wybitny matematyk to ten, który widzi analogie pomiędzy analogiami. Teoria kategorii jest nauką o analogiach między teoriami matematycznymi. Daje ona jednolity obraz różnorodnych (tzw. uniwersalnych) konstrukcji, które pod wieloma postaciami i nazwami pojawiają się w różnorodnych gałęziach matematyki.

Teoria kategorii wyrosła z prac Samuela Eilenberga i Saundersa MacLane'a w topologii algebraicznej i algebrze homologicznej prowadzonych w latach 40. ubiegłego stulecia. Od tamtego czasu zarówno język, jak i metody teorii kategorii spowodowały ujednolicenie i uproszczenie wielu pojęć algebry, topologii, geometrii algebraicznej, analizy funkcjonalnej, a także, ostatnimi czasy, logiki matematycznej i informatyki teoretycznej.

Wykład ma za cel uświadomienie słuchaczom jedności wielu dyscyplin matematycznych, które są często prezentowane jako oddzielne, niezwiązane ze sobą przedmioty. Zbadamy zastosowania teorii kategorii w informatyce. Omawiamy przykłady konstrukcji uniwersalnych z różnorodnych gałęzi matematyki i informatyki: analizy, algebry, logiki, topologii, teorii dziedzin i semantyki języków programowania, lambda rachunku, teorii obliczalności. Student, który ukończy kurs z oceną pozytywną powinien sprawnie posługiwać się podstawowym aparatem pojęciowym teorii kategorii, który jest często oficjalnym językiem wielu prac naukowych w informatyce teoretycznej.

Sylabus

Autor

  • Paweł Waszkiewicz - Uniwersytet Jagielloński, Wydział Matematyki i Informatyki, Zakład Podstaw Informatyki.

Wymagania wstępne

  • Logika i teoria mnogości

Zawartość

Część pierwsza wykładu obejmuje tematy fundamentalne: kategorie, funktory, transformacje naturalne, równoważność kategorii, zasadę dualności, granice i kogranice, lemat Yonedy i funktory reprezentowalne, sprzężenia i monady. Część druga skupia się na zastosowaniach teorii kategorii w informatyce, wybierając spośród tematów dotyczących: kategorii kartezjańsko zamkniętych i lambda rachunku, koalgebr, koindukcji i bisymulacji, teorii dziedzin i rozwiązywania równań na dziedzinach. Ćwiczenia, ilustrujące wykład, budują zestaw sztandarowych przykładów konkretnych kategorii, funktorów i ich własności.

  • Teoria kategorii jako abstrakcyjna teoria funkcji
    • definicja
    • przykłady: k.dyskretne, k.konkretne, Pos, monoidy, grupy jako kategorie, etc.
    • izomorfizmy
    • podstawy teoriomnogościowe: kategorie małe, duże, lokalnie małe
  • Morfizmy specjalne
    • monomorfizmy i epimorfizmy
    • sekcje i retrakcje
    • uogólnione elementy
  • Zasada dualności i proste konstrukcje uniwersalne
    • produkty i koprodukty
    • pulbaki i pushouty
    • ekwalizatory i koekwalizatory
    • obiekt końcowy i początkowy
    • własności pulbaków
  • Zaawansowane konstrukcje uniwersalne
    • eksponent
    • kategorie kartezjańsko zamknięte; algebry Heytinga
  • Funktory i transformacje naturalne
    • pojecie funktora, przykłady
    • funktory zapominania
    • funktory pełne i wierne
    • transformacje naturalne; naturalne izomorfizmy
  • Równoważność kategorii
    • dualność Stone'a
  • Lemat Yonedy i funktory reprezentowalne
    • Lemat Yonedy, funktor Yonedy
    • funktory reprezentowalne
  • Diagramy, granice i kogranice
    • konstrukcje uniwersalne jako granice
    • zachowywanie granic przez funktory; funktory ciągłe
    • granice w kategoriach funktorow
    • kategorie zupełne i kozupełne
  • Sprzężenia I
    • trzy równoważne opisy zjawiska sprzężenia
    • sprzężenia w teoriach matematycznych: przykłady
    • sprzężenia jako fundamentalne pojęcie teorii kategorii
  • Sprzężenia II
    • sprzężenia a równoważność kategorii
    • sprzężenia między posetami
    • kwantyfikatory jako sprzężenia
    • twierdzenie Freyda o istnieniu sprzężeń
  • Monady
    • monady a sprzężenia
    • algebry dla monad
    • monady w Haskellu
  • Teoria dziedzin I
    • ciągłość, zupełność i aproksymacja
    • topologia Scotta
  • Teoria dziedzin II
    • dziedziny Scotta jako modele języków funkcyjnych
    • kartezjańsko zamknięte kategorie dziedzin
  • Teoria dziedzin III
    • rekursywne równania na dziedzinach typu D\cong [D,D]
  • Algebry i koalgebry endofunktorów
    • algebry i indukcja
    • koalgebry i koindukcja, bisymulacja
    • dowody koindukcyjne własności list

Literatura

  1. A. Asperti, G.Longo, Categories, Types and Structures. An introduction to Category Theory for the working Computer Scientist, MIT Press, 1991.
  2. S. Awodey Category theory. Wykład z uniwersytetu Carnegie Mellon. Dostępny tutaj.
  3. M. Barr, C. Wells, Category Theory for Computing Science, Cambridge University Press, 1995.
  4. S. MacLane, Categories for the Working Mathematician, Springer 1991.
  5. D. Turi, Category Theory Lecture Notes. Wykład z uniwersytetu w Edynburgu. Dostępny tutaj.

Moduły

  1. Teoria kategorii jako abstrakcyjna teoria funkcji (ćwiczenia) (test)
  2. Morfizmy specjalne (ćwiczenia) (test)
  3. Zasada dualności i proste konstrukcje uniwersalne (ćwiczenia) (test)
  4. Zaawansowane konstrukcje uniwersalne (ćwiczenia) (test)
  5. Funktory i transformacje naturalne (ćwiczenia) (test)
  6. Równoważność kategorii (ćwiczenia) (test)
  7. Lemat Yonedy i funktory reprezentowalne (ćwiczenia) (test)
  8. Diagramy, granice i kogranice (ćwiczenia) (test)
  9. Sprzężenia I (ćwiczenia) (test)
  10. Sprzężenia II (ćwiczenia) (test)
  11. Monady (ćwiczenia) (test)
  12. Teoria dziedzin I (ćwiczenia) (test)
  13. Teoria dziedzin II (ćwiczenia) (test)
  14. Teoria dziedzin III (ćwiczenia) (test)
  15. Algebry i koalgebry endofunktorów (ćwiczenia) (test)