O predmete
Typový systém priraďuje výrazom programu typy podľa formálnych pravidiel. Umožňuje tak odhaliť určité chyby ešte pred vykonaním programu a uvažovať o jeho vlastnostiach. Teória typov poskytuje základy pre návrh programovacích jazykov, typovú kontrolu aj konštrukciu dôkazov.
Na predmete budeme skúmať syntax, operačnú sémantiku a typovanie programovacích jazykov. Východiskom bude λ-kalkul a jazyk čísel a pravdivostných hodnôt NBL. Výklad rozšírime o polymorfizmus, závislé typy a súvislosti medzi typmi, programami a logickými dôkazmi. Vybrané definície a vlastnosti budeme formalizovať v interaktívnom dokazovacom systéme Rocq.
Ciele predmetu
Cieľom predmetu je:
- vysvetliť princípy typových systémov a ich úlohu pri návrhu programovacích jazykov;
- analyzovať a vyhodnocovať termy netypovaného a jednoducho typovaného λ-kalkulu;
- používať pravidlá operačnej sémantiky a konštruovať typové odvodenia;
- dokazovať základné vlastnosti typových systémov, najmä progres a zachovanie typu;
- formalizovať definície a tvrdenia v Rocqu a konštruovať ich dôkazy pomocou taktík.
Študijné materiály a nástroje
Materiály sú dostupné v navigácii predmetu:
- Prednášky vysvetľujú pojmy, formálne pravidlá a vlastnosti typových systémov na riešených príkladoch.
- Cvičenia obsahujú úlohy na vyhodnocovanie termov, typovanie a odvodenie typov.
- Interaktívny dokazovací systém Rocq Prover obsahuje materiály k definíciám údajových typov a funkcií, logickým tvrdeniam a dôkazovým taktikám. Súčasťou sú formálne dôkazy overované v systéme Rocq.
Rocq Game – precvičovanie dôkazov v prehliadači
Vzdelávacia aplikácia vyvíjaná na Technickej univerzite v Košiciach umožňuje precvičovať definície a dôkazové taktiky na úlohách usporiadaných do tematických svetov a úrovní. Dôkazy overuje Rocq priamo vo webovom prehliadači, bez potreby lokálnej inštalácie.
Obsah predmetu
Osnova podľa informačného listu predmetu:
- Základné pojmy teórie typov.
- Netypovaný jazyk čísel a pravdivostných hodnôt, NBL.
- Netypovaný λ-kalkul.
- Typovaný NBL.
- Jednoducho typovaný lambda kalkul.
- Odvodené tvary termov.
- Súčinové a súčtové typy.
- Rekurzia a rekurzívne typy.
- Závislé typy.
- Polymorfné typy.
- Typová rekonštrukcia – odvodenie typu.
- Systém F, Let polymorfizmus.
Hodnotenie predmetu
- Zápočet: maximálne 40 bodov, potrebné minimum je 21 bodov.
- Skúška: maximálne 60 bodov, potrebné minimum je 31 bodov.
Podrobné podmienky hodnotenia sú zverejnené v kurze predmetu v systéme Moodle.
Vyučujúci
Prednášky a cvičenia vedie Ing. Ján Perháč, PhD.. Kontakt: jan.perhac@tuke.sk.
Poďakovanie
Aktualizácia a rozvoj študijných materiálov pre predmet Teória typov sú podporené Kultúrnou a edukačnou grantovou agentúrou (KEGA) Ministerstva školstva, výskumu, vývoja a mládeže Slovenskej republiky v rámci projektu 052TUKE-4/2025 – Moderné prístupy vo vzdelávaní IT odborníkov v oblasti Teórie typov.
Odporúčaná literatúra
- B. C. Pierce. Types and Programming Languages. MIT Press, Cambridge, 2002.
Перевод на русский язык: Бенджамин Пирс. Типы в языках программирования. Добросвет, 2012. 680 с. ISBN 978-5-7913-0082-9. - B. C. Pierce a kol. Software Foundations. Elektronická učebnica, 2024.
- V. Novitzká, D. Mihályi. Teória typov. Technická univerzita v Košiciach, 2015.
- J.-Y. Girard. Proofs and Types. Cambridge University Press, 1989.
- J. R. Hindley. Basic Simple Type Theory. Cambridge University Press, 1997.
- R. Sethi. Programming Languages: Concepts and Constructs. Addison-Wesley, 1996.
- W. Horowitz. Higher-order Programming Languages. Wiley & Sons, 1982.
- Computer Science Center. Введение. Функциональное и императивное программирование. 2015. Prednášky sú dostupné v playliste na YouTube.