Constraintlogische Programmierung
( Kurze Inhaltsbeschreibung )


Das Lösen von Constraints, d.h. das Suchen von Belegungen von Variablen, die bestimmte Restriktionen (Constraints) zu erfüllen haben, besitzt beim Lösen von Problemen in viele Anwendungsgebieten eine große Bedeutung.
Die constraintlogische Programmierung (CLP) ist eine Verallgemeinerung der logischen Programmierung, in der die syntaktische Unifikation durch das allgemeinere Konzept des Lösens von Constraints ersetzt wird. Dadurch kann die deduktive Komponente der logischen Programmierung mit speziellen Systemen für das Lösen von Constraints verbunden werden. Die Lehrveranstaltung beschäftigt sich sowohl mit theoretischen Grundlagen der constraintlogischen Programmierung als auch mit verschiedenen Aspekten der praktischen Anwendung dieser Programmierung.
Zuerst werden die wichtigsten theoretischen Grundlagen der logischen Programmierung erarbeitet. Dazu zählen Unifikation, deklarative und prozedurale Semantik, und Inferenzstrategien. Nach einer Einführung in Constraintprobleme, wird das Konzept der constraintlogischen Programmierung entwickelt und die erarbeiteten Grundlagen für dieses Konzept erweitert. Außerdem werden spezielle Inferenzregeln für CLP-Programme betrachtet.
Anschließend werden verschiedene Aspekte des praktischen Lösens von Constraintproblemen mittels CLP-Programmen diskutiert. Dies sind u.a. Problemmodellierung, Methoden der Lösungssuche, optimale Lösungen, weiche Constraints, Constrainthierarchien, globale Constraints.
Um zeigen zu können, wie in einer relativ abstrakten Form, das Verhalten eines Constraintlösers definiert werden kann, wird auch das Konzept der Constraint Handling Rules (CHR) kurz erläutert.
In den letzten Vorlesungen werden an verschiedenen realen Anwendungsbeispielen dargelegt, welche Konzepte notwendig sind, um solche komplexe Systeme implementieren zu können.
Den Studenten wird für praktische Übungen das constraint-logische Programmiersystem ECLiPSe zur Verfügung gestellt. Damit PROLOG-Kenntnisse für diese Lehrveranstaltung nicht vorausgesetzt werden müssen, werden in den beiden ersten Vorlesungen eine kurze Einführung in die logische Programmiersprache PROLOG gegeben.