www.wikidata.de-de.nina.az
Prolog vom Franzosischen programmation en logique 1 dt Programmieren in Logik ist eine Programmiersprache die Anfang der 1970er Jahre massgeblich von dem franzosischen Informatiker Alain Colmerauer entwickelt wurde und ein deklaratives Programmieren ermoglicht Sie gilt als die wichtigste logische Programmiersprache PrologParadigmen logisch deklarativ oft auch constraintbasiertErscheinungsjahr 1972Designer Alain ColmerauerEntwickler Philippe RoussellTypisierung schwach dynamischWichtige Implementierungen SICStus SWI Prolog GNU Prolog XSB YAP PrologDialekte ISO Prolog Edinburgh Prolog BinProlog Visual Turbo Prolog historisch micro PrologStandardisierungen ISO IEC 13211 1 1995Beeinflusst von Planner Q Systems Theorembeweiser Horn KlauselnBeeinflusste Erlang Mercury Mozart Oz PicatErste Implementierungen wichen in ihrer Syntax stark voneinander ab aber der Edinburgh Dialekt setzte sich bald als Quasistandard durch Er war jedoch nicht formal definiert 2 bis er 1995 zur Grundlage eines ISO Standards wurde ISO IEC 13211 1 der auch ISO Prolog genannt wird Der erste Prolog Interpreter wurde in Marseille in ALGOL W realisiert Der erste Ansatz fur einen Compiler stammte von David H D Warren aus Edinburgh Dieser hatte als Zielsprache die des Logik Prozessors Warren s Abstract Machine und erlaubte deshalb weder dynamische Anderungen noch einen Anschluss rucksetzbarer Pradikate in anderen Programmiersprachen Der erste voll nutzbare Compiler der beides erlaubte wurde von Preben Folkjaer und Christian Pichler in Munchen entwickelt Er verwandte einen anderen von der TU Wien stammenden Zwischencode der inkrementell kompiliert wurde wurden Pradikate verandert wurde das Kompilat geloscht und beim nachsten Aufruf neu kompiliert Inhaltsverzeichnis 1 Grundprinzip 2 Syntax 2 1 Boolesche Algebra 2 2 Vergleiche 2 3 Regeln 2 3 1 Symmetrische Relation 2 4 Arithmetik 2 5 Listen 2 6 Laden von Prolog Texten 3 Weitere Techniken 4 Beispiele 4 1 Losen eines mathematischen Ratsels 4 2 Bearbeitung hierarchischer Strukturen 4 3 Planungssysteme 4 4 Einsteins Ratsel 5 Definite Clause Grammar 6 Prolog aus logischer Sicht 7 Anwendungsgebiete 8 Siehe auch 9 Literatur 10 Weblinks 10 1 Tutorials und Kurse 10 2 Prolog Implementierungen 10 3 An Prolog orientierte logische Programmiersysteme 11 Einzelnachweise und AnmerkungenGrundprinzip BearbeitenProlog Programme bestehen aus einer Wissensdatenbank deren Eintrage sich Fakten und Regeln nennen Der Benutzer formuliert Anfragen an diese Wissensdatenbank Der Prolog Interpreter benutzt die Fakten und Regeln um systematisch eine Antwort zu finden Ein positives Resultat bedeutet dass die Anfrage logisch ableitbar ist Ein negatives Resultat bedeutet nur dass aufgrund der Datenbasis keine Ableitung gefunden werden kann Dies hangt eng mit der Closed world assumption zusammen siehe unten Das typische erste Programm in Prolog ist nicht wie in prozeduralen Programmiersprachen ein Hallo Welt Beispiel sondern eine Wissensdatenbank mit Stammbauminformationen Folgendes Beispiel reprasentiert den Stammbaum einer kleinen Familie Das erste Faktum in Form einer Aussage mann tobias liest sich als Tobias ist ein Mann vater tobias frank definiert das Faktum Tobias ist der Vater von Frank Fur Hinweise zum Laden von Prolog Texten siehe entsprechenden Abschnitt Prolog Text mit Fakten mann adam mann tobias mann frank frau eva frau daniela frau ulrike vater adam tobias vater tobias frank vater tobias ulrike mutter eva tobias mutter daniela frank mutter daniela ulrike In einem Prolog Interpreter konnen nun interaktiv Anfragen an die Datenbasis gestellt werden Das Ausfuhren eines Prolog Programms bedeutet immer das Stellen einer Anfrage Das System antwortet entweder mit yes true oder no false abhangig davon ob die Anfrage bewiesen werden konnte Der Interpreter signalisiert mit der Eingabeaufforderung dass er eine Anfrage erwartet mann tobias yes mann heinrich no Eine Anfrage mit einer Variablen liefert als Antwort zusatzlich Belegungen mit denen die Anfrage wahr wird Man nennt eine solche Variablenbelegung Unifikation und sagt die Variable wird mit diesem Wert unifiziert Variablen sind in Prolog Token die mit einem Grossbuchstaben beginnen frau X X eva X daniela X ulrikeno ist die Antwort auf die um die vorher ausgegebenen Antworten reduzierte Faktenliste Der Interpreter liefert nur positive Antworten auf Anfragen die explizit definiert oder folgerbar sind Closed world assumption So liegen etwa uber heinrich keinerlei Informationen in der Datenbasis mann heinrich no frau heinrich no Zusatzlich zu Fakten lassen sich in Prolog Regeln formulieren Der Regeloperator ist dabei wie ein umgedrehter Implikationspfeil zu lesen Beispiel Prolog Text mit Regel grossvater X Y vater X Z vater Z Y Die Regel besagt X ist Grossvater von Y wenn es ein Z gibt sodass X Vater von Z ist und Z Vater von Y Damit ist der Grossvater vaterlicherseits definiert Eine zweite Regel fur den Grossvater mutterlicherseits sieht so aus grossvater X Y vater X Z mutter Z Y Der Operator in dieser Regel definiert eine Konjunktion und wird und gesprochen Der Term links vom Implikationsoperator nennt sich auch Head oder Konsequenz Haben zwei Regeln wie oben die gleiche Konsequenz folgt diese wenn mindestens in einer Regel die Vorbedingung erfullt ist Disjunktion Durch die Definition von Regeln konnen auch Fakten geschlossen werden die nicht explizit in der Datenbasis stehen grossvater adam ulrike yes grossvater X frank X adamSyntax BearbeitenBoolesche Algebra Bearbeiten Das logische Und wird durch ein Komma dargestellt true true true true false false false true false false false false Das logische Oder wird durch ein Semikolon dargestellt true true true true false true false true true false false false Vergleiche Bearbeiten 3 lt 4 true 3 gt 4 false anton anton pruft ob das muster links und rechts ubereinstimmt true 3 1 2 muster stimmt nicht uberein false 3 1 2 pruft ob das muster links und rechts nicht ubereinstimmt true 3 1 2 ist der numerische vergleich true 3 4 die numerische Ungleichheit true 3 1 2 3 3 false 3 lt 4 lt bedeutet kleiner gleich lt ist nicht zulassig true 3 gt 4 gt bedeutet grosser gleich false 4 2 die muster konnen durch unifikation nicht ident gemacht werden true X 4 2 Y Durch X 2 und Y 4 werden die muster ident false Regeln Bearbeiten Wenn X Vater von Z ist und Z Vater von Y ist dann ist X Grossvater von Y grossvater X Y vater X Z vater Z Y Adam ist der Vater von Tobias vater adam tobias Tobias ist der Vater von Frank vater tobias frank Abfrage ob Adam der Grossvater von Frank ist grossvater adam frank true Symmetrische Relation Bearbeiten anton und berta sind ein Ehepaar ehepaar anton berta das Ehepaar X Und Y ist genau dann ein Ehepaar wenn ein Ehepaar Y Und X existiert ehepaar X Y ehepaar Y X Abfrage ob Berta und Anton ein Ehepaar sind ehepaar berta anton true Arithmetik Bearbeiten Prolog kennt die Grundrechenarten also Addition Subtraktion Multiplikation Division und Modulo mod Die Zuweisung eines Wertes zu einer Variable erfolgt mit dem Schlusselwort is Im Gegensatz zu imperativen Programmiersprachen konnen in Prolog Variablenwerte nicht uberschrieben werden Listen Bearbeiten Listen sind rekursive Datenstrukturen bestehend aus einem Kopf Head und einem Rest Tail Der Rest kann hierbei wieder aus Listen bestehen Head ist die Zahl 1 Tail ist die Liste 2 1 2 Head ist die Zeichenkette one Tail ist die Liste two one two Listen konnen auch gemischt sein 1 two Head ist die Ziffer 1 Tail ist die Liste 2 3 1 2 3 Um zu prufen ob ein bestimmtes Element in einer Liste enthalten ist wird die vordefinierte Funktion member verwendet member X X member X T member X T member 2 anton berta caesar false member berta anton berta caesar true Laden von Prolog Texten Bearbeiten Ein Prolog Text kann direkt uber die Konsole eingegeben werden Dazu kann man auf der Eingabezeile user tippen Die Eingabe der Klauseln muss mit einem Dateienendezeichen abgeschlossen werden D oder Z je nach Plattform user tippe Prolog Text direkt ein append X X append X Y Z X T append Y Z T D Alternativ kann ein Prolog Text in einer Datei gespeichert werden und z B mit dem Pradikat consult geladen werden Das Pradikat nimmt einen physischen Pfad zu einem Prolog Text entgegen consult append pl lade Prolog Text aus Datei true Weitere Techniken BearbeitenEntscheidend fur die Prolog Programmierung sind die Techniken der Rekursion und die Nutzung von Listen Ist die Rekursion in den meisten Programmiersprachen nur eine zusatzliche Variante zur Iteration ist sie bei der Prolog Programmierung die einzige Moglichkeit Schleifen zu produzieren Benotigt man in obigem Beispiel eine allgemeine Vorfahr Relation wird das wie folgt realisiert zeigt in der Klausel die Disjunktion bzw das logische oder X ist genau dann ein elternteil von Y wenn X die mutter von Y ist Oder wenn X der vater von Y ist elternteil X Y mutter X Y vater X Y X ist einerseits dann ein vorfahr von Z wenn X ein elternteil von Z ist vorfahr X Z elternteil X Z X ist andererseits dann ein vorfahr von Z wenn X ein elternteil von Y ist Und Y ein vorfahre von Z ist vorfahr X Z elternteil X Y vorfahr Y Z Dies lasst sich wie folgt lesen X ist ein Vorfahr von Z wenn X Elternteil von Z ist Regel 1 oder es ein Y gibt das Vorfahr von Z ist und gleichzeitig X Elternteil von Y Regel 2 Es wurde hier elternteil statt mutter oder vater verwendet Auch Listen sind ein entscheidender Bestandteil von Prolog Die meisten Prolog Implementationen bringen dafur viele Basisfunktionen mit concat Anhangen von Werten count Anzahl der Werte etc die sich aber auch alle selbst definieren lassen In einer gedachten Familienstruktur muss die Anzahl der Kinder ja variabel sein Folgendes ware denkbar familie heinz jutta peter laura familie karl gertrud Dann liessen sich z B mit einer Abfrage alle Manner ohne Kinder anzeigen familie X X karlDabei ist X die Variable deren verschiedene Werte ausgegeben werden sollen Der Unterstrich ist in Prolog die anonyme Variable wodurch Prolog veranlasst wird hier jeden Wert zuzulassen Die eckigen Klammern stehen fur die leere Liste welche die nicht vorhandenen Kinder reprasentiert Eine weitere Eigenschaft und Besonderheit gegenuber anderen Programmiersprachen ist dass Prolog in der Lage ist wahrend der Laufzeit seine vorhandene Datenbank zu erweitern oder zu loschen Ein Beispiel fur das Loschen eines einzelnen Elements auto bmw rot auto bmw blau autofarbe Automarke X retract auto bmw auto Automarke X Die Abfrage auto bmw X ergibt anfanglich ganz normal X rot X blau NoDie Abfrage autofarbe bmw X wurde beim ersten Mal X blau Nobeim zweiten Mal nur noch Noliefern da die Informationen auto bmw rot auto bmw blau aus der Datenbank geloscht wurden Auch auto bmw X liefert jetzt nur noch No Zum Loschen aller gleichen Elemente also z B auto auf einmal benutzt man retractall zum Ausgeben asserta oben in der Datenbank und assertz unten in der Datenbank Beispiele BearbeitenLosen eines mathematischen Ratsels Bearbeiten ABB CD EED FD EF CE EGD FH A bis H stehen jeweils fur eine Ziffer 0 bis 9 wobei nicht klar ist welche Ziffer welchem Buchstaben entspricht Gesucht ist die Zahl die bei den Fragezeichen stehen muss Dieses Problem ist in Prolog sehr einfach zu losen Man schreibt zunachst eine Regel die bewirkt dass A bis H spater mit allen moglichen Kombinationen von 0 bis 9 belegt werden Permutation gen A B C D E F G H permutation A B C D E F G H 0 1 2 3 4 5 6 7 8 9 Nun mussen nur die funf entstehenden Gleichungen ABB CD EED FD EF CE ABB FD EGD CD EF FH und EED CE EGD FH X in Prolog Syntax geschrieben werden gl1 A B C D E A 100 B 10 B C 10 D E 100 E 10 D gl2 C D E F F 10 D E 10 F C 10 E gl3 A B D E F G A 100 B 10 B F 10 D E 100 G 10 D gl4 C D E F H C 10 D E 10 F F 10 H gl5 C D E F G H X E 100 E 10 D C 10 E E 100 G 10 D F 10 H X is E 100 G 10 D F 10 H Interessiert nur X wird eine Losungsregel angelegt die alles zusammenfuhrt und X ausgibt loesung gen A B C D E F G H gl1 A B C D E gl2 C D E F gl3 A B D E F G gl4 C D E F H gl5 C D E F G H X write X Wird nun die Abfrage loesung eingegeben wird die Losung ausgegeben Wie man sieht benotigt man zur Losung dieses Problems fast keine Programmierkenntnisse uber Schleifen oder ahnliches sondern gibt nur die Fakten ein und welches Ergebnis man benotigt Prolog steht in der Abstraktionshierarchie aus genau diesem Grund uber imperativen und objektorientierten Sprachen Bearbeitung hierarchischer Strukturen Bearbeiten Eine haufig gestellte Aufgabe an Programmiersprachen ist die Verarbeitung hierarchischer Strukturen wie z B SGML oder XML Insbesondere fur XML bildet Prolog eine sehr wirkungsvolle und ausdrucksstarke Alternative zu der verbreitetsten Verarbeitungssprache XSLT Ein typischer XML Baum wie lt buch titel Peer Gynt gt lt autor name Henrik Ibsen nat norwegisch gt lt buch gt wird unter Prolog als rekursive Liste von Elementen element TagName Attribute Kinder dargestellt element buch titel Peer Gynt element autor name Henrik Ibsen nat norwegisch Ein sehr einfaches Paradigma untere drei Klauseln erlaubt es jeden Baum rekursiv zu durchlaufen Folgende Beispiele loschen oberste Klausel mit delete und konkatenieren zweite Klausel von oben mit concat bestimmte Tags Der erste Unifikator ist die Operation delete oder concat der zweite die zu bearbeitende Struktur der dritte das spezifizierte Tag der vierte der Ergebnisbaum append ist ein Befehl zum Konkatenieren von Listen transform delete element DelTag Siblings DelTag ResTree transform delete Siblings DelTag ResTree transform concat Element1 Element2 Siblings ConTag ResTree Element1 element Contag Attr Children1 Element2 element Contag Children2 append Children1 Children2 Children transform concat element ConTag Attr Children Siblings ConTag ResTree transform transform Trans element CTag Attr Children Siblings Tag ResTree Tag CTag transform Trans Children Tag ResChildren transform Trans Siblings Tag ResSiblings ResTree element CTag Attr ResChildren ResSiblings transform Atom Atom atomic Atom Stosst der Backtracker bei der Operation delete auf ein Tag das wie das zu loschende heisst so wird dieses entfernt und bei den Nachbarn weitergesucht Ein entsprechender Aufruf ist z B transform delete Tree autor ResTree der alle Autoren entfernt Ahnlich konnen durch transform concat Tree paragraph ResTree alle nebeneinanderstehenden Paragraphen miteinander verschmolzen werden Dazu werden zunachst deren Inhalte konkateniert daraus eine neue Paragraphstruktur erzeugt und diese weiterverarbeitet Planungssysteme Bearbeiten Planungssysteme suchen eine Moglichkeit von einem Ausgangszustand in einen gewunschten Zielzustand zu gelangen Sie lassen sich fur die Suche von Strassen oder Verkehrsverbindungen aber auch fur allgemeinere Problemstellungen einsetzen Zunachst der allgemeinste Ansatz fur eine blinde Tiefensuche d h es ist unbekannt ob der einzelne Schritt auch naher zum Ziel fuhrt weg Ziel Ziel Zustandsliste write Zustandsliste nl Ziel erreicht Abbruch der Rekursion und Ausgabe weg Start Ziel Zustandsliste Es gibt einen Weg vom Start zum Ziel wenn operator Op es einen Operator gibt anwendbar Op Start der im Startzustand anwendbar ist fuehrt zu Op Start Neu von dort zu einem neuen Zustand fuehrt not member Neu Zustandsliste der noch nie da war Verhinderung von Schleifen zulaessig Neu und zulaessig ist weg Neu Ziel Neu Zustandsliste und es von dort einen Weg zum Ziel gibt Nur die Pradikate operator anwendbar fuehrt zu und zulaessig sowie die Beschreibung eines Zustands sind problemspezifisch zu formulieren Aufgerufen wird das Pradikat mit einer Zustandsliste die den Anfangszustand enthalt Abhangig vom Problemtyp lasst sich einiges vereinfachen und oder weglassen fur eine Wegesuche in einem Strassennetz ergibt sich z B weg Ziel Ziel Ortsliste write Ortsliste nl Ziel erreicht Abbruch der Rekursion und Ausgabe weg Start Ziel Ortsliste Es gibt einen Weg vom Start zum Ziel wenn strasse Start Neu es eine Strasse vom Start zu einem neuen Ort gibt not member Neu Ortsliste in dem man noch nicht war Verhinderung von Schleifen weg Neu Ziel Neu Ortsliste und von dem es einen Weg zum Ziel gibt Bei realen Problemen fuhrt eine blinde Suche selten zum Ziel man benutzt eine Breitensuche bei der alle vom Start aus erreichbaren neuen Zustande ermittelt mit einer Heuristikfunktion bewertet und nur der beste Heuristische Suche oder eine sortierte Liste der besten Best first Suche weiterverfolgt werden Die einfache heuristische Suche kann dazu fuhren dass nicht immer die optimale Losung gefunden wird da bestimmte Losungsschritte die falschlicherweise als ungunstig aussortiert wurden sich als bessere Losung ergeben wurden Die Kunst liegt in der richtigen problemspezifischen Formulierung der Heuristikfunktion In vielen Fallen hilft die A Heuristik das ist die Summe aus bisher erbrachtem Aufwand und geschatztem Restaufwand zum Ziel z B zuruckgelegte Fahrtstrecke Luftliniendistanz zum Zielort weg Ziel Ziel Ortsliste Strecke write Ortsliste nl write Strecke nl Ziel erreicht Abbruch der Rekursion und Ausgabe weg Start Ziel Ortsliste Strecke Es gibt einen Weg vom Start zum Ziel wenn findall Ort strasse Start Ort Neuliste es eine Liste erreichbarer neuer Orte gibt bewerte Neuliste Start Strecke Ziel BewerteteListe von denen jeder bewertet und sort BewerteteListe SortierteListe durch Sortieren der Liste member Sgesamt Neu SortierteListe der beste gesucht wird not member Neu Ortsliste in dem man noch nicht war weg Neu Ziel Neu Ortsliste Sgesamt und von dem es einen Weg zum Ziel gibt Jedes Element von BewerteteListe hat die Struktur Heuristikwert gesamte Fahrtstrecke Ort zur Berechnung der A Heuristik sind die bisherige Strecke der letzte Ort und der Zielort Luftlinie erforderlich Einsteins Ratsel Bearbeiten Dies ist eine Version des Zebraratsels Es wurde angeblich von Albert Einstein im 19 Jahrhundert verfasst Einstein wird oft der Vermerk zugeschrieben nur 2 der Weltbevolkerung seien im Stande das Ratsel zu losen Es existiert jedoch kein Hinweis auf jedwede Autorenschaft Hier soll es ein Beispiel fur ein Problem darstellen das mit Prolog losbar ist Es gibt funf Hauser mit je einer anderen Farbe In jedem Haus wohnt eine Person anderer Nationalitat Jeder Hausbewohner bevorzugt ein bestimmtes Getrank raucht eine bestimmte Zigarettenmarke und halt ein bestimmtes Haustier Keine der funf Personen trinkt das gleiche Getrank raucht die gleichen Zigaretten oder halt das gleiche Tier wie seine Nachbarn Frage Wem gehort der Fisch Hinweise Der Brite lebt im roten Haus Der Schwede halt einen Hund Der Dane trinkt gern Tee Das grune Haus steht direkt links neben dem weissen Haus Der Besitzer des grunen Hauses trinkt Kaffee Die Person die Pall Mall raucht halt einen Vogel Der Mann der im mittleren Haus wohnt trinkt Milch Der Besitzer des gelben Hauses raucht Dunhill Der Norweger wohnt im ersten Haus Der Marlboro Raucher wohnt neben dem der eine Katze halt Der Mann der ein Pferd halt wohnt neben dem der Dunhill raucht Der Winfield Raucher trinkt gern Bier Der Norweger wohnt neben dem blauen Haus Der Deutsche raucht Rothmans Der Marlboro Raucher hat einen Nachbarn der Wasser trinkt Losung Jedes Haus ist eine Liste der Form Farbe Nationalitat Getrank Zigarettenmarke Haustier Zuerst vier einfache Hilfspradikate zur Listenbearbeitung erstes E E mittleres M M links A B A B links A B R links A B R neben A B L links A B L links B A L Losungspradikat run X Es gibt nebeneinander 5 noch unbekannte Hauser member rot brite X Der Brite lebt im roten Haus member schwede hund X Der Schwede halt einen Hund member daene tee X Der Dane trinkt gern Tee links gruen weiss X Das grune Haus steht links vom weissen Haus member gruen kaffee X Der Besitzer des grunen Hauses trinkt Kaffee member pallmall vogel X Die Person die Pall Mall raucht halt einen Vogel mittleres milch X Der Mann der im mittleren Haus wohnt trinkt Milch member gelb dunhill X Der Besitzer des gelben Hauses raucht Dunhill erstes norweger X Der Norweger wohnt im 1 Haus neben marlboro katze X Der Marlboro Raucher wohnt neben dem der eine Katze halt neben pferd dunhill X Der Mann der ein Pferd halt wohnt neben dem der Dunhill raucht member bier winfield X Der Winfield Raucher trinkt gern Bier neben norweger blau X Der Norweger wohnt neben dem blauen Haus member deutsche rothmans X Der Deutsche raucht Rothmans neben marlboro wasser X Der Marlboro Raucher hat einen Nachbarn der Wasser trinkt member N fisch X Der mit der Nationalitat N hat einen Fisch write X nl Ausgabe aller Hauser write Der write N write hat einen Fisch als Haustier nl Antwort auf die FrageDefinite Clause Grammar BearbeitenUm Regeln fur Parser zu schreiben haben die meisten Prologsysteme einen Praprozessor implementiert Er erlaubt es die Regeln in einer besser lesbaren Form zu notieren die in der Form den Regeln entsprechen die verwendet wird um eine kontextfreie Sprache zu beschreiben Der Praprozessor erganzt Platzhalter und erzeugt die oben erwahnten Prolog Logik Formeln Durch Ubergabe weiterer Attribute ist es moglich mit Definite Clause Grammars auch komplexere Sprachen als die kontextfreien zu beschreiben Prolog aus logischer Sicht BearbeitenEin Prolog Programm ist eine geordnete Liste so genannter Horn Klauseln einer eingeschrankten Form der Pradikatenlogik erster Ordnung Stellt man dem System eine Anfrage Query versucht es diese auf der Grundlage dieser Datenbasis mittels Resolution zu beweisen Das Ergebnis einer Query ist yes oder no Seine eigentliche Wirkung entfaltet ein Prolog Programm streng genommen durch Nebenwirkungen die wahrend der Beweissuche auftreten Also kann ein Prolog System auch als ein sehr effizienter wenn auch eingeschrankter automatischer Theorembeweiser verstanden werden Die einzige in Prolog eingebaute Suchstrategie bei der Beweisfindung ist Tiefensuche mit Backtracking Anwendungsgebiete BearbeitenIn den 1980er Jahren spielte die Sprache eine wichtige Rolle beim Bau von Expertensystemen Die Sprache wird heute noch in den Bereichen Computerlinguistik und Kunstliche Intelligenz verwendet Zum Beispiel sind Sprachverarbeitungskomponenten des durch seinen Auftritt bei Jeopardy bekannt gewordenen KI Systems Watson in Prolog geschrieben 3 Ausserdem gibt es einige kommerzielle Anwendungen im Bereich des Systemmanagements bei denen asynchrone Ereignisse Events mit Hilfe von Prolog oder darauf basierenden proprietaren Erweiterungen verarbeitet werden Ein Beispiel hierzu ist das Produkt Tivoli Enterprise Console TEC von IBM das auf IBM Prolog basiert Siehe auch BearbeitenListe von Programmiersprachen Zeittafel der Programmiersprachen Axiom Deduktion Schnittregel Erlang begann als Prolog Interpreter auch die Syntax ist davon inspiriert ebenfalls personelle Nahe denn der Erfinder von Erlang Joe Armstrong hat am Swedish Institute of Computer Science SICS gearbeitet Literatur BearbeitenRudeger Baumann Prolog Einfuhrungskurs Klett Verlag 1991 ISBN 3 12 717721 6 Patrick Blackburn Johan Bos Kristina Striegnitz Learn Prolog Now College Publications 2006 ISBN 1 904987 17 6 David L Bowen Lawrence Byrd Fernando C N Pereira Luis M Pereira und David H D Warren DECsystem 10 Prolog User s Manual Occasional Paper 27 1982 Department of Artificial Intelligence University of Edinburgh Edinburgh Scotland Download Doc 192 kB Hans Kleine Buning Stefan Schmittgen PROLOG Grundlagen und Anwendungen B G Teubner Stuttgart 1986 ISBN 3 519 02484 5 Ivan Bratko Prolog Programming for Artificial Intelligence 4 Auflage Addison Wesley Harlow 2012 ISBN 0 321 41746 1 William F Clocksin Clause and Effect Prolog Programming for the Working Programmer Springer Berlin 2005 ISBN 3 540 62971 8 William F Clocksin Christopher S Mellish Programming in Prolog 5 Aufl Springer Berlin 2003 ISBN 3 540 00678 8 Michael A Covington Donald Nute Andre Vellino Prolog Programming in Depth Prentice Hall 1996 ISBN 0 13 138645 X H Gohner B Hafenbrak Arbeitsbuch PROLOG DUMMLER Bonn 1995 ISBN 3 427 46863 1 Richard A O Keefe The Craft of Prolog MIT Press Cambridge 1990 ISBN 0 262 15039 5 Esther Konig Roland Seiffert Grundkurs PROLOG fur Linguisten UTB Linguistik 1989 ISBN 3 7720 1749 5 Leon S Sterling Ehud Shapiro The Art of Prolog Advanced Programming Techniques 2 Aufl MIT Press Cambridge 1994 ISBN 0 262 69163 9 Leon S Sterling The Practice of Prolog MIT Press Cambridge 2003 ISBN 0 262 51445 1 Gerhard Rohner Informatik mit Prolog Amt fur Lehrerbildung AfL 2007 ISBN 3 88327 499 2 Wilhelm Weisweber Prolog Logische Programmierung in der Praxis Thomson 1997 ISBN 3 8266 0174 2 Weblinks BearbeitenTutorials und Kurse Bearbeiten nbsp Wikibooks Prolog Lern und Lehrmaterialien Learn Prolog Now Online Buch mit Prolog Einfuhrung auch fur Programmieranfanger verstandlich geschrieben englisch Datenbanken in Prolog Umsetzung von SQL Abfragen in Prolog Natural Language Processing Techniques in Prolog englisch Prolog Implementierungen Bearbeiten BProlog kommerzielles Prolog System kostenlos fur Bildung und Forschung mit Erweiterungen zur Constraintprogrammierung CLP Nebenlaufigkeit und interaktive Graphen GNU Prolog Der freie quelloffene GNU Prolog Compiler englisch JIProlog ist ein als Shareware erhaltlicher kommerzieller Prolog Interpreter der ISO Kompatibilitat anstrebt und in Java J2SE J2ME lauft Prolog NET Prolog Entwicklungsumgebung fur das Net Framework englisch SICStus Prolog kommerzielles ISO kompatibles Prolog System vom Swedish Institute of Computer Science erlaubt z B Constraintprogrammierung englisch SWI Prolog freies quelloffenes LGPL umfassendes ISO kompatibles Prolog System mit gutem Community Support inkl Editor Debugger Profiler und zahlreichen Programmbibliotheken englisch tuProlog ist ein freier quelloffener LGPL Interpreter fur eine Untermenge von Prolog in Java J2SE J2ME und NET YAP Prolog freier quelloffener schneller ISO kompatibler Prolog Interpreter C Prolog freier quelloffener Prolog InterpreterAn Prolog orientierte logische Programmiersysteme Bearbeiten Ciao frei quelloffen LGPL implementiert ISO Prolog hat Spracherweiterungen fur variable Pradikate HiLog constraintbasierte objektorientierte und nebenlaufige Programmierung englisch ECLiPSe Constraint Programming System frei quelloffen MPL Prolog basiert mit Erweiterungen fur Constraintprogrammierung und zusatzliche Suchstrategien englisch Logtalk ist eine freie quelloffene Artistic License 2 0 objektorientierte logische Programmiersprache englisch Mercury eine stark an Prolog angelehnte Programmiersprache vereint Elemente aus der funktionalen und der logischen Programmierung englisch Poplog ist eine freie quelloffene XFree86 Lizenz integrierte interaktive Programmierumgebung mit inkrementellen Compilern fur die Sprachen POP 11 Prolog Common Lisp und Standard ML die nicht nur multiparadigmatisches Programmieren sondern auch das Mischen dieser Programmiersprachen ermoglicht englisch QuProlog ein erweiterter freier Prolog Compiler der v a zum Implementieren interaktiver Theorembeweiser dient englisch XSB freies quelloffenes LGPL fast ISO Prolog kompatibles logisches Programmiersystem mit uber Prolog hinausgehenden Spracherweiterungen HiLog volle tabulierte Resolution erweitertes Pattern Matching und Bibliotheken fur GUI Programmierung F Logic und Ontologie Verarbeitung englisch Einzelnachweise und Anmerkungen Bearbeiten A Colmerauer und P Roussel The birth of prolog History of programming languages II 1996 S 331 367 PDF Dokument 2 1 MB In Ermangelung einer formalen Spezifikation fur Edinburgh Prolog wurde meist das DEC 10 PROLOG Manual von Bowen u a 1982 oder Programming in Prolog von Clocksin und Mellish herangezogen Adam Lally Paul Fodor Natural Language Processing With Prolog in the IBM Watson System The Association for Logic Programming 31 Marz 2011 abgerufen am 18 Oktober 2001 englisch Abgerufen von https de wikipedia org w index php title Prolog Programmiersprache amp oldid 220556833