2 Logikprogrammierung am Beispiel Prolog
|
|
- Louisa Frank
- vor 6 Jahren
- Abrufe
Transkript
1 2 Logikprogrammierung am Beispiel Prolog 2.1 Logikprogrammierung mit einfachen Daten 2.2 Variablenumbenennung 2.3 Syntax 2.4 Komplexe Daten 2.5 Der Cut 2.6 Negation als Fehlschlag 2.7 Literaturhinweise 2.8 Übungsaufgaben 2 Logikprogrammierung am Beispiel Prolog 1
2 2.1 Logikprogrammierung mit einfachen Daten maennlich(paul). maennlich(fritz). maennlich(steffen). weiblich(karin). weiblich(lisa). weiblich(maria). weiblich(sina). vater(steffen, paul). vater(fritz, karin). vater(steffen, lisa). vater(paul, maria). mutter(karin, maria). mutter(sina, paul). % Paul ist männlich % Fritz ist männlich % Steffen ist männlich % Karin ist weiblich % Lisa ist weiblich % Maria ist weiblich % Sina ist weiblich % Steffen ist der Vater von Paul % Fritz ist der Vater von Karin % Steffen ist der Vater von Lisa % Paul ist der Vater von Maria % Karin ist die Mutter von Maria % Sina ist die Mutter von Paul tochter(y, X) : vater(x, Y), weiblich(y). 2 Logikprogrammierung am Beispiel Prolog 2
3 2.1.7 Rekursiv definierte Prädikate - Motivation Eltern und weitere Vorfahren elternteil(e, Kind) : vater(e, Kind). elternteil(e, Kind) : mutter(e, Kind). vorfahre(alt, Jung) : elternteil(alt, Jung). % Eltern vorfahre(alt, Jung) : elternteil(alt, X), % Großeltern elternteil(x, Jung). vorfahre(alt, Jung) : elternteil(alt, X), % Urgroßeltern elternteil(x, Y), elternteil(y, Jung) Logikprogrammierung am Beispiel Prolog 3
4 Ein rekursiv definiertes Prädikat Eltern und weitere Vorfahren elternteil(e, Kind) : vater(e, Kind). elternteil(e, Kind) : mutter(e, Kind). vorfahre(alt, Jung) : elternteil(alt, Jung). vorfahre(alt, Jung) : elternteil(alt, X), vorfahre(x, Jung). Die Reihenfolge der Teilziele ist wichtig! vorfahre1(alt, Jung) : elternteil(alt, Jung). vorfahre1(alt, Jung) : vorfahre1(x, Jung), elternteil(alt, X). 2 Logikprogrammierung am Beispiel Prolog 4
5 Variablenumbenennung Geltungsbereich einer Variablen: vorfahre(alt, Jung) : elternteil(alt, Jung). vorfahre(alt, Jung) : elternteil(alt, X), vorfahre(x, Jung). Indizierung X i bzw. i. 2 Logikprogrammierung am Beispiel Prolog 5
6 2.3 Syntax: Terme, Konstantensymbole und Atome Terme sind Konstantensymbole, Variable oder zusammengesetzte Terme. Konstantensymbole sind Atome oder Zahlen. Atome sind Folgen von alphanumerischen Zeichen, die mit einem kleinen Buchstaben beginnen (a, a12, steffen), eine Folge von Sonderzeichen ([ ]) oder eine Folge von Zeichen in einfachen Anführungszeichen ( Schule ist doof ). 2 Logikprogrammierung am Beispiel Prolog 6
7 Syntax: Zahlen, Variable und zusammengesetzte Terme Zahlen sind ganze Zahlen (1, 2) oder reelle Zahlen (1.7, 3.14). Variable sind Folgen von alphanumerischen Zeichen, die mit einem großen Buchstaben oder mit beginnen (X, Y4w 13, G124). Zusammengesetzte Terme sind Zeichenreihen der Form f(t1,..., tn) und bestehen aus einem Funktor f/n und n 1 Termen t1,..., tn. Die Terme t1,..., tn werden auch Argumente genannt. Ein Funktor f/n ist definiert durch seinen Namen f und seine Stelligkeit n. Funktoren mit gleichen Namen aber verschiedenen Stelligkeiten werden als verschieden betrachtet. f(a12, X, 1.7), f(a, f(1.3, [ ])). 2 Logikprogrammierung am Beispiel Prolog 7
8 Syntax: Prolog-Programme Ein Prolog-Programm ist eine Folge von Programmklauseln. Eine Programmklausel ist eine Zeichenreihe der Form t : t1,..., tn. wobei t, t1,..., tn Atome oder zusammengesetzte Terme sind und n 0 ist. t heißt Kopf, t1,..., tn heißt Rumpf der Programmklausel. Wenn n = 0 ist, dann schreiben wir kurz t. Programmklauseln dieser Form heißen Fakten. Programmklauseln, für die n > 0 gilt, heißen Regeln. 2 Logikprogrammierung am Beispiel Prolog 8
9 Syntax: Anfragen bzw. Ziele Eine Anfrage oder Ziel ist eine Zeichenreihe der Form? t1,..., tn. wobei die t1,..., tn Atome oder zusammengesetzte Terme sind und n 0 ist. Die t1,..., tn heißen Teilziele. Wenn n = 0 ist, dann wollen wir von einer leeren Anfrage oder einem leeren Ziel sprechen. Eine leere Anfrage ist immer erfüllt. 2 Logikprogrammierung am Beispiel Prolog 9
10 2.4 Komplexe Daten person(lisa, geb(3, 12, 1910)). person(maria, geb(1, 10, 1990)). person(steffen, geb(4, 5, 1919)). % Lisa wurde am geboren % Maria wurde am geboren % Steffen wurde am geboren rentner(x) : person(x, geb(t, M, J)), % Frauen werden mit weiblich(x), % 60 in den Ruhestand J < % versetzt, rentner(x) : person(x, geb(t, M, J)), % Männer erst maennlich(x), % mit 65 J < Logikprogrammierung am Beispiel Prolog 10
11 2.4.1 Listen Sei [ ] ein Atom und./2 ein Funktor. [ ] ist eine Liste. Wenn K ein Term und R eine Liste ist, dann ist.(k, R) eine Liste. [ ] wird häufig als leere Liste, K als Kopf und R als Rumpf bezeichnet. Abkürzungen:.(t1,.(t2,.(... (tn, t)...))) [t1, t2,..., tn t]..(t1,.(t2., (... (tn, [])...))) [t1, t2,..., tn]. liste([ ]). % [ ] ist eine Liste. liste([kopf Rest]) : liste(rest). % [Kopf Rest] ist eine Liste, % wenn Rest eine Liste ist. 2 Logikprogrammierung am Beispiel Prolog 11
12 2.4.2 Listenoperationen Das Prädikatszeichen member/2: member(x, [X ]). member(x, [ Rest]) : member(x, Rest). Das Prädikatszeichen append/3: append([ ], L, L). append([kopf Rest], L, [Kopf Rest1]) : append(rest, L, Rest1). Das Prädikatszeichen naive reverse/2: naive reverse([ ], [ ]). naive reverse([kopf Rest], X) : naive reverse(rest, Y), append(y, [Kopf], X). 2 Logikprogrammierung am Beispiel Prolog 12
13 2.4.3 Operatoren Ziel: Wir wollen Operatoren auch infix oder postfix schreiben dürfen; Operatoren sollen auch assoziativ sein dürfen. +(2, 5) 2 + 5, +(3, +(5, 7)) Operatordeklaration: : op(500, yfx, +). Einstellige Operatoren: fx Präfix nicht assoziativ fy Präfix rechtsassoziativ xf Postfix nicht assoziativ yf Postfix linksassoziativ Zweistellige Operatoren: xfx Infix nicht assoziativ yfx Infix linksassoziativ xfy Infix rechtsassoziativ Präzedenzzahl: niedere Präzedenzzahl höhere Priorität. 2 Logikprogrammierung am Beispiel Prolog 13
14 2.4.4 Arithmethik Ein Term ist grundinstantiiert, wenn in ihm keine Variablen mehr vorkommen. Der Operator is/2: X is 7 8. Vergleichsoperatoren: 4 12 =:= 100 (60 8) Gleichheit =:= /2 Ungleichheit = \ = /2 Kleiner < /2 Größer > /2 Kleiner oder gleich =< /2 Größer oder gleich >= /2 2 Logikprogrammierung am Beispiel Prolog 14
15 Eine Klassenhierarchie der Prolog-Terme Variablen Atome Terme Konstantensymbole Ganze Zahlen Nicht Variablen Zahlen Zusammengesetzte Terme Gleitkommazahlen 2 Logikprogrammierung am Beispiel Prolog 15
16 2.4.5 Strukturprädikate Typbestimmung var(x) X ist eine Variable. nonvar(x) X ist keine Variable. atomic(x) X ist ein Konstantensymbol. atom(x) X ist ein Atom. number(x) X ist eine Zahl. integer(x) X ist eine ganze Zahl. float(x) X ist eine Gleitkommazahl. compound(x) X ist ein zusammengesetzter Term. Analyse und Synthese von Termen Das Systemprädikatszeichen functor/3: Zugriff auf Funktor. Das Systemprädikatszeichen arg/3: Zugriff auf Argumente. Der Systemoperator =.. /2: Terme Listen. 2 Logikprogrammierung am Beispiel Prolog 16
17 2.4.6 Vergleich von Termen Der Systemoperator = = /2: Syntaktische Gleichheit. Der Systemoperator \ = = /2: Syntaktische Ungleichheit. 2 Logikprogrammierung am Beispiel Prolog 17
18 2.4.7 Unifikation von Termen Ein Unifikationsproblem wird durch zwei Terme s und t beschrieben und ist die Frage, ob es eine Ersetzung (oder Substitution) der in s und t vorkommenden Variablen gibt, so dass die entsprechenden Instanzen von s und t syntaktisch identisch sind. Gibt es eine solche Substitution, dann sind s und t unifizierbar. Der Systemoperator = /2: Unifikation. Unterschied = /2 und = = /2. Zeichenreihen der Form X = a werden Bindung genannt. Eine Menge von Bindungen ist eine Substitution. Eine leere Menge von Bindungen wird leere Substitution genannt. Fehlschlagende Unifikationsprobleme Verschiedene Funktoren: f(x, a) = g(y, a). Verschiedene Stelligkeiten: f(x) = f(x, Y). Occurs Check Problem: X = f(x). 2 Logikprogrammierung am Beispiel Prolog 18
19 Ein Unifikationsalgorithmus ohne Occurs Check unify(x, Y) : var(x), X = Y. unify(x, Y) : nonvar(x), var(y), Y = X. unify(x, Y) : nonvar(x), nonvar(y), X =.. [F L1], Y =.. [F L2], unify list(l1, L2). unify list([ ], [ ]). unify list([x1 L1], [X2 L2]) : unify(x1, X2), unify list(l1, L2). 2 Logikprogrammierung am Beispiel Prolog 19
20 Ein Unifikationsalgorithmus mit Occurs Check unify with occurs check(x, Y) : var(x), var(y), X = Y. unify with occurs check(x, Y) : var(x), nonvar(y), not occurs in(x, Y), X = Y. unify with occurs check(x, Y) : nonvar(x), var(y), not occurs in(y, X), Y = X. unify with occurs check(x, Y) : nonvar(x), nonvar(y), X =.. [F L1], Y =.. [F L2], unify list with occurs check(l1, L2). unify list with occurs check([ ], [ ]). unify list with occurs check([x1 L1], [X2 L2]) : unify with occurs check(x1, X2), unify list with occurs check(l1, L2). not occurs in(x, Y) : var(y), X \ = = Y. not occurs in(x, Y) : nonvar(y), Y =.. [F L], not occurs in list(x, L). not occurs in list(x, [ ]). not occurs in list(x, [Kopf Rest]) : not occurs in(x, Kopf), not occurs in list(x, Rest). 2 Logikprogrammierung am Beispiel Prolog 20
21 2.5 Der Cut Das Systemprädikatszeichen!/0, genannt Cut. max1(x, Y, X) : X >= Y. max1(x, Y, Y) : X < Y. max2(x, Y, X) : X >= Y,!. max2(x, Y, Y) : X < Y,!. max3(x, Y, X) : X >= Y,!. max3(x, Y, Y). max4(x, Y, X) : X >= Y. max4(x, Y, Y). max5(x, Y, Z) : X >= Y,!, Z = X. max5(x, Y, Y). 2 Logikprogrammierung am Beispiel Prolog 21
22 Das Abschneiden von Ästen in einem Ableitungsbaum? max1(7, 5, Z). {X = 7, Y = 5, Z = 7} {X = 7, Y = 5, Z = 5}? 7 >= 5? 5 < 7 e f 2 Logikprogrammierung am Beispiel Prolog 22
23 Rote und grüne Cuts Grüne Cuts: schneiden keine Lösungen ab. Rote Cuts: schneiden Lösungen ab. Setzen Sie einen Cut sobald Sie wissen, dass dies die richtige Programmklausel ist nicht später, aber auch nicht früher. Verzögern Sie Ausgabe-Unifikationen bis nach dem Cut. 2 Logikprogrammierung am Beispiel Prolog 23
24 Die Familiendatenbank maennlich(paul). maennlich(fritz). maennlich(steffen). weiblich(karin). weiblich(lisa). weiblich(maria). weiblich(sina). vater(steffen, paul). vater(fritz, karin). vater(steffen, lisa). vater(paul, maria). mutter(karin, maria). mutter(sina, paul). % Paul ist männlich % Fritz ist männlich % Steffen ist männlich % Karin ist weiblich % Lisa ist weiblich % Maria ist weiblich % Sina ist weiblich % Steffen ist der Vater von Paul % Fritz ist der Vater von Karin % Steffen ist der Vater von Lisa % Paul ist der Vater von Maria % Karin ist die Mutter von Maria % Sina ist die Mutter von Paul 2 Logikprogrammierung am Beispiel Prolog 24
25 2.6 Negation als Fehlschlag Wie können wir in Prolog testen, dass die 1 in der Liste [2,3,4] nicht vorkommt? Der Systemoperator \ + /1. Das Systemprädikatszeichen fail/0. Implementation von \+: \ + X : X,!, fail. \ + X. Negation als Fehlschlag ist keine klassische Negation. cross(x) : \ + train(x). 2 Logikprogrammierung am Beispiel Prolog 25
Einführung in das Programmieren Prolog Sommersemester 2006. Teil 2: Arithmetik. Version 1.0
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 2: Arithmetik Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln, Unifikation,
MehrLogische Programmierung
Logische Programmierung B-82 Deklaratives Programmieren in Prädikatenlogik: Problem beschreiben statt Algorithmus implementieren (idealisiert). Grundlagen: Relationen bzw. Prädikate (statt Funktionen);
MehrBinäre Suchbäume (binary search trees, kurz: bst)
Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.
Mehr8. Logische Programmierung. Prolog Sprachkonstrukte: Fakten. Prolog Übersicht
8. Logische Programmierung GPS-8-1 Übersicht zur logischen Programmierung GPS-8-2 Themen dieses Kapitels: Deklaratives Programmieren: Problem beschreiben statt Algorithmus implementieren (idealisiert).
Mehr5 Logische Programmierung
5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen
MehrProlog = Programmierung in Logik (Roussell, Colmerauer, 1973/74)
Logikprogrammierung Historie: Philosophie / Mathematik Künstliche Intelligenz Praktische Programmiersprache: Prolog = Programmierung in Logik (Roussell, Colmerauer, 1973/74) Grundidee: Ein Programm ist
MehrWissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren)
Was bisher geschah Wissensrepräsentation und -verarbeitung in Logiken klassische Aussagenlogik klassische Prädikatenlogik: Wiederholung Syntax, Semantik Normalformen: bereinigt Pränex Skolem ( -Eliminierung)
MehrAuswahl von Klauseln und Atomen in Prolog
5.6 Prolog... ist die bekannteste Implementierung einer LP-Sprache; wurde Anfang der 1970er von Alain Colmerauer (Marseille) und Robert Kowalski (Edinburgh) entwickelt. konkretisiert den vorgestellten
MehrListen. bersicht. Zweck. Listen allgemein Listen in Prolog. Programmiertechniken mit Listen. Erstellen von Prolog-Programmen mit Listen
Listen bersicht Listen allgemein Listen in Prolog Schreibweise Listen als rekursive Datenstruktur Unifikation Programmiertechniken mit Listen Zweck rekursive Suche Abbilden Erstellen von Prolog-Programmen
MehrKopf und Rest einer Liste (head and tail): Trennung durch. Listenkopf: kann mehrere Elemente umfassen
Prolog Syntax Liste, Variable [ Term Liste ] Listenelemente: Trennung durch Komma [1, pferd, klaus] Kopf und Rest einer Liste (head and tail): Trennung durch [K R] = [1, pferd, klaus] (K = 1, R = [pferd,
MehrDatenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer:
Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.
MehrFormale Sprachen, reguläre und kontextfreie Grammatiken
Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache
MehrTiramisu Deklarativ Aus Eigelb, Mascarpone und in Likör und Kaffee getränkten Biskuits hergestellte cremige Süßspeise
Kapitel 3 Logik-Programmierung 3.1 Einführung Was statt Wie am Beispiel von Tiramisu Folie 145 Tiramisu Deklarativ Aus Eigelb, Mascarpone und in Likör und Kaffee getränkten Biskuits hergestellte cremige
MehrEinfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at
Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache
MehrLogisches Programmieren
Logisches Programmieren Allgemeines zu Prolog: 1. Idee des automatischen Beweisens von Fakten aus einer gegebenen Menge von Axiomen: (Eingeschränktes) Resolutionsprinzip als grundlegende Rechenmethode,
Mehr6.1 Syntax und Semantik von Constraint-Logikprogrammen
Kapitel 6 Logikprogrammierung mit Constraints Nachdem wir nun sowohl die reine Logikprogrammierung als auch ihre Implementierung in der Sprache Prolog betrachtet haben, wollen wir uns zum Schluss mit einer
MehrPROLOG. Eine Einführung. Sven Naumann
PROLOG Eine Einführung Sven Naumann Sommersemester 2007 Inhaltsverzeichnis I Logikprogrammierung 7 1 Grundbegriffe 11 1.1 Prolog und Logikprogrammierung.................. 11 1.2 Terme.................................
MehrProgrammierkurs Prolog, SS 1998
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
MehrTerme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)
Prädikatenlogik Man kann den natürlichsprachlichen Satz Die Sonne scheint. in der Prädikatenlogik beispielsweise als logisches Atom scheint(sonne) darstellen. In der Sprache der Prädikatenlogik werden
MehrEinführung in PROLOG. Christian Stocker
Einführung in PROLOG Christian Stocker Inhalt Was ist PROLOG? Der PROLOG- Interpreter Welcher Interpreter? SWI-Prolog Syntax Einführung Fakten, Regeln, Anfragen Operatoren Rekursion Listen Cut Funktionsweise
MehrBinäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
MehrInhalt. SWP Logische Programme. Motivation. Formalisierung. Wissensbasis. Bsp (Bibel)Verwandtschaften. Motivation Sprache LP
Inhalt SWP Logische Programme Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Motivation Sprache LP Resolution Unifikation Datenbanken und logische Programme Semantik 2 Motivation Bsp
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrEinführung in Prolog. Literatur
Einführung in Prolog Literatur Clocksin/Mellish Programming in Prolog Skript aus dem Kurs Max Hadersbeck Skript aus dem Kurs Hans Leiss Bratko Prolog Programming for Artificial Intelligence Prolog Lexikon
MehrLogische Programmierung
Logische Programmierung Vorlesungsskript Uwe Petermann FB IMN, HTWK Leipzig G.-Freytag-Str. 42, Leipzig Mail: uwe@imn.htwk-leipzig.de WWW: www.imn.htwk-leipzig.de/~uwe 5. Juni 2006 Zur Beachtung: Dieser
MehrSWP Logische Programme
SWP Logische Programme Alexander Felfernig, Stephan Gspandl Institut für Softwaretechnologie {alexander.felfernig,sgspandl}@ist.tugraz.at Institute for Software Technology Inhalt Motivation Logische Programme
MehrDatenstrukturen DCG Grammatiken. Tutorial I Operationen auf Datenstrukturen II Bäume DCGs und Semantik II
Datenstrukturen DCG Grammatiken Tutorial I Operationen auf Datenstrukturen II Bäume DCGs und Semantik II Bäume Repräsentation von Mengen durch binäre Bäume: Eine häufige Anwendung von Listen ist es Mengen
MehrWissensbasierte Systeme/ Expertensysteme. Teil 2
Wissensbasierte Systeme/ Expertensysteme Teil 2 BiTS, Sommersemester 2004 Dr. Stefan Kooths KOOTHS BiTS: Wissensbasierte Systeme/Expertensysteme Teil 2 1 Gliederung 1. Einführung und Einordnung 2. Entscheidungsunterstützung(ssysteme)
MehrFixpunktsemantik logischer Programme Pascal Hitzler Juli 1997 Kurzuberblick im Rahmen der Vorlesung Einfuhrung in Prolog von T. Cornell im Sommersemester 1997 an der Universitat Tubingen. Beweise sind
MehrWissensbasierte Systeme
WBS4 Slide 1 Wissensbasierte Systeme Vorlesung 4 vom 03.11.2004 Sebastian Iwanowski FH Wedel WBS4 Slide 2 Wissensbasierte Systeme 1. Motivation 2. Prinzipien und Anwendungen 3. Logische Grundlagen 4. Suchstrategien
MehrLogik und Mengenlehre. ... wenn man doch nur vernünftig mit Datenbanken umgehen können will?
Mengenlehre und Logik: iederholung Repetitorium: Grundlagen von Mengenlehre und Logik 2002 Prof. Dr. Rainer Manthey Informationssysteme 1 arum??? arum um alles in der elt muss man sich mit herumschlagen,......
MehrJava Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
MehrTheoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 9: Prädikatenlogik schulz@eprover.org Rückblick 2 Rückblick: Vor- und Nachteile von Aussagenlogik Aussagenlogik ist deklarativ: Syntaxelemente entsprechen
Mehry(p F x) gebunden und in den Formeln F xy
Wirkungsbereich (Skopus) eines Quantors i bzw. i nennen wir die unmittelbar auf i bzw. i folgende Formel. Wir sagen, eine IV i kommt in einer Formel A gebunden vor, wenn sie unmittelbar auf oder folgt
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 24.10.2012 IAM Institut für Angewandte Mathematik Literatur: Internet Skripte Erik Wallacher: Vorlesungsskript Modellierung/Programmierung Gerald Kempfer:
Mehr1 Aussagenlogische Formeln
1 Aussagenlogische Formeln Aufgabe 1.1 Transformieren Sie die Formel in disjunktive Normalform (DNF). ((:A! :B) ^ D)! ((A _ C) $ (:B ^ D)) Lösung 1.1 Schrittweise Transformation: Schritt 1: ((:A! :B) ^
MehrKapitel 5: Applikative Programmierung
Kapitel 5: Applikative Programmierung In der applikativen Programmierung wird ein Programm als eine mathematische Funktion von Eingabe-in Ausgabewerte betrachtet. Das Ausführen eines Programms besteht
MehrEntwicklung eines korrekten Übersetzers
Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung
MehrSQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:
SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In
MehrTheoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 12: Termersetzungssysteme schulz@eprover.org Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A ist eine
MehrSWP Prüfungsvorbereitung
20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c
Mehr4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen
Kapitel Kapitel 4 Deskriptive Programmierung SS 2008 4. 4. Algorithmen und Datenstrukturen in in deskriptiven Programmiersprachen Deskriptive Programmierung 1 Sprachverarbeitung in in Prolog Prolog Prolog
Mehr2. Vorlesung. Slide 40
2. Vorlesung Slide 40 Knobelaufgabe Was tut dieses Programm? Informell Formal Wie stellt man dies sicher? knobel(a,b) { Wenn a = 0 dann return b sonst { solange b 0 wenn a > b dann { a := a - b sonst b
Mehr3 Logikprogrammierung
3 Logikprogrammierung PROLOG ermöglicht deklarative Programmierung kompakte Programme agile Softwareentwicklung, rapid Prototyping Die Auswertungsstrategie der SLDNF Resolution benutzt Tiefensuche Backtracking
MehrPrinzipielle Ausführungsvarianten I
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Unser erstes Java Programm AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 39 Hello World!
MehrAufgaben Theoretische Informatik
Aufgaben Theoretische Informatik Elmar Eder 26. Dezember 2015 Lösungen der Aufgaben bitte abgeben auf dem Abgabesystem von Dominik Kaaser auf https://ti.cosy.sbg.ac.at/ als ASCII- oder UTF-8-Dateien mit
MehrProgrammiertechnik Operatoren, Kommentare, Ein-/Ausgabe
Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,
Mehr3. Logik-Programmierung
3. Logik-Programmierung 3.1. Vorbemerkungen Idee: Ausführen eines Logik-Programms entspricht Herleitung leerer Klausel. Zusätzliche Verwendung einer Antworterzeugungskomponente (liefert Rechenergebnis).
MehrJava Einführung Operatoren Kapitel 2 und 3
Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig
Mehr1 Syntax von Programmiersprachen
1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme
MehrGenogramm erstellen Anleitung und Leitfaden
Genogramm erstellen Anleitung und Leitfaden www.ergebnisorientiertes-coaching.de Inhalt WAS IST EIN GENOGRAMM? 3 WIE VIEL GENOGRAMM BRAUCHT EINE AUFSTELLUNG? 3 WER GEHÖRT ALLES IN DAS GENOGRAMM? 4 WELCHE
MehrBeispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise:
Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 5.4 Prädikatenlogik mit Gleichheit Resolution 192 Beispiel Bsp.: Betrachte Schlussweise in: 1 Wenn es regnet, dann wird die Straße nass. R N
MehrPrädikate zum Testen und Manipulieren der Struktur der Terme; Mehr meta-logische Prädikate z.b. zum Testen des Zustands der Ableitung;
Mehr Prolog Prolog bietet mehr an, z.b.: Prädikate zum Testen und Manipulieren der Struktur der Terme; Mehr meta-logische Prädikate z.b. zum Testen des Zustands der Ableitung; Mehr extra-logische Prädikate,
MehrBioinformatik für Biochemiker
Bioinformatik für Biochemiker Oliver Kohlbacher, Steffen Schmidt SS 2010 3. Strings, Sequenzen und Python Abt. Simulation biologischer Systeme WSI/ZBIT, Eberhard Karls Universität Tübingen Übersicht Strings
Mehr1. Erreichen Sie, dass im Feld KdNr (Kunden-Nummer) nur 4-stellige Zahlen eingetragen
Diverse Gültigkeitsregeln - Lösungshinweise 1998 Niko Becker Hilfedateien stehen Ihnen auf unserer Homepage Seite ACCESS Infos und Hilfe zur Verfügung 1. Erreichen Sie, dass im Feld KdNr (Kunden-Nummer)
MehrTeil IV. Grundlagen der Programmierung
Teil IV Grundlagen der Programmierung Überblick 1 Einleitung zu C und C++ Aufbau von Programmen/Dateien Steueranweisungen Funktionen Mehr zu Datentypen: Felder, Zeiger und Strukturen Arbeit mit Dateien
MehrPrädikatenlogik - Micromodels of Software
Prädikatenlogik - Micromodels of Software Philipp Koch Seminar Logik für Informatiker Universität Paderborn Revision: 30. Mai 2005 1 Inhaltsverzeichnis 1 Motivation 3 2 Modelle 3 2.1 Definition eines Modells.......................
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben
MehrKontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
MehrErgänzungen zur Analysis I
537. Ergänzungsstunde Logik, Mengen Ergänzungen zur Analysis I Die Behauptungen in Satz 0.2 über die Verknüpfung von Mengen werden auf die entsprechenden Regelnfür die Verknüpfung von Aussagen zurückgeführt.
MehrFormale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen
Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist
MehrProseminar "Grundlagen höherer Programmiersprachen" Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung
Proseminar "Grundlagen höherer Programmiersprachen" Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung Verfasser: Bettina Hikele 3. Semester Informatik EMail: bettyx@arcor.de Einführung in
MehrGrammatiken in Prolog
12. Grammatiken in Prolog 12-1 Grammatiken in Prolog Allgemeines: Gedacht zur Verarbeitung natürlicher Sprache. Dort braucht man kompliziertere Grammatiken als etwa im Compilerbau, andererseits sind die
MehrDetails zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.
SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von
MehrFormale Methoden III - Tutorium
Formale Methoden III - Tutorium Daniel Jettka 19.06.06 Inhaltsverzeichnis 1. Logische Eigenschaften von Merkmalsstrukturen 1. Logische Eigenschaften von MS Ausgangspunkt: Unterscheidung von: Linguistische
MehrProlog 1. Kapitel: Fakten, Regeln und Anfragen
Allgemeines Prolog 1. Kapitel: Fakten, Regeln und Anfragen Dozentin: Wiebke Petersen Kursgrundlage: Learn Prolog Now (Blackburn, Bos, Striegnitz) Prolog (aus dem franz. Programming en Logique) ist eine
MehrGrundprinzipien der funktionalen Programmierung
Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur
MehrAufgaben Logische Programmierung
Aufgaben Logische Programmierung Elmar Eder 21. Mai 2015 Die Aufgaben sind auf dem Abgabesystem von Dominik Kaaser bis zu dem dort angegebenen Termin abzugeben. Alle Aufgaben, bei denen nichts gegenteiliges
MehrMultimedia Technologie II
Vorlesung / Übungen Multimedia Technologie II Prof. Dr. Michael Frank / Prof. Dr. Klaus Hering Sommersemester 2004 HTWK Leipzig, FB IMN Für die externe Vorhaltung der DTD werden sämtliche zwischen den
MehrErste Schritte in SWI-Prolog
Die nachfolgenden Abschnitte sollen ein erster Einstieg in den Umgang mit Prolog sein, der sich explizit auf die in unserer Veranstaltung 'Prolog für Linguisten' verwendete Programmversion (SWI-Prolog
MehrWas bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):
Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel
MehrConstraint Logical Programming
Constraint Logical Programming Betreuer: Thomas Ströder Proseminar: Fortgeschrittene Programmierkonzepte in Java, Haskell und Prolog Rene Niewianda, Martin Breuer 15. Juni 2015 1 Einleitung: Das Ziel dieses
MehrProlog. Vertiefungsmodul Programmiersprachen. VM Programmiersprachen - Prolog. Florian Kleene
Prolog Vertiefungsmodul Programmiersprachen VM Programmiersprachen - Prolog Florian Kleene Entstehung und Geschichte Aufbau von Prolog Programmen Fakten Regeln Anfragen Funktionsweise des Interpreters
MehrProgrammiersprachen 2 (SS 2013)
n Advanced 2 1. Juli 2013 Beispielprogramm pq(x,y) :- p(x,z), q(z,y). p(a,b). p(b,c). p(c,a). 2 q(a,a). q(b,d). Logisch gesehen Die Reihenfolge verändert nicht die logische Aussage p(x,z), q(z,y) äquivalent
MehrHello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.
Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike
MehrProgrammierung in Python
Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P
MehrWissensbasierte Systeme II
Wissensbasierte Systeme II Peter Becker FH Bonn-Rhein-Sieg Fachbereich Informatik peter.becker@fh-bonn-rhein-sieg.de Vorlesung Wintersemester 2003/04 Sicherer Umgang mit Datenstrukturen und Algorithmen
MehrKurzeinführung in C. Johannes J. Schneider 27.10.2004
Kurzeinführung in C Johannes J. Schneider 27.10.2004 1 Einleitung C ist eine in vielen Bereichen sehr häufig verwendete Programmiersprache, die von der Betriebssystemprogrammierung bis hin zur Programmierung
MehrProgrammierung und Modellierung
Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:
MehrBeschreibungslogiken. Daniel Schradick 1schradi@informatik.uni-hamburg.de
Beschreibungslogiken Daniel Schradick 1schradi@informatik.uni-hamburg.de Was sind Beschreibungslogiken? Definition: Formalisms that represent knowledge of some problem domain (the world ) by first defining
MehrDie Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.
Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,
MehrIT-Zertifikat: Allgemeine Informationstechnologien II PHP
IT-Zertifikat: Allgemeine Informationstechnologien II PHP PHP ( PHP: Hypertext Preprocessor ) ist eine serverseitige Skriptsprache: Der PHP-Code wird nicht wie bei JavaScript auf dem Clientrechner ausgeführt,
MehrEine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
MehrJOHANNES BONNEKOH. Analysis. Allgemeine Hochschulreife und Fachabitur
JOHANNES BONNEKOH Analysis Allgemeine Hochschulreife und Fachabitur Vorwort Vorwort Mathematik ist eine Sprache, die uns hilft die Natur und allgemeine naturwissenschaftliche Vorgänge zu beschreiben. Johannes
MehrAlgorithmen und Datenstrukturen SS09
Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell
MehrErster Kontakt mit Java und Pseudocode
Erster Kontakt mit Java und Pseudocode CoMa-Übung II TU Berlin 23.10.2013 CoMa-Übung II (TU Berlin) Erster Kontakt mit Java und Pseudocode 23.10.2013 1 / 27 Themen der Übung 1 Java auf meinem Rechner 2
MehrStatistische Thermodynamik I Lösungen zur Serie 1
Statistische Thermodynamik I Lösungen zur Serie Zufallsvariablen, Wahrscheinlichkeitsverteilungen 4. März 2. Zwei Lektoren lesen ein Buch. Lektor A findet 2 Druckfehler, Lektor B nur 5. Von den gefundenen
MehrErbrecht: Grundzüge und Neuerungen Di., 16. April 2013. Dr. jur. Marie-Theres Frick 1
1 Erbrecht: Grundzüge und Neuerungen Dr. iur. Marie-Theres Frick Frick & Partner Rechtsanwälte AG, Vaduz 2 Themen Gesetzliche Erbfolge Pflichtteilsrecht Was erbt der/die überlebende PartnerIn? Was ist
MehrUlla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp
Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden mitp Inhaltsverzeichnis Einleitung 19 Grundlagen 21 Entwicklung und Eigenschaften von C++ 22 Objektorientierte Programmierung 24 Erstellen
Mehr3 Logikprogrammierung
3 Logikprogrammierung PROLOG ermöglicht deklarative Programmierung kompakte Programme agile Softwareentwicklung, rapid Prototyping Die Auswertungsstrategie der SLDNF Resolution benutzt Tiefensuche Backtracking
MehrFormale Methoden im Software Engineering
Formale Methoden im Software Engineering Eine praktische Einführung Dominik Haneberg, Florian Nafz, Bogdan Tofan 1 Organisatorisches Vorlesung: Mittwoch 12:15 Uhr - 13:45 Uhr (1058 N) Versuche: (Raum 3017
MehrBitte lesen Sie vor der Installation und dem Gebrauch die hier aufgeführten Installationshinweise aufmerksam durch.
Seite 1 von 5 Dokumentation für MSA-search_replace Bitte lesen Sie vor der Installation und dem Gebrauch die hier aufgeführten Installationshinweise aufmerksam durch. Systemvoraussetzungen: - WYSIWYG Web
MehrGrundlagen der Theoretischen Informatik - Sommersemester 2012. Übungsblatt 1: Lösungsvorschläge
Lehrstuhl für Softwaretechnik und Programmiersprachen Professor Dr. Michael Leuschel Grundlagen der Theoretischen Informatik - Sommersemester 2012 Übungsblatt 1: Lösungsvorschläge Disclaimer: Bei Folgendem
MehrLogische und funktionale Programmierung
Logische und funktionale Programmierung Vorlesung 1: Einführung in Prolog Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 1. Oktober 2015 1/54 ORGANISATORISCHES
MehrSprachen/Grammatiken eine Wiederholung
Sprachen/Grammatiken eine Wiederholung Was sind reguläre Sprachen? Eigenschaften regulärer Sprachen Sprachen Begriffe Symbol: unzerlegbare Grundzeichen Alphabet: endliche Menge von Symbolen Zeichenreihe:
MehrAufbau von Programmen/Dateien
Aufbau von Programmen/Dateien Typen von Dateien Header-Dateien (.h): enthalten Deklarationen (auch Signatur, Prototyp, Rumpf) von Funktionen, Variablen, Konstanten und in C++ auch Klassendefinitionen eines
MehrErfüllbarkeit und Allgemeingültigkeit
Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 3.3 Aussagenlogik Erfüllbarkeit 44 Erfüllbarkeit und Allgemeingültigkeit Def.: eine Formel ϕ heißt erfüllbar, wennesein I gibt, so dass I = ϕ
MehrTheoretische Informatik
Theoretische Informatik Einheit 1 Mathematische Methodik 1. Problemlösen 2. Beweistechniken 3. Wichtige Grundbegriffe Methodik des Problemlösens Klärung der Voraussetzungen Welche Begriffe sind zum Verständnis
MehrL6. Operatoren und Ausdrücke
L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.
Mehr