Teoria kategorii dla informatyków: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Pqw (dyskusja | edycje)
Nie podano opisu zmian
Pqw (dyskusja | edycje)
 
(Nie pokazano 50 wersji utworzonych przez 5 użytkowników)
Linia 2: Linia 2:
Wykład (30 godzin) + ćwiczenia (30 godzin)
Wykład (30 godzin) + ćwiczenia (30 godzin)


== Autor ==  
== Opis ==
Paweł Waszkiewicz
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.


== Prerekwizyty ==
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.


Logika i teoria mnogości
== Sylabus ==
=== Autor ===
*Paweł Waszkiewicz - Uniwersytet Jagielloński, Wydział Matematyki i Informatyki, Zakład Podstaw Informatyki.


== Opis ==
=== Wymagania wstępne ===
Stefan Banach powiedział kiedyś, ze 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 40tych 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.
*Logika i teoria mnogości


=== Cel wykładu  ===
=== Zawartość ===
Po pierwsze, 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. Po drugie, 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 ocena pozytywna 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 ==
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.
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.


Linia 28: Linia 27:


* '''Morfizmy specjalne'''  
* '''Morfizmy specjalne'''  
** mono- i epimorfizmy  
** monomorfizmy i epimorfizmy  
** sekcje i retrakcje, przykłady w '''Pos''', '''Top'''
** sekcje i retrakcje
** uogólnione elementy, listy
** uogólnione elementy


* '''Zasada dualności i proste konstrukcje uniwersalne'''  
* '''Zasada dualności i proste konstrukcje uniwersalne'''  
** produkty i koprodukty  
** produkty i koprodukty  
** pullbacki i pushouty  
** pulbaki i pushouty  
** ekwalizatory i koekwalizatory  
** ekwalizatory i koekwalizatory  
** obiekt końcowy i początkowy  
** obiekt końcowy i początkowy  
** podobiekty
** własności pulbaków


* '''Zaawansowane konstrukcje uniwersalne'''  
* '''Zaawansowane konstrukcje uniwersalne'''  
** eksponent  
** eksponent  
** kategorie kartezjańsko zamknięte; algebry Heytinga
** kategorie kartezjańsko zamknięte; algebry Heytinga
** teoria zbiorów abstrakcyjnych: program Lawverego


* '''Funktory i transformacje naturalne'''
* '''Funktory i transformacje naturalne'''
** pojecie funktora, przykłady  
** pojecie funktora, przykłady  
** funktory wolne i funktory zapominania  
** funktory zapominania  
** funktory pełne i wierne
** funktory pełne i wierne
** transformacje naturalne; naturalne izomorfizmy
** transformacje naturalne; naturalne izomorfizmy
Linia 54: Linia 52:


* '''Lemat Yonedy i funktory reprezentowalne'''  
* '''Lemat Yonedy i funktory reprezentowalne'''  
** przykłady
** Lemat Yonedy, funktor Yonedy
** kategorie funktorów
** funktory reprezentowalne
   
   
* '''Diagramy, granice i kogranice'''  
* '''Diagramy, granice i kogranice'''  
** konstrukcje uniwersalne jako granice  
** konstrukcje uniwersalne jako granice  
** granice jako funktory
** zachowywanie granic przez funktory; funktory ciągłe
** zachowywanie granic przez funktory; funktory ciągłe
** kogranice i eksponent w kategoriach diagramów
** granice w kategoriach funktorow
** kategorie zupełne i kozupełne
** kategorie zupełne i kozupełne


Linia 70: Linia 67:


* '''Sprzężenia II'''
* '''Sprzężenia II'''
** sprzężenia a równoważność kategorii
** sprzężenia między posetami
** sprzężenia między posetami
** kwantyfikatory jako sprzężenia
** kwantyfikatory jako sprzężenia
** twierdzenie Freyda (zachowywanie granic przez sprzężenia)
** twierdzenie Freyda o istnieniu sprzężeń


* '''Monady'''  
* '''Monady'''  
** monady a sprzężenia  
** monady a sprzężenia  
** algebry dla monad  
** algebry dla monad  
** zastosowania teorii monad w semantyce języków programowania
** monady w Haskellu


* '''Teoria dziedzin I'''
* '''Teoria dziedzin I'''
** ciągłość, zupełność i aproksymacja
** ciągłość, zupełność i aproksymacja
** topologia Scotta
** topologia Scotta
** kartezjańsko zamknięte kategorie dziedzin; posety bc-zupełne


* '''Teoria dziedzin II'''
* '''Teoria dziedzin II'''
** dziedziny Scotta jako modele języków funkcyjnych
** dziedziny Scotta jako modele języków funkcyjnych
** równania na dziedzinach typu <math>D\cong [D\to D]</math>
** kartezjańsko zamknięte kategorie dziedzin


* '''Ilościowa teoria dziedzin'''
* '''Teoria dziedzin III'''
** uogólnione przestrzenie metryczne
** rekursywne równania na dziedzinach typu <math>D\cong [D,D]</math>
** dziedziny quasimetryzowalne
** problemy otwarte ilościowej teorii dziedzin


* '''Algebry i koalgebry endofunktorów'''
* '''Algebry i koalgebry endofunktorów'''
** indukcja i koindukcja
** algebry i indukcja
** analiza na nieskończonych listach
** koalgebry i koindukcja, bisymulacja
** weryfikacja algorytmów sortujących listy
** dowody koindukcyjne własności list


== Literatura ==
=== Literatura ===


#A. Asperti, G.Longo, ''Categories, Types and Structures. An introduction to Category Theory for the working Computer Scientist'', MIT Press, 1991.
#A. Asperti, G.Longo, ''Categories, Types and Structures. An introduction to Category Theory for the working Computer Scientist'', MIT Press, 1991.
Linia 107: Linia 102:


== Moduły ==
== Moduły ==
* [[TKI Moduł 1| Teoria kategorii jako abstrakcyjna teoria funkcji]] ([[TKI Ćwiczenia 1|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 1: Teoria kategorii jako abstrakcyjna teoria funkcji|Teoria kategorii jako abstrakcyjna teoria funkcji]] ([[Teoria kategorii dla informatyków/Ćwiczenia 1: Teoria kategorii jako abstrakcyjna teoria funkcji|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 1: Teoria kategorii jako abstrakcyjna teoria funkcji|test]])
* [[TKI Moduł 2| Morfizmy specjalne]] ([[TKI Ćwiczenia 2|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 2: Morfizmy specjalne|Morfizmy specjalne]] ([[Teoria kategorii dla informatyków/Ćwiczenia 2: Morfizmy specjalne|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 2: Morfizmy specjalne|test]])
* [[TKI Moduł 3| Zasada dualności i proste konstrukcje uniwersalne]] ([[TKI Ćwiczenia 3|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 3: Zasada dualności i proste konstrukcje uniwersalne|Zasada dualności i proste konstrukcje uniwersalne]] ([[Teoria kategorii dla informatyków/Ćwiczenia 3: Zasada dualności i proste konstrukcje uniwersalne|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 3: Zasada dualności i proste konstrukcje uniwersalne|test]])
* [[TKI Moduł 4| Zaawansowane konstrukcje uniwersalne]] ([[TKI Ćwiczenia 4|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 4: Zaawansowane konstrukcje uniwersalne|Zaawansowane konstrukcje uniwersalne]] ([[Teoria kategorii dla informatyków/Ćwiczenia 4: Zaawansowane konstrukcje uniwersalne|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 4: Zaawansowane konstrukcje uniwersalne|test]])
* [[TKI Moduł 5| Funktory i transformacje naturalne]] ([[TKI Ćwiczenia 5|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 5: Funktory i transformacje naturalne|Funktory i transformacje naturalne]] ([[Teoria kategorii dla informatyków/Ćwiczenia 5: Funktory i transformacje naturalne|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 5: Funktory i transformacje naturalne|test]])
* [[TKI Moduł 6| Równoważność kategorii]] ([[TKI Ćwiczenia 6|Ćwiczenia]])
# [[Teoria_kategorii dla informatyków/Wykład 6: Równoważność kategorii|Równoważność kategorii]] ([[Teoria kategorii dla informatyków/Ćwiczenia 6: Równoważność kategorii|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 6: Równoważność kategorii|test]])
* [[TKI Moduł 7| Lemat Yonedy i funktory reprezentowalne]] ([[TKI Ćwiczenia 7|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 7: Lemat Yonedy i funktory reprezentowalne|Lemat Yonedy i funktory reprezentowalne]] ([[Teoria kategorii dla informatyków/Ćwiczenia 7: Lemat Yonedy i funktory reprezentowalne|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 7: Lemat Yonedy i funktory reprezentowalne|test]])
* [[TKI Moduł 8| Diagramy, granice i kogranice]] ([[TKI Ćwiczenia 8|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 8: Diagramy, granice i kogranice|Diagramy, granice i kogranice]] ([[Teoria kategorii dla informatyków/Ćwiczenia 8: Diagramy, granice i kogranice|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 8: Diagramy, granice i kogranice|test]])
* [[TKI Moduł 9| Sprzężenia I]] ([[TKI Ćwiczenia 9|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 9: Sprzężenia I|Sprzężenia I]] ([[Teoria kategorii dla informatyków/Ćwiczenia 9: Sprzężenia I|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 9: Sprzężenia I|test]])
* [[TKI Moduł 10| Sprzężenia II]] ([[TKI Ćwiczenia 10|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 10: Sprzężenia II|Sprzężenia II]] ([[Teoria kategorii dla informatyków/Ćwiczenia 10: Sprzężenia II|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 10: Sprzężenia II|test]])
* [[TKI Moduł 11| Monady]] ([[TKI Ćwiczenia 11|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 11: Monady|Monady]] ([[Teoria kategorii dla informatyków/Ćwiczenia 11: Monady|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 11: Monady|test]])
* [[TKI Moduł 12| Teoria dziedzin I]] ([[TKI Ćwiczenia 12|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 12: Teoria dziedzin I|Teoria dziedzin I]] ([[Teoria kategorii dla informatyków/Ćwiczenia 12: Teoria dziedzin I|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 12: Teoria dziedzin I|test]])
* [[TKI Moduł 13| Teoria dziedzin II]] ([[TKI Ćwiczenia 13|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 13: Teoria dziedzin II|Teoria dziedzin II]] ([[Teoria kategorii dla informatyków/Ćwiczenia 13: Teoria dziedzin II|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 13: Teoria dziedzin II|test]])
* [[TKI Moduł 14| Ilościowa teoria dziedzin]] ([[TKI Ćwiczenia 14|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 14: Teoria dziedzin III|Teoria dziedzin III]] ([[Teoria kategorii dla informatyków/Ćwiczenia 14: Teoria dziedzin III|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 14: Teoria dziedzin III|test]])
* [[TKI Moduł 15| Algebry i koalgebry endofunktorów]] ([[TKI Ćwiczenia 15|Ćwiczenia]])
# [[Teoria kategorii dla informatyków/Wykład 15: Algebry i koalgebry endofunktorów|Algebry i koalgebry endofunktorów]] ([[Teoria kategorii dla informatyków/Ćwiczenia 15: Algebry i koalgebry endofunktorów|ćwiczenia]]) ([[Teoria kategorii dla informatyków/Test 15: Algebry i koalgebry endofunktorów|test]])

Aktualna wersja na dzień 10:52, 27 lis 2006

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[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)