Wykłady
Zadania
Polecana literatura
  1. Dokumentacja na stronie http://coq.inria.fr
  2. Y. Bertot, P. Casteran, "Coq'Art: The Calculus of Inductive Constructions"
Dodatkowe materiały
  1. B. Aydemir, A. Chargueraud, B. C. Pierce, R. Pollack, S. Weirich "Engineering Formal Metatheory".
    O tym, jak implementować w Coqu rachunek lambda i inne języki z wiązaniem zmiennych ("languages with binders").
  2. O reprezentacji i dowodzeniu własności języków programowania w Coqu - tutorial POPL'08.
  3. Strona Xaviera Leroy: projekty i artykuły dotyczące certyfikowania kompilatorów różnych języków w Coqu.
Przykładowe projekty

Zakres projektu może ulegać rozszerzeniu, ale najlepiej jest zacząć od zdefiniowania podstawowego, małego zadania i potem je rozwijać.
  1. Prolog i unifikacja pierwszego rzędu.
  2. Język MiniML: semantyka statyczna i dynamiczna, kompilacja.
    Literatura: F. Pfenning, "Computation and deduction", rozdziały 2-4,6.
  3. Formalizacja i dowód poprawności transformacji programów funkcyjnych, np. closure conversion, defunctionalization, A-translation, lambda-lifting.
    Wybrana literatura:
    • A. Appel, "Continuation-passing, Closure-passing Style".
    • P. Steckler, M. Wand, "Lightweight Closure Conversion".
    • Y. Minamide, G. Morrisett, R. Harper, "Typed Closure Conversion".
    • J. Reynolds, "Definitional Interpreters for Higher-Order Programming Languages".
    • O. Danvy, L. Nielsen, "Defunctionalization at Work".
    • F. Pottier, N. Gauthier, "Polymorphic typed defunctionalization and concretization".
    • L. Nielsen, "A Denotational Investigation of Defunctionalization".
    • A. Banerjee, N. Heintze, J. Riecke, "Design and Correctness of Program Transformations Based on Control-Flow Analysis".
    • A. Fischbach, J. Hannan, "Specification and Correctness of Lambda Lifting".
  4. Weryfikacja dowodów twierdzeń logiki pierwszego rzędu w rachunku sekwentów (ew. modulo teorie równościowe), za pomocą techniki "proof by reflection".
  5. Rachunek lambda i maszyna SECD.
    Literatura: G. Plotkin, "Call-by-Name, Call-by Value and the Lambda Calculus".
  6. Rachunek obiektów.
    Literatura: M. Abadi, L. Cardelli, "A theory of primitive objects".
  7. Język z funkcjami o wielu punktach powrotu.
    Literatura: O. Shivers, D. Fisher, "Multi-return Function Call".
Ostatnia modyfikacja: 2. lipca 2008