Programmierkurs Prolog, SS 1998



Ähnliche Dokumente
Einführung in das Programmieren Prolog Sommersemester Teil 2: Arithmetik. Version 1.0

Wir machen neue Politik für Baden-Württemberg

Webalizer HOWTO. Stand:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Datenbanken Microsoft Access 2010

Was ist das Budget für Arbeit?

Professionelle Seminare im Bereich MS-Office

Gezielt über Folien hinweg springen

Professionelle Seminare im Bereich MS-Office

Erfahrungen mit Hartz IV- Empfängern

Ein Vorwort, das Sie lesen müssen!

Teamentwicklung. Psychologische Unternehmensberatung Volker Rudat

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Statuten in leichter Sprache

Repräsentative Umfrage zur Beratungsqualität im deutschen Einzelhandel (Auszug)

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Grundlagen der Theoretischen Informatik, SoSe 2008

Listen. bersicht. Zweck. Listen allgemein Listen in Prolog. Programmiertechniken mit Listen. Erstellen von Prolog-Programmen mit Listen

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Information zum Projekt. Mitwirkung von Menschen mit Demenz in ihrem Stadtteil oder Quartier

Frühstück. Frühstück an Werktagen? Es frühstücken an einem normalen Werktag üblicherweise. jeden Tag ab und zu gar nicht *) % % %

Mathematischer Vorbereitungskurs für Ökonomen

Die künftige Ingenieurausbildung in der EU - Brennpunkt Ostsee-Raum oder The Network of Excellence in Mechatronics in the Baltic Sea Region

Das Werk einschließlich aller seiner Texte ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechts

AutoCAD Dienstprogramm zur Lizenzübertragung

e-books aus der EBL-Datenbank

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Melanie Kaspar, Prof. Dr. B. Grabowski 1

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Erfolg beginnt im Kopf

Kundenspezifische Preise im Shop WyRu Online-Shop

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Bedienungsanleitung - Webtool

7.3 Einrichtung 13. Monatslohn. Auszahlung Ende Jahr / Ende der Beschäftigung

Jeder ist ein Teil vom Ganzen Inklusion ändert den Blick

Leit-Bild der Sonnenhofschule

Zählen von Objekten einer bestimmten Klasse

Welche Regeln gibt es für das ZDF?

Stornierungsbedingungen und weitere Voraussetzungen

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

1. Wie viel Zinsen bekommt man, wenn man 7000,00 1 Jahr lang mit 6 % anlegt?

Systemvoraussetzung < zurück weiter >

AutoTexte und AutoKorrektur unter Outlook verwenden

Browsereinstellungen für moneycheck24 in Explorer unter Windows

Einzelvorsorge Schutz der Familie und der Geschäftspartner. Was immer das Leben bringt, Sie haben vorgesorgt

Kreativ visualisieren

Lehrer: Einschreibemethoden

Rundung und Casting von Zahlen

Welche Lagen können zwei Geraden (im Raum) zueinander haben? Welche Lagen kann eine Gerade bezüglich einer Ebene im Raum einnehmen?

Simon die linke Hand des Handwerks

Die richtigen Partner finden, Ressourcen finden und zusammenführen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Hautkrebsscreening. 49 Prozent meinen, Hautkrebs sei kein Thema, das sie besorgt. Thema Hautkrebs. Ist Hautkrebs für Sie ein Thema, das Sie besorgt?

1. Weniger Steuern zahlen

ROLAND RECHTSSCHUTZ GESCHÄFTSKUNDEN. JurWay im gewerblichen Bereich. JurWay im gewerblichen Bereich

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Übungsaufgaben Tilgungsrechnung

DVB-T DA2 Hybrid Seite 1 von 10

Anmeldung zu unserem Affiliate-Programm bei Affilinet

Sehr geehrte Damen und Herren

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Sparen in Deutschland - mit Blick über die Ländergrenzen

Bericht vom Fach-Tag: Schluss mit Sonderwelten

Haus und Grundstück im Erbrecht 7: Kündigung und Schönheitsreparaturen bei der Mietwohnung im Erbe

HOTEL BÄREN. Familie Sauter Beobachtungen & Problembereiche. Interview mit Stefan Sauter (Miteigentümer)

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

Wie kann ich mein Profil pflegen und/oder ihm ein PDF hinzufügen? Sie vermissen die Antwort auf IHRE Frage? Bitte lassen Sie uns Ihnen weiterhelfen:

GPS Garmin MapSource - Track erstellen und nutzen

Moodle-Kurzübersicht Kurse Sichern und Zurücksetzen

Relationale Kalküle. Grundlagen der Datenbanken. Dr. Jérôme Kunegis Wintersemester 2013/14

Die Post hat eine Umfrage gemacht

Erwin Grüner

Arbeit zur Lebens-Geschichte mit Menschen mit Behinderung Ein Papier des Bundesverbands evangelische Behindertenhilfe e.v.

Fast jeder zweite Deutsche würde gerne abnehmen

Belichtung mit Tonwertkorrektur verbessern

Korrelation (II) Korrelation und Kausalität

Fragebogen: Rätoromanisch

Weiterbildungen 2014/15

Flow Session zum Entdecken Deines idealen Lebensstils

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

7 Rechnen mit Polynomen

Anhang. 3. Was denken Sie: An wen richtet sich das Lernprogramm für Psycholinguistik? zu nicht nicht zu

RMeasy das SAP IS U Add On für Versorgungsunternehmen. Optimieren Sie Ihre Prozesse in Kundengewinnung und Kundenbindung.

Beispiel(unten ist der Spielfeldrand):

Bürgerhilfe Florstadt

Beschluss für ein neues Teilhaberecht Einfache Sprache, Großdruck

Datenexport aus JS - Software

Wachstum 2. Michael Dröttboom 1 LernWerkstatt-Selm.de

78 Prozent der Deutschen wollen kein Genfood. Umfrage des Meinungsforschungsinstituts FORSA für SLOW FOOD Deutschland. 19.

Motorsegler Reservierungs-System. Reservierungsplatz

Primzahlen und RSA-Verschlüsselung

Geld Verdienen im Internet leicht gemacht

Programmentwicklungen, Webseitenerstellung, Zeiterfassung, Zutrittskontrolle

Die Fakten & der Ausgangspunkt: Deshalb:

II. Daten sichern und wiederherstellen 1. Daten sichern

Transkript:

Programmierkurs Prolog SS 1998 Universität Dortmund LS VIII - Prof. K. Morik

Inhalt Vergleiche von Termen Typtests auf Termen Zugriff auf den Termaufbau Zugriff auf Fakten und Regeln All-Solutions Prädikate Metaprogrammierung

Vergleich von Termen T1 = T2 T1 \= T2 T1 == T2 T1 \== T2 T1 @< T2 T1 @=< T2 T1 @> T2 T1 @>= T2 T1 und T2 sind unifizierbar T1 und T2 sind nicht unifizierbar. Die Terme, mit denen T1 und T2 instanziiert sind, sind identisch. T1 und T2 sind nicht identisch Prüfen auf alphabetische Ordnung

Typtests auf Termen atom(?term) Test auf Prolog-Atom atomic(?term) Atom/Zahl/String compound(?term) Strukture oder Liste var(?term) Test auf Variable nonvar(?term) Zumindest teilweise instantiiert integer(?term) Test auf ganze Zahl real(?term) Test auf reele Zahl number(?term) Test auf Zahl string(?term) Test auf String

Zugriff auf den Termaufbau?Term..=?List Term <-> Liste atom_string(?a,?s) Atom <-> String integer_atom(?i,?a) Integer <-> Atom number_string(?n,?s) Zahl <-> String char_int(?c,?i) Zeichen <-> ASCII string_list(?s,?l) L ist liste der ASCII Codes functor(?t,?f,?a) F ist Funktor von T/A copy_term(+t1,?t2) T2 is Kopie von T1 mit neuen Variablen

Metapraedikat: clause(h,b) clause(h,b) Es wird nach einer Klausel gesucht, deren Kopf mit H und deren Koerper mit B unifizierbar ist.

Hinzufuegen von Klauseln assert(clause). Die Klausel Clause wird zur Datenbasis hinzugefuegt. asserta(clause). Einfuegen von Clause am Beginn. assertz(clause). Einfuegen von Clause am Ende. Clause: Head Head :- Body

Loeschen von Klauseln (I) retract(clause). Die erste Klausel, die mit Clause unifiziert werden kann, wird geloescht. Clause: Head Head :- Body Der Koerper einer Klause kann eine freie Variable sein bzw. in ihm koennen ungebundene Variablen auftauchen.?- retract((foo(x) :- Body)),fail.

Loeschen von Klauseln (II) retractall(head). Alle Klauseln, deren Kopf mit Head unifiziert werden kann, werden geloescht. Kann man schreiben als: retractall(head) :- retract((head :- Body)),fail. retractall(_).

Alle Lösungen einer Anfrage In einer Familiendatenbank sind Relationen der Art vater(joe,mary). vater(joe,anne). vater(henry,barbara).... enthalten. Wir wollen alle Kinder des Vaters Joe bestimmen.?- vater(joe,x). X=mary ; X=anne ; no (more) solutions Problem: Es ist immer nur eine Lösung verfügbar. Andere Möglichkeit durch failure driven loop :?- vater(joe,x), write(x), nl,fail. mary anne No

Mengenprädikate Problem der vorangegangenen Ansätze: Sie schlagen fehl. Alle Lösungen zu finden geht über die Ausdruckskraft der Prädikatenlogik 1. Stufe hinaus. Prolog bietet einige Prädikate, die sich ähnlich wie Prädikatenlogik 2. Stufe verhalten. findall(?x, +Goal,?List) bagof(?x, +Goal,?List) setof(?x, +Goal,?List)

Mengenprädikat findall/3 findall(?template, +Generator,?Liste) Für jede Lösunge des Generator-Zieles wird das instantiierte Template in die Liste aufgenommen. vater(joe,mary). vater(joe,anne). vater(henry,barbara).?- findall(x,vater(joe,x),l). X = X L = [mary, anne]?- findall(x,vater(y,x),l). Y = Y X = X L = [mary, anne, barbara]

Mengenprädikat bagof/3 bagof(?template, +Generator,?Liste) Die nicht im Template vorkommenden freien Variablen können selektiv existentiell gebunden werden. vater(joe,mary). vater(joe,anne). vater(henry,barbara).?- bagof(x,y^vater(y,x),l). Y = Y X = X L = [mary, anne, barbara]?- bagof(x,vater(y,x),l). Y = joe X = X L = [mary, anne] ; Y = henry X = X L = [barbara] ;

Mengenprädikat setof/3 bagof(?template, +Generator,?Liste) Wie bagof/3, aber leiche Lösungen werden aus der Liste gelöscht. vater(joe,mary). vater(joe,anne). vater(henry,barbara). vater(henry,mary).?- bagof(x,y^vater(y,x),l). Y = Y X = X L = [mary, anne, barbara,mary]?- setof(x,y^vater(y,x),l). Y = Y X = X L = [mary, anne, barbara]

Metapraedikat: call(x) call(x) Das Goal X wird ausgefuehrt. X muss ein ausfuehrbares Ziel sein, d. h. es an muss einen Term gebunden sein, der keinen Typfehler verursacht.