Kennisrepresentatie en Redeneren 2009/2010

Deze versie is bijgwerkt op 4 januari 2010.

Algemeen

Deze cursus gaat over logica en logisch programmeren als gereedschap voor het representeren van kennis en het redeneren daarover. De cursus begint met een behandeling van de predicatenlogica. We bouwen voort op de behandeling daarvan bij de cursus Discrete Structuren, maar we maken nu onderscheid tussen syntax (de taal van de logische expressies) en semantiek (de betekenis van de logische expressies).
We beperken ons in eerste instantie tot een klein deel van de gehele predicatenlogica, nl. tot de logische programma's (ook wel Horn-zinnen of definite logic programs genoemd). De semantiek van logische programma's is betrekkelijk eenvoudig, en logische programma's zijn direct implementeerbaar, bv. in de logische programmeertaal Prolog. Na een introductie in Prolog worden diverse toepassingen behandeld.

Tijdens het hoorcollege wordt de leerstof behandeld en instructie voor het prakticum gegeven. Ter stimulering van de zelfwerkzaamheid wordt elke week een aantal opgaven uit het leerboek als huiswerk opgegeven. Werk de leerstof door en maak de huiswerkopgaven voor je naar het werkcollege op donderdag gaat. Aan het begin van het werkcollege wordt ingegaan op vragen over het huiswerk en wordt de theorie nader uitgewerkt. Verder werk je daar aan de opgaven die bij het werkcollege opgegeven zijn (zie de Weekindeling hieronder). Het prakticum is gewijd aan programmeeropdrachten in Prolog. Er wordt gebruik gemaakt van SWI-Prolog.

Leerboek

Ulf Nilsson and Jan Maluszynski: Logic, Programming and Prolog (Second Edition; zie ook de Errata).
Niet meer leverbaar als boek; verkrijgbaar als pdf-bestand en als syllabus bij de Repro.

Beoordeling

Het eindcijfer voor deze cursus wordt berekend uit de cijfers voor de prakticumopdrachten en het tentamencijfer. De drie prakticumopgaven tellen daarbij elk voor resp. 10, 15 en 15 % mee, het tentamencijfer voor de resterende 60 %.

Links

Enige nuttige links over Prolog:

Weekindeling

Algemeen De stof die per week wordt behandeld staat in de weekplanning.

Specifiek materiaal voor deze cursus

lhs2Tex voor de liefhebbers

Wie fraaie Prologcode-listings wil maken, kan gebruik maken van het Literate Programming-tool. Het programma dat ik gebruik is lhs2Tex, afkomstig van de Haskell-site (het staat ook voor: Literate Haskell to Tex). Om het in Prolog te kunnen gebruiken heb ik een aantal macro's toegevoegd. Ze zijn hier gegeven in de vorm van de source-code van het allereerste Prolog-programma van het college: houdtvan.lpl. De extensie staat natuurlijk voor: Literate ProLog. Het juiste commando voor lhs2Tex staat in het document zelf!

Deadlines

Tentamen



Piter Dykstra (p.dykstra@rug.nl)