PředmětyPředměty(verze: 849)
Předmět, akademický rok 2019/2020
   Přihlásit přes CAS
Seminář z logického programování I - NAIL006
Anglický název: Seminar on Logic Programming I
Zajišťuje: Katedra teoretické informatiky a matematické logiky (32-KTIML)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2016 do 2019
Semestr: zimní
E-Kredity: 3
Rozsah, examinace: zimní s.:0/2 Z [hodiny/týden]
Počet míst: neomezen
Minimální obsazenost: neomezen
Stav předmětu: nevyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Garant: RNDr. Jan Hric
Třída: Informatika Mgr. - volitelný
Kategorizace předmětu: Informatika > Programování, Teoretická informatika
Anotace -
Poslední úprava: 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.
Cíl předmětu
Poslední úprava: T_KTI (23.05.2008)

Naučit pomocí referátů studenty spracovat a přednést látky a z oblastilogického programování

Literatura
Poslední úprava: 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

Sylabus -
Poslední úprava: 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ů.

7. Aplikace. Kombinátory parserů, doménově specifické (vnořené) jazyky.

8. Implementační techniky. Rozšiřování WAM o podporu CLP. Zpráva a čištění paměti. Rozšiřitelná unifikace.

9. Myšlenky z funkcionálního programování: Monády, monadické transformátory, arrows (šipky). Polytypické programování. Vícestupňové (staged) programování. Svíjení datových struktur (folding).

 
Univerzita Karlova | Informační systém UK