Selected topic from Prolog, logic and functional programming based on published papers. The topics include interpretation and metainterpretation, representation of programs, extensions of LP (contraints, integration with functional languages), new languages and their implementation, transformations and partial evaluation.
Last update: T_KTI (10.04.2001)
Referativní seminář o Prologu, logickém a funkcionálním programování.
Probíraná témata zahrnují: interpretace a metainterpretace, reprezentace programů, rozšíření (např. omezující podmínky, přístup na www) , integrace (s funkcionálním prg.), částečné vyhodnocování a transformace programů, nové jazyky a jejich implementace.
Aim of the course - Czech
Last update: T_KTI (23.05.2008)
Naučit pomocí referátů studenty spracovat a přednést látky a z oblastilogického programování
Literature - Czech
Last update: T_KTI (19.05.2005)
[1] R.A.O'Keefe: The Craft of Prolog, MIT Press, 1990
[2] Journal of Logic Programming, obzvlášť vol. 19/20 (Special Issue: Ten Years of Logic Programming), 1994
[3] N.D. Jones, C.K. Gomard, P. Sestoft: Partial evaluation and Automatic Program Generation, Prentice Hall, New York, 1993
Syllabus -
Last update: T_KTI (19.05.2005)
Relevant topics are chosen (usually) from following topics.
1. Metaprogramming and metainterpreters, representation of programs and knowledge, simulation of nonprolog selection rules, applications in expert systems
2. Extensions of logic programs, constraint logic programming (CLP). Integration logic and functional programming, languages Mercury, Gödel, Curry, Escher.
3. Termination of logic programs, static analysis and proving of termination, homeomorphic embedding.
5. Abstract interpretation. Types in logic programs. Extensions of type systems.
6. Advanced programming techniques, structural recursion, DCG grammars. User defined input and output, distfix operators, development using skeletons and techniques. Monads, polytypic programming, staged programming, folding of data structures.
7. Applications. Parser combinators, domain specific (embedded) languages.
8. Implementation techniques, extensions of WAM. Garbage collection. Extensible unification.
9. Ideas from functional programming: Monads, monads transformers, arrows. Polytypic programming. Staged programming. Folding of data structures.
Last update: T_KTI (19.05.2005)
Referáty jsou na vybraná témata (obvykle) z následující nabídky.
1. Metaprogramování a metainterprety, interpretace mimologických predikátů, simulace změn databáze, reprezentace programů a znalostí, simulace neprologovských výpočtových strategií, metaprogramování jako nástroj rychlé prototypizace, použití v expertních systémech.
2. Rozšíření logických programů, programování s omezujícími podmínkami. Jazyky Mercury, Gödel, Curry, Escher. Integrace s funkcionálními programy.
3. Konečnost logických programů, testování zacyklení počas výpočtu, porovnávání síly testů, statická analýza a dokazování ukončení, homeomorfní vnoření.
4. Transformace programů, odstraňování pomocných proměnných a mezivýsledků, simulace výpočtu zdola nahoru, tail-rekurzivní forma, zexplicitnění informace o pokračování, binární logické programy, částečné vyhodnocování, Futamurovy transformace, kompilace jako speciální případ transformace. Superkompilace.
5. Abstraktní interpretace - metoda pro získávání globálních informací o programu, abstraktní a konkrétní domény, konečnost abstr. interpretace, použití informací při kompilaci, odvozování vstupně-výstupních modů, typů, determinismu a sdílení proměnných a struktur. Typová informace v logických programech, typová kontrola, odvozování typů, typy vyšších řádů, predikáty jako parametry a predikát call. Rozšiřování typových systémů.
6. Pokročilé programovací techniky, strukturální rekurze, porovnávání se vzory, návrh ortogonálních datových struktur, DCG gramatiky a jejich rozšíření, uživatelsky definovaný vstup a výstup, distfixní operátory, vývoj pomocí technik a skeletonů.