Einführung in PROLOG

Ähnliche Dokumente
Prolog 1. Kapitel: Fakten, Regeln und Anfragen

PROLOG Syntax. Einführung in PROLOG II. Atome. Variablen. Es gibt vier Arten von Termen: Atome. Zahlen. Variablen. Komplexe Terme

Künstliche Intelligenz Logische Agenten & Resolution

Logische Programmierung

Fakten, Regeln und Anfragen

Path Finding with Prolog. AAI Projekt Thien-An Bui und Marlene Wittwer FHNW Brugg-Windisch, HS 2014

Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich

Summen- und Produktzeichen

Grundlagen der Theoretischen Informatik

Einführung in Prolog. Simon Bischof. IPD Snelting

Logisches und funktionales Programmieren

Übungen zu Kognitive Systeme I

Kapitel. Platzhalter. Was sind Platzhalter?

Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen

Vorlesung. Beweise und Logisches Schließen

Lineare Algebra I. Anhang. A Relationen. Heinz H. GONSKA, Maria D. RUSU, Michael WOZNICZKA. Wintersemester 2009/10

Mathematische Grundlagen I Logik und Algebra

Programmiersprache Prolog

Wissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren)

Logik (Prof. Dr. Wagner FB AI)

Mathematische und logische Grundlagen der Linguistik. Kapitel 3: Grundbegriffe der Aussagenlogik

Logische Aussagen können durch die in der folgenden Tabelle angegebenen Operationen verknüpft werden.

Mathematische und logische Grundlagen der Linguistik. Mathematische und logische Grundlagen der Linguistik. Karl Heinz Wagner. Hier Titel eingeben 1

Vorbereitungskurs Mathematik zum Sommersemester 2015 Aussagen, Logik und Beweistechniken

Vorlesung. Logik und Beweise

Thema: Logik: 2. Teil. Übersicht logische Operationen Name in der Logik. Negation (Verneinung) Nicht

Aussagenlogik. Aussagen und Aussagenverknüpfungen

Einführung in PROLOG IV Listen

»Leichte Sprache «Ein Überblick. Florian Ritter 2016, Landesverband Baden-Württemberg der Lebenshilfe für Menschen mit Behinderung e. V.

Logik. Logik. Vorkurs Informatik Theoretischer Teil WS 2013/ September Vorkurs Informatik - Theorie - WS2013/14

Aussagenlogische Kalküle

Was ist Logik? Was ist Logik? Aussagenlogik. Wahrheitstabellen. Geschichte der Logik eng verknüpft mit Philosophie

Logic in a Nutshell. Christian Liguda

Logik für Informatiker

Teil 7. Grundlagen Logik

Vorkurs Mathematik 2016

Deduktion in der Aussagenlogik. Semantische Folgerungsbeziehung. Zusammenhang zwischen semantischer und syntaktischer Folgerung

Deduktion in der Aussagenlogik

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 14/15

Künstliche Intelligenz Hornklauseln & Prolog

Tilman Bauer. 4. September 2007

Einführung in PROLOG III Rekursion

Vorkurs Mathematik für Informatiker 5 Logik, Teil 1

Logik. III Logik. Propädeutikum Holger Wuschke. 19. September 2018

3. Exkurs in weitere Arten der Programmierung

Grundlagen der Programmierung

Lösungen 1 zum Mathematik-Brückenkurs für alle, die sich für Mathematik interessieren

3 Vom Zählen zur Induktion

Grundlagen der Theoretischen Informatik

Logische und funktionale Programmierung

Repräsentation und Umgang mit unsicherem Wissen (SoSe 2010) Fuzzy Logic I. Alexander Fabisch und Benjamin Markowsky. Universität Bremen

Aussagenlogik Prädikatenlogik erster Stufe. Logik. Logik

Einführung in die mathematische Logik

Brückenkurs Mathematik 2015

Einführung in die Fuzzy Logic

Informatik A. Prof. Dr. Norbert Fuhr auf Basis des Skripts von Prof. Dr. Wolfram Luther und der Folien von Peter Fankhauser

Answer Set Programming

Logik. Aufgaben in: Barwise, Etchemendy. The language of first-order logic. CSLI, ) S. 119 A3 2) S. 131 A15 3) S. 143 A28

SS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4. R. C. Ladiges, D. Fast 10. Juni 2010

Logische Äquivalenz. Definition Beispiel 2.23

Aussagenlogische Widerlegungsverfahren zum Nachweis logischer Eigenschaften und Beziehungen

2.3 Deduktiver Aufbau der Aussagenlogik

Normalformen der Prädikatenlogik

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Zwei Klappentexte informieren über das Sams Lernarrangement: Paul Maar und das Sams Klasse: 3/4

Brückenkurs Mathematik, THM Friedberg,

Resolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren:

Vorlesung Diskrete Strukturen Rechnen mit 0 und 1

Kapitel 1: Grundbegriffe

Logische und funktionale Programmierung

Logik für Informatiker

b. Lehre des vernünftigen Schlussfolgerns (1. System von Regeln von Aristoteles ( v. Chr.); sprachliche Argumente

Vorlesung 3: Logik und Mengenlehre

Allgemeingültige Aussagen

Modelltheorie (Einige Impulse)

Deutsche Kinderuni im Koffer Fakultät Mensch Das Gehör. Werner von Siemens FAKULTÄT MENSCH DAS GEHÖR. WERNER VON SIEMENS

Grundlagen der Logik

1 K-Rahmen und K-Modelle

2.1 Zufallsspiel: 10er Würfel

Aussagenlogik. 1 Einführung. Inhaltsverzeichnis. Zusammenfassung

Binäre Suchbäume (binary search trees, kurz: bst)

Logische Programmierung

mathe plus Aussagenlogik Seite 1

Tutorium: Diskrete Mathematik

Fachwissenschaftliche Grundlagen

Transkript:

Einführung in PROLOG 1.Einfache Beispiele Es gibt nur drei Konstrukte in PROLOG. Fakts (Fakten), rules (Regeln) und queries. Eine Sammlung von Fakten und Regeln nennt man knowledge base. Beim Programmieren in PROLOG geht es fast nur darum knowledge bases zu beschreiben. Wie benutzt man ein PROLOG-Programm? Indem man queries eingibt, also indem man Fragen über die Informationen stellt, die in der knowledge base stehen. 1.1 Knowledge Base 1(KB1) musik(klassik). musik(rock). musik(schlager). musik(country). laut(rock). Beachten Sie bitte, dass die Namen klassik, rock,schlager, country und die Eigenschaften musik und laut kleingeschrieben sind. Das ist wichtig. Später sehen wir, warum. Wie benutzen wir nun KB1? Indem wir queries starten! Nachdem wir die Datei KB1.ecl complieliert haben, können wir z.b. fragen, ob Rock laut ist:?- laut(rock). Wir drücken auf RUN und PROLOG wird antworten: yes, da dieser Fakt in KB1 explizit enthalten ist (Das Fragezeichen und der Strich sind übrigens der prompt vom Eclipse-PROLOG. Wir geben nur die Querie und einen Punkt ein) Auf?- laut(klassik) erhalten wir no, denn über diesen Fakt steht keine Aussage in KB1. Die Queries?- laut(hiphop) wird ebenfalls mit no beantwortet, da PROLOG keine Informationen über hiphop hat, schließt es, dass der Fakt nicht aus KB1 abgeleitet werden kann.?- schnell(country) führt sogar zu einem abort, da die Eigenschaft schnell überhaupt noch nicht definiert wurde.

1.2. Knowledge base 2 (KB2) gitarrenlastig(grunge). mag(sam,musik) :- gitarrenlastig(musik). KB2 enthält nur einen Fakt und eine Regel. Regeln enthalten Informationen, die bedingt war sein können. Sam mag Musik, wenn es gitarrenlastige Musik ist. Beachten Sie, dass Musik groß geschrieben ist, denn es ist eine Variable in dieser Regel. Wenn wir jetzt fragen:?- mag(sam,grunge). wird PROLOG mit yes antworten, zwar steht dieser Fakt nicht in KB2, aber aus der Rule mag(sam,musik) :- gitarrenlastig(musik). und dem Fakt gitarrenlastig(grunge). kann PROLOG mithilfe von Resolution schließen, dass mag(sam,grunge). Wie das genau funktioniert betrachten wir später. 1.3. Knowledge base 3 (KB3) musik(klassik). musik(rock). musik(schlager). musik(country). laut(rock). mag(sam,etwas):- musik(etwas), laut(etwas). mag(sam,schlafen). Unsere erste Regel über die Vorlieben von Sam hat hier zwei Aussagen in ihrem Körper, oder um mit PROLOG zu sprechen, zwei goals. Entscheidend ist das Komma zwischen musik(etwas)und laut(etwas). Es entspricht einer logischen Konjunktion, also einem und in PROLOG. Also mag Sam etwas nur, wenn es Musik ist und wenn es laut ist. Also ergibt:?- mag(sam,country). ein No, da KB3 nicht die Information enthält, laut(country). Die beiden Aussagen sind ein Beispiel für eine Disjunktion, da sie beide Aussagen über die Sachen machen, die Sam mag. Er mag also laute Musik oder Schlafen. Regeln, die den gleichen Kopf haben werden also durch oder verknüpft. Eine andere Möglichkeiten eine Disjunktion auszudrücken wäre: mag(sam,musik) :- schnell(musik); laut(musik). Sie sehen also, PROLOG hat etwas mit Logik zu tun. Ein :- bedeutet Implikation, ein, Konjunktion und ein ; (oder zwei Regeln mit der gleichen Folgerung) Disjunktion. Außerdem spielt ein klassisches logisches Beweisgesetz (Resolution) eine große Rolle im PROLOG Programmieren. Und tatsächlich: PROLOG bedeutet Programmieren in Logik.

1.4. Knowledge base 4 (KB4) chinesisch(chow_mein). chinesisch(chop_suey). chinesisch(suess_sauer). mag(sam,chips). mag(sam,chow_mein). mag(peter,chow_mein). mag(qu,chop_suey). Eine sehr langweilige Knowledge base. Interessant sollen hier die queries sein. Wir möchten gerne erstmalig Variablen benutzen.?- chinesisch(x). Das X ist eine Variable (Alle Wörter mit großen Anfangsbuchstaben sind das) Die query fragt also PROLOG, sag mir, welches Essen, das Dir bekannt ist, chinesisch ist. Dazu arbeitet sich PROLOG durch KB4 von oben nach unten durch und versucht die Information chinesisch(x) mit den Informationen von KB4 in Übereinstimmung zu bringen. PROLOG bindet dann (instaziiert) X und chow_mein und antwortet uns: X = chow_mein Nicht nur, dass es Informationen über chinesisches Essen in KB4 gibt, (kein simples yes ) uns wird sogar eine Instanziierung, bzw. Variablen-Bindung gezeigt. Aber Variablen können für verschieden Dinge stehen, und es gibt Information über weiteres chinesiches Essen in KB4, denn Eclipse schreibt More in die Ausgabe. Wir drücken auf die Taste More. Dieses entspricht also der querie: Gibt es noch weiteres? Antwort: X = chop_suey Nach einer weiteren Nachfrage: X = suess_sauer Nun steht kein more mehr in der Ausgabe, da es keine weiteren Ergebnisse gibt.. Versuchen wir eine kompliziertere Querie:?- mag(sam,x), chinesisch(x). Also gibt es Essen, dass Sam mag und das chinesisch ist? Ja, Prolog kann es finden: X = chow_mein Variablen an Informationen in einer Knowledge base zu binden ist der Kern von PROLOG.

1.5. Knowledge base 5 (KB5) liebt(othello,desdemona). liebt(desdemona,jago). liebt(romeo,julia). liebt(julia,romeo). eifersuechtig(x,y) :- liebt(x,z), liebt(z,y). Hiermit wird ein Konzept von eifersuechtig definiert. Das ist eine generelle Aussage. Also:?- eifersuechtig(othello,p). gibt es ein Individuum P, so daß Othello eifersuechtig auf P ist? P = jago

Aufgabe: 1. Betrachten Sie KB5. Gibt es weitere eifersüchtige-individuen in KB5? Mit welcher Querie würde uns PROLOG alle eifersüchtigen-individuen in KB5 nennen? 2.Repräsentieren Sie folgendes in PROLOG: a) Rincwind ist ein Zauberer b) Zwerge und Elben mögen sich nicht c) Wenn zwei verheiratet sind, mögen sie sich. d) Otto mag niemanden, der ihn dämlich nennt und Engländer ist. e) Hobbits essen alles, was nahrhaft oder schmackhaft ist 3. Wir haben folgende knowledge base: wizard(ron). haswand(harry). quidditchplayer(harry). wizard(x) :- hasbroom(x),haswand(x). hasbroom(x) :- quidditchplayer(x). Was antwortet PROLOG auf folgende Queries? a) wizard(ron). b) witch(ron). c) wizard(hermione). d) witch(hermione). e) wizard(harry). f) wizard(y). g) witch(y).