1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Folge von nacheinander ausgeführten Anweisungen Prozedurale Sprachen Variablen, Zuweisungen, Kontrollstrukturen Objektorientierte Sprachen Objekte und Klassen ADT und Vererbung Deklarative Sprachen Spezifikation dessen, was berechnet werden soll Compiler legt fest, wie Berechnung verläuft Funktionale Sprachen keine Seiteneffekte Rekursion Logische Sprachen Regeln zur Definition von Relationen IV.1 Grundkonzepte der logischen Programmierung - 2 - Wichtige Programmiersprachen 1950 Fortran 1960 Cobol Algol 60 PL/1 1970 Lisp Simula Algol 68 Pascal Scheme Smalltalk C 1980 Prolog ML Ada C++ Eiffel Modula-3 1990 Ada-95 Miranda Java 2000 Python Haskell Scala prozedural objektorientiert funktional logisch I.2. Grundlagen von Programmiersprachen - 3 - Fakten und Anfragen werner karin monika klaus gerd renate susanne dominique peter aline Programm: weiblich(monika). weiblich(karin). weiblich(renate). weiblich(susanne). weiblich(aline). maennlich(werner). maennlich(klaus). maennlich(gerd). maennlich(peter). maennlich(dominique). verheiratet(werner, monika). verheiratet(gerd, renate). verheiratet(klaus, susanne). mutterVon(monika, karin). mutterVon(monika, klaus). mutterVon(renate, susanne). mutterVon(renate, peter). mutterVon(susanne, aline). mutterVon(susanne, dominique). mensch(X). ?- maennlich(gerd). ?- verheiratet(gerd, monika). true false ?- mensch(gerd). true IV.1 Grundkonzepte der logischen Programmierung - 4 - Variablen in Anfragen werner karin monika klaus Programm: gerd renate susanne dominique peter aline weiblich(monika). ... weiblich(aline). maennlich(werner). ... maennlich(dominique). verheiratet(werner, monika). ... verheiratet(klaus, susanne). mutterVon(monika, karin). ... mutterVon(susanne, dominique). ?- mutterVon(X, susanne). X = renate ?- mutterVon(renate, Y). Y = susanne ; Y = peter IV.1 Grundkonzepte der logischen Programmierung - 5 - Kombination von Fragen werner karin monika klaus Programm: gerd renate susanne dominique peter aline weiblich(monika). ... weiblich(aline). maennlich(werner). ... maennlich(dominique). verheiratet(werner, monika). ... verheiratet(klaus, susanne). mutterVon(monika, karin). ... mutterVon(susanne, dominique). ?- verheiratet(gerd,F), mutterVon(F,susanne). F = renate ?- mutterVon(Oma,Mama), mutterVon(Mama,aline). Oma = renate Mama = susanne IV.1 Grundkonzepte der logischen Programmierung - 6 - Regeln werner karin monika klaus gerd renate susanne dominique Programm: peter aline weiblich(monika). ... weiblich(aline). maennlich(werner). ... maennlich(dominique). verheiratet(werner, monika). ... verheiratet(klaus, susanne). mutterVon(monika, karin). ... mutterVon(susanne, dominique). vaterVon(V,K) :- verheiratet(V,F), mutterVon(F,K). ?- vaterVon(gerd, susanne). true ?- vaterVon(gerd, Y). Y = susanne ; Y = peter IV.1 Grundkonzepte der logischen Programmierung - 7 - Mehrere Regeln für ein Prädikat werner monika karin gerd renate susanne klaus dominique Programm: peter aline weiblich(monika). ... weiblich(aline). maennlich(werner). ... maennlich(dominique). verheiratet(werner, monika). ... verheiratet(klaus, susanne). mutterVon(monika, karin). ... mutterVon(susanne, dominique). vaterVon(V,K) :- verheiratet(V,F), mutterVon(F,K). elternteil(X, Y) elternteil(X, Y) :- mutterVon(X,Y). :- vaterVon(X,Y). ?- elternteil(X, susanne). X = renate ; X = gerd IV.1 Grundkonzepte der logischen Programmierung - 8 - Rekursive Regeln werner karin monika peter dominique weiblich(monika). ... verheiratet(klaus, susanne). elternteil(X, Y) elternteil(X, Y) renate susanne klaus Programm: vaterVon(V,K) gerd aline maennlich(werner). ... mutterVon(susanne, dominique). :- verheiratet(V,F), mutterVon(F,K). :- mutterVon(X,Y). :- vaterVon(X,Y). vorfahre(V,X) :- elternteil(V,X). vorfahre(V,X) :- elternteil(V,Y), vorfahre(Y,X). ?- vorfahre(X, aline). X = susanne ; X = monika ; X = klaus ; X = renate ; X = werner ; X = gerd IV.1 Grundkonzepte der logischen Programmierung - 9 - Kennzeichen logischer Programme Programme = Fakten und Regeln Keine Kontrollstrukturen Ein- und Ausgabevariablen liegen nicht fest Besonders gut geeignet für Künstliche Intelligenz (z.B. Expertensysteme, deduktive Datenbanken) IV.1 Grundkonzepte der logischen Programmierung - 10 -