Seminarium: Rachunek lambda: ewaluacja i normalizacja

Język wykładowy Polski
Semestr Zimowy
Status W ofercie
Opiekun Dariusz Biernacki
Liczba godzin 30 (sem.)
Rodzaj Seminarium
ECTS 3
Polecany dla I roku Nie
Egzamin Nie

Opis przedmiotu:

Rachunek lambda stanowi jądro wszystkich języków funkcyjnych, a także wielu systemów wspierających dowodzenie twierdzeń. Kluczowym zagadnieniem w tym kontekście staje się poprawna i efektywna implementacja β-redukcji, mechanizmu modelującego aplikację funkcji, a także operacji wyszukiwania kolejnego β-redeksu zgodnie z wybraną strategią redukcji. O ile w przypadku typowych języków funkcyjnych redukcja przyjmuje postać ewaluacji termu do słabej postaci normalnej, dowolnej λ-abstrakcji, w przypadku zamkniętych termów czystego rachunku lambda, to w przypadku porównywania typów zależnych przez systemy wspomagające dowodzenie twierdzeń wymagana jest pełna normalizacja termów, w tym termów otwartych, w ciele λ-abstrakcji. Tematem seminarium jest przegląd wybranych zagadnień związanych z procedurami redukującymi λ-termy. Wśród omawianych zagadnień znajdą się m. in. syntaktyczne ewaluatory i normalizatory bezpośrednio implementujące określoną strategię redukcji (semantyka redukcyjna, maszyny abstrakcyjne), autointerpretery (ang. self-interpreters), a także ewaluatory w kluczowy sposób wykorzystujące mechanizm redukcji w meta-języku (ewaluatory i normalizatory wyższego rzędu, w tym te realizujące model NbE - normalizacji przez ewaluację). W szczególności, sporo miejsca poświęcimy konstrukcji, poprawności i analizie maszyn abstrakcyjnych. **Literatura (wybrane prace):** 1. Mads Sig Ager, Dariusz Biernacki, Olivier Danvy, Jan Midtgaard: A functional correspondence between evaluators and abstract machines. PPDP 2003: 8-19 2. Małgorzata Biernacka, Olivier Danvy: A concrete framework for environment machines. ACM Trans. Comput. Log. 9(1): 6 (2007) 3. Ulrich Berger, Helmut Schwichtenberg: An Inverse of the Evaluation Functional for Typed Lambda-Calculus. LICS 1991: 203-211 4. Klaus Aehlig, Felix Joachimski: Operational aspects of untyped Normalisation by Evaluation. Math. Struct. Comput. Sci. 14(4): 587-611 (2004) 5. Torben Æ. Mogensen: Efficient Self-Interpretations in Lambda Calculus. J. Funct. Program. 2(3): 345-363 (1992) 6. Pierre Crégut: Strongly reducing variants of the Krivine abstract machine. High. Order Symb. Comput. 20(3): 209-230 (2007) 7. Benjamin Grégoire, Xavier Leroy: A compiled implementation of strong reduction. ICFP 2002: 235-246 8. Beniamino Accattoli, Pablo Barenbaum, Damiano Mazza: Distilling abstract machines. ICFP 2014: 363-376 9. Beniamino Accattoli, Giulio Guerrieri: Abstract machines for Open Call-by-Value. Sci. Comput. Program. 184 (2019) 10. Martín Abadi, Luca Cardelli, Pierre-Louis Curien, Jean-Jacques Lévy: Explicit Substitutions. J. Funct. Program. 1(4): 375-416 (1991)