Prolog Kurze Einführung (I) KI-Programmierung und Wissensrepräsentation (KPWR) Grammatikregeln in Prolog. Prolog Kurze Einführung (II)

Größe: px
Ab Seite anzeigen:

Download "Prolog Kurze Einführung (I) KI-Programmierung und Wissensrepräsentation (KPWR) Grammatikregeln in Prolog. Prolog Kurze Einführung (II)"

Transkript

1 Prolog Kurze Einführung (I) Einfache Prolog-Programme KI-Programmierung und Wissensrepräsentation (KPWR) Grammatikregeln in Prolog Fakten treffen immer zu Hornklauseln insect(bee). leere rechte Seite linke Seite gilt ohne Voraussetzungen Regeln gelten unter bestimmten, aus Fakten ableitbaren Voraussetzungen Zusammenhang ergibt sich aus Fakten is_insect(a) :- legs(a,6), insect(a). Regelkopf gleiche Form wie Fakt Regelkörper verknüpft zugehörige Bedingungen KPWR Sommer 2004 Prolog & DCG Nr. 1 KPWR Sommer 2004 Prolog & DCG Nr. 2 Prolog Kurze Einführung (II) Welches Element hat tatsächlich eine Beziehung zu einem anderen Element? Welche Regeln gelten? Wissensbasis Kern sind Fakten Fakt = Beziehung zwischen einem oder mehreren Objekten Beziehung = Charakterisierung eines Objektes durch eine Eigenschaft Objekt = Konstante oder Variable Ziel eines Prolog-Programms abhängig von Art und Weise der Auswertung (der Fakten und Regeln) Vielzahl möglicher Programmziele Definite-Clausen-Grammatiken bekanntester Ansatz für das Parsen mit Prolog Definite-Clausen-Grammatiken (DCGs) Verallgemeinerung von kontext-freien Grammatiken ausführbar da Variante einer bestimmten Klasse von Prolog-Programmen Definite Clausen keine build-in Prädikate Körper ist eine Sequenz (Konjunktion) von Aussagen siehe Beispiel (vl_beispiel.pl) KPWR Sommer 2004 Prolog & DCG Nr. 3 KPWR Sommer 2004 Prolog & DCG Nr. 4 Kontext-freie Grammatiken (I) Grammatikregeln in Prolog (I) bestehen aus Menge von Regeln der Form <Nicht-Terminal> <Rumpf> Nicht-Terminal: nicht-terminales Symbol Rumpf: Folge von einem oder mehreren Elementen (durch Kommata getrennt) Element: Nicht-Terminal-Symbol oder Folge von Terminal-Symbolen d.h. Rumpf: mögliche Form einer Phrase des Typs Nicht-Terminal Nicht-Terminal-Symbole (geschrieben als): Prolog-Atome Folgen von Terminal-Symbolen als Liste von Atomen Sätze in einer Sprache mehr als willkürliche Wortfolgen Problem: Bildung eines vernünftigen Satzes nicht nur durch Aneinanderreihung beliebiger Menge von Wörtern Grammatik für eine Sprache: Menge von Regeln Regeln bestimmen: welche Wortfolgen als Sätze der Sprache akzeptabel sind Grammatik bestimmt: wie werden Wörter in Satzteilen (Phrasen) zusammengefasst welche Reihenfolge dieser Satzteile ist zulässig KPWR Sommer 2004 Prolog & DCG Nr. 5 KPWR Sommer 2004 Prolog & DCG Nr. 6

2 Grammatikregeln in Prolog (II) Beispiel: kontext-freie Grammatik Grammatik der Sprache liegt vor, somit: feststellbar, ob gegebene Wortfolge den Kriterien entspricht, die an akzeptablen Satz gestellt werden akzeptabel somit Prüfung: Welche natürlichen Wortgruppen gibt es? Wie sind Wortgruppen zusammengesetzt? zugrunde liegende Struktur der Sätze festlegen kontext-freie Grammatik = einfache Art einer Grammatik Beispiel für englische Sätze satz --> nominalphrase, verbalphrase. nominalphrase --> artikel, nomen. verbalphrase --> verb, nominalphrase. verbalphrase --> verb. artikel --> [the]. nomen --> [apple]. nomen --> [man]. verb --> [eats]. verb --> [sings]. Grammatik besteht aus Menge von Regeln Regel gibt Form an, die Satzteil annehmen kann KPWR Sommer 2004 Prolog & DCG Nr. 7 KPWR Sommer 2004 Prolog & DCG Nr. 8 Beispiel: kontext-freie Grammatik lt. 1. Regel: satz --> nominalphrase, verbalphrase. Satz besteht aus Satzteil (nominalphrase) gefolgt von Satzteil (verbalphrase) Satzteile: Subjekt und Prädikat eines Satzes Beispiel: kontext-freie Grammatik lt. Regeln: nominalphrase: kann Form annehmen artikel gefolgt von nomen nominalphrase ist Gruppe von Wörtern, die ein Ding (mehrere) benennen Satzteil enthält Wort (nomen) das die Hauptklasse angibt, zu der das Ding gehört artikel: lt. vorgestellter Grammatik steht vor dem nomen ein Ausdruck nominalphrase the man satz verbalphrase eats the apple Nominalphrase artikel the nomen man Regel in kontext-freier Grammatik bedeutet: x --> y x kann die Form y annehmen x,y x gefolgt von y Problem: Was ist nominalphrase? Was ist verbalphrase? KPWR Sommer 2004 Prolog & DCG Nr. 9 verbalphrase: innere Struktur durch Regeln beschrieben lt. vorgestellter Grammatik 2 Regeln (2 mögliche Formen) verb, nominalphrase verb the man eats the apple oder the man sings KPWR Sommer 2004 Prolog & DCG Nr. 10 Beispiel: kontext-freie Grammatik Weitere Regeln: aus welchen tatsächlichen Wörtern kann Phrase bestehen ausgedrückt durch [] artikel --> [the]. d.h. artikel kann die Form (das Wort) the annehmen Eigenschaften der Beispielgrammatik Satz besteht aus 5 verschiedenen Wörtern Grammatik erweiterbar Prüfung: (vl_beispiel_2.pl) Beispiel: kontext-freie Grammatik satz([the,man,eats,the,apple],[]). Entspricht gegebene Wortfolge den Kriterien eines Satzes? 1. Regel anwenden Wortfolge in zwei Phrasen zerlegen, so dass: erste Phrase eine gültige nominalphrase zweite Phrase eine gültige verbalphrase 2. Regel prüft, Ist erster Satzteil eine nominalphrase? Zerlegbar in artikel und nomen? für alle Phrasen und Teilphrasen des Satzes anwenden KPWR Sommer 2004 Prolog & DCG Nr. 11 KPWR Sommer 2004 Prolog & DCG Nr. 12

3 Beispiel: kontext-freie Grammatik Analysebaum stellt Phrasenstruktur eines Satzes dar satz nominalphrase verbalphrase artikel nomen verb nominalphrase artikel nomen the man eats the apple Analyseproblem (parsing problem): zu einer gegebenen Grammatik aus einem Satz eine Baumdarstellung konstruieren Grundstruktur Folge von Wörtern, deren Struktur bestimmt werden soll Ziel: Isolation von Teilfolgen dieser Struktur als Phrasen, die von Grammatik akzeptiert werden Zeigen, dass ganze Folge vom Typ satz akzeptiert wird Folge: dargestellt als Liste Wörter: dargestellt als Atome (für Vergleiche) Problem: Gilt gegebene Folge von Wörtern als Satz im Sinne der beschriebenen Grammatik? Lösung: zugrunde liegende Struktur der übermittelten Sätze herausfinden KPWR Sommer 2004 Prolog & DCG Nr. 13 KPWR Sommer 2004 Prolog & DCG Nr. 14 Definition: Prädikat satz mit einem Argument prüft, ob übergebene Folge ein Satz ist satz(x) x ist Folge von Wörtern, die grammatisch korrekten Satz bilden Anfrage: satz([the,man,eats,the,apple]). Antwort: Yes (positiv) oder No (negativ) Prüfen: Ist Folge von Wörtern ein Satz? am Anfang der Folge soll nominalphrase gefunden werden Rest der Folge verbalphrase Folge X ist Satz, wenn Zerlegung von x in zwei Teilfolgen Y und Z wobei Y= nominalphrase und Z=verbalphrase Folgen als Listen dargestellt (append kann genutzt werden) satz(x) :- append(y,z,x), nominalphrase(y), verbalphrase(z). nominalphrase(x) :- append(y,z,x), artikel(y), nomen(z). verbalphrase(x) :- append(y,z,x), verb(y), nominalphrase(z). verbalphrase(x) :- verb(x). 2 Regeln für verbalphrase 2 Klauseln für das Prädikat Einführung der Wörter artikel([the]). nomen([man]). verb([sings]). nomen([apple]). verb([eats]). KPWR Sommer 2004 Prolog & DCG Nr. 15 KPWR Sommer 2004 Prolog & DCG Nr. 16 satz-klausel und Anfrage: satz(x) :- append(y,z,x), nominalphrase(y), verbalphrase(z). satz([the,man,eats,the,apple]). X gebunden an ([the,man,eats,the,apple]) Y und Z ungebunden Ziel: erzeugt Wertepaar für Y und Z, wobei sich Ergebnis X ergibt, wenn Z an Y angefügt wird Backtracking: gibt ALLE möglichen Wertepaare nacheinander aus Wertepaare: Y= [], Z = [the,man,eats,the,apple] Y= [the], Z = [man,eats,the,apple] Y= [the, man], Z = [eats,the,apple]... Y= [the, man, eats,the,apple], Z = [] nominalphrase erreicht Wert für Y tatsächlich akzeptable nominalphrase sonst append schlägt eine neue Möglichkeit vor KPWR Sommer 2004 Prolog & DCG Nr. 17 KPWR Sommer 2004 Prolog & DCG Nr. 18

4 Ablauf: vl_beispiel_3.pl 1. Ziel: satz([the,man,eats,the,apple]). 2. Zerlege Liste in zwei Listen Y und Z (siehe mögliche Zerlegungen) 3. Entscheidung für eine der Möglichkeiten für Y und Z Prüfung: Ist Y eine nominalphrase? Versuch nominalphrase(y) zu erfüllen 4. Ist Y = nominalphrase? Ziel erreicht und dann Suche nach verbalphrase Ziel nicht erreicht zurück zu Schritt 3 und nächste Möglichkeit wählen Nachteil: append(y,z,x) erzeugt große Anzahl an Lösungsmöglichkeiten unnötige Suche Ziel: direkterer Weg z.b. nominalphrase besteht aus 2 Wörtern Problem: Was passiert, wenn die Grammatik geändert wird? Vorschlag: nominalphrasen-klauseln geben Eigenschaften von Nominalphrasen an in Klauseln für nominalphrasen wird entschieden, welcher Teil einer Wortfolge betrachtet wird KPWR Sommer 2004 Prolog & DCG Nr. 19 KPWR Sommer 2004 Prolog & DCG Nr. 20 neue Definition des Prädikates nominalphrase nominalphrase(x,y) wahr, wenn am Anfang der Folge X eine nominalphrase steht und der sich daran anschließende Teil Y ist nominalphrase(x,y) :- artikel(x,z), nomen(z,y). Prüfen, ob Wortfolge, die nominalphrase abdeckt, in eine Folge zerlegbar, die von artikel abgedeckt wird Anfang Folge X steht nominalphrase, wenn artikel am Anfang von Folge X dann Rest Z, an dessen Anfang ein nomen steht Rest nach gesamten nominalphrase = Rest nach nomen Forderung: auch artikel und nomen haben ähnliche Konventionen KPWR Sommer 2004 Prolog & DCG Nr. 21 Auffinden einer Folge, die nominalphrase darstellt, zerlegbar in Auffinden einer Folge, die einen artikel darstellt anschließendes Auffinden einer weiteren Folge, die nomen darstellt Aber: wie viele Wörter, Artikel, Nominalphrase oder Satz enthält, muss weiterhin abgeleitet werden, dazu zusätzliches Argument artikel([the X),X). am Anfang der Folge, die mit the beginnt, kann ein artikel gefunden werden artikel umfasst nur erstes Wort der Folge und lässt Rest übrig zu jedem Prädikat, das Satzteil identifiziert, kann Argument hinzugefügt werden, Argument gibt an, in welchem Maße von diesem Satzteil Wörter der Folge verbraucht werden und welche übrig bleiben. KPWR Sommer 2004 Prolog & DCG Nr. 22 satz([the,man,eats,the,apple],[]). Anfangsziel: Welche Argumente enthält der satz in der Anfrage? Argumente geben an Sequenz - bei der begonnen wird Sequenz, die übrig bleiben soll erstes Argument ist Argument, das satz vorher zugewiesen wurde wurde Satz gefunden, kein weiterer Rest Umschreiben der Grammatik effizient, aber unsauber: satz(s0,s) :- nominalphrase(s0,s1), verbalphrase(s1,s). nominalphrase(s0,s) :- artikel(s0,s1), nomen(s1,s). verbalphrase(s0,s) :- verb(s0,s). verbalphrase(s0,s) :- verb(s0,s1), nominalphrase(s1,s). artikel([the S],S). nomen([man S],S).... Beispiel: vl_beispiel_4.pl KPWR Sommer 2004 Prolog & DCG Nr. 23 Notation für Grammatikregeln eigenständige Grammatik-Notation jedoch nur Kurzschrift für eigentlichen Prolog-Code Prolog-System kennt bereits Grammatikregeln erkennt Grammatikregeln bei Eingabe Übersetzung in normales Prolog Notation stützt sich auf Notation für kontext-freie Grammatiken satz --> nominalphrase, verbalphrase. Grammatikregeln: sind Prolog-Strukturen mit Funktor --> (als Infix-Operator deklariert) Prolog prüft eingelesenen Term auf diesen Funktor wenn ja übersetzt Term in eine korrekte Klausel KPWR Sommer 2004 Prolog & DCG Nr. 24

5 Übersetzung Notation für Grammatikregeln übersetzt Atom (bezeichnet Satzteil) in Prädikat mit 2 Argumenten Wortfolge (stellt Satzteil dar) und Rest wenn Grammatikregel aussagt, dass Satzteile nacheinander vorkommen, müssen Argumente zeigen, dass Rest (der von Satzteil übrig gelassen wurde) Eingabe für den nächsten Satzteil ist wenn Grammatikregel aussagt, dass Phrase als Folge von Teilphrasen muss anhand der Argumente deutlich werden, dass Anzahl der Wörter (von gesamter Phrase) gleich der Summe, der von den Teilphrasen eingenommenen Wörter (rechts von -->) KPWR Sommer 2004 Prolog & DCG Nr. 25 Notation für Grammatikregeln satz --> nominalphrase, verbalphrase. satz(s0,s) :- nominalphrase(s0,s1), verbalphrase(s1,s). Satz zwischen S0 und S, wenn nominalphrase zwischen S0 und S1 und verbalphrase zwischen S1 und S Übersetzung der Regeln, die die eigentlichen Wörter einführen einfügen der Wörter in Listen artikel --> [the]. artikel([the S],S). Wie werden Ziele angegeben? 1. Argument: Liste der Wörter, die betrachtet werden sollen 2. Argument: Was soll übrigbleiben nomal: [] satz([the,man,eats,the,apple],[]). nominalphrase([the,man,sings],x). KPWR Sommer 2004 Prolog & DCG Nr. 26 Notation für Grammatikregeln einige Prolog-Implementierungen haben Prädikat phrase fügt zusätzliche Argumente hinzu phrase(p,l) wahr, wenn Liste L vom Parser in Phrase des Typs P zerlegt werden kann ersetzt : satz([the,man,eats,the,apple],[]). durch : phrase(satz,[the,man,eats,the,apple]). bei Definition von phrase: Zerlegung der gesamten Liste mit [] als Rest dadurch: nominalphrase([the,man,sings],x). nicht durch Version mit phrase ersetzbar eigene Definition von phrase (Spracherweiterung) möglich phrase(p,l) :- Goal =.. [P,L,[]], call(goal). Aber: diese Definition nicht immer angemessen z.b. bei allgemeineren Grammatikregeln vl_beispiel_4.pl (phrase) KPWR Sommer 2004 Prolog & DCG Nr. 27 Problem bisherige Grammatikregeln eingeschränkt zusätzliche Erweiterung verschiedene Phrasen-Typen erhalten zusätzliche Argumente diese Erweiterung gehört zum Standard-Repertoire der Grammatikregeln in Prolog bei Auftreten bestimmter Satzteil-Typen in Grammatikregel Übersetzung in Prolog-Prädikat mit 2 zusätzlichen Argumenten Prolog-Prädikate können beliebig viele Argumente haben weitere Argumente möglich (zusätzlich zu Argumenten mit Eingabefolgen) KPWR Sommer 2004 Prolog & DCG Nr. 28 Beispiel für zusätzliche Argumente: Problem der Numerus-Kongruenz zwischen Subjekt und Verb eines Satzes Momentan: keine grammatisch korrekten Sätze (Wortfolgen) des Englischen *The boys eats the apple. *The boy eat the apple. * kennzeichnet grammatisch falsche Sätze Sätze grammatisch nicht korrekt, da Subjekt und Verb eines Satzes im gleichen Numerus stehen müssen Subjekt im Plural Pluralform des Verbs nutzen Anpassung der Grammatikregeln: Singular-Sätze - beginnen mit Singular-Nominalphrase, deren Nomen im Singular steht Plural-Sätze - analog Beispiel: satz --> singular_satz. satz --> plural_satz. nominalphrase --> singular_nominalphrase. nominalphrase --> plural_nominalphrase. singular_satz --> singular_nominalphrase, singular_verbphrase. singular_nominalphrase --> singular_artikel, singular_nomen. singular_verbalalphrase --> singular_verb, nominalphrase. singular_verbalalphrase --> singular_verb. singular_artikel --> [the]. singular_nomen --> [boy]. singular_verb --> [eats].... nicht elegant nicht direkt erkennbar: Singular- und Plural-Sätze weisen in Bezug auf Strukturen Gemeinsamkeiten auf KPWR Sommer 2004 Prolog & DCG Nr. 29 KPWR Sommer 2004 Prolog & DCG Nr. 30

6 besser: zusätzliches Argument für Phrasentypen satz(singular) oder satz(x) (satz im Numerus X) Regeln zur Numerus-Kongruenz stellen fest, ob jeweilige Werte der Argumente durchgehend verwendet werden Numerus der Subjekt-Nominalphrase = Numerus der Verbalphrase Umschreiben der Grammatik satz --> satz(x). satz(x) --> nominalphrase(x), verbalphrase(x). nominalphrase(x) --> artikel(x), nomen(x). verbalphrase(x) --> verb(x). verbalphrase(x) --> verb(x), nominalphrase(y). % numerus verb muss mit numerus verbalphrase % übereinstimmen, ABER beliebiger Numerus artikel nomen(singular) --> [boy]. nomen(plural) --> [boys]. artikel(_) --> [the]. verb(singular) --> [eats]. verb(plural) --> [eat]. vl_beispiel_6.pl KPWR Sommer 2004 Prolog & DCG Nr. 31 KPWR Sommer 2004 Prolog & DCG Nr. 32 Weitere Nutzung zusätzlicher Argumente: notieren von Konstituenten, die außerhalb der üblichen Position aufgetreten sind (ling. Bewegung) speichern von Konstituenten von semantischer Bedeutung (z.b. Wie konstituiert sich die Bedeutung eines Satzes aus den Bedeutungen der Teilsätze?) Hinweis: Nach kann nicht mehr garantiert werden, dass es noch eine kontext-freie Grammatik ist! zusätzliche Argumente zur Ausgabe eines Analysebaums aus grammatisch korrektem Satz The man eats the apple. wird Struktur erzeugt (satz (nominalphrase(artikel(the),nomen(man)), verbalphrase(verb(eats), nominalphrase(artikel(the), nomen(apple)))) KPWR Sommer 2004 Prolog & DCG Nr. 33 Erzeugung dieser Ausgabe durch zusätzliches Argument für jedes Prädikat gibt an, wie sich Baum für jeden ganzen Satz aus Bäumen der verschiedenen Teilphrasen zusammensetzt satz(x,satz(np,vp)) --> nominalphrase(x,np), verbalphrase(x,vp). 1. Folge, die Nominalphrase mit Analyse-Programm-Baum NP darstellt, 2. an die sich eine Folge anschließt, die eine Verbalphrase mit dem Analyse- Programm-Baum VP darstellt, 3. dann Wortfolge gefunden, die vollständigen Satz darstellt satz(np,vp) KPWR Sommer 2004 Prolog & DCG Nr. 34 satz(x,satz(np,vp),s0,s) :- nominalphrase(x,np,s0,s1), verbalphrase(x,vp,s1,s). S0,S1,S Teile der Eingabefolge Argumente zur Generierung von Bäumen können in gesamte Grammatik eingebaut werden Ausschnitt: Argument zur Generierung von Bäumen (satz(satz(np,vp)) --> nominalphrase(np),verbalphase(vp). verbalphrase(verbalphrase(vp)) --> verb(vp). nomen(nomen(man)) --> [man]. verb(verb(eats))--> [eats]. KPWR Sommer 2004 Prolog & DCG Nr. 35 Übersetzungsmechanismus bisher: für jeden Phrasentyp neues Prädikat mit zwei Argumenten, (geben an, wie Eingabefolge zu behandeln war) jetzt: Prädikate mit zwei weiteren Argumenten erzeugen (angegeben als letzte Argumente des Prädikats) aus Grammatikregel: satz(x) --> nominalphrase(x), verbalphrase(x). wird Ausdruck: (satz(x,s0,s) --> nominalphrase(x,s0,s1), verbalphrase(x,s1,s). bei Aufruf von Zielen, die Grammatikregeln von oberster Interpreter-Ebene oder von normalen Prolog-Regeln beinhalten, sind diese zusätzlichen Argumente ausdrücklich anzugeben Beispiele: satz(x,[a,clergyman,eats,a,cake],[]). satz(x,[every,bird,sings,and,pigs,can,fly],l). KPWR Sommer 2004 Prolog & DCG Nr. 36

7 Neue Prolog-Ziele in {} eingeschlossene Ziele werden bei der Umwandlung vom Übersetzer nicht verändert Verbessern des Wörterbuchs des Analyse-Programms Information, die das Programm über Wörter der Sprache enthält Einführung neuer Wörter in das Programm (mit beiden Paaren zusätzlicher Argumente) neues Nomen einführen: banana neue Regel: nomen(singular,nomen(banana)) --> [banana]. Prolog-Syntax: nomen(singular,nomen(banana),[banana S],S). Nachteil: viele Informationen für ein einziges Nomen deshalb Trennung in: allgemeine Informationen über Nomina Spezialinformationen über bestimmtes Wort Vermischung von Grammatikregeln und Prolog-Syntax: Grammatikregel: allgemeine Information, wie sich Nomina in größere Phrasen fügen Prolog-Klausel: welche Wörter sind Nomina? KPWR Sommer 2004 Prolog & DCG Nr. 37 KPWR Sommer 2004 Prolog & DCG Nr. 38 Beispiel: nomen(s,nomen(n)) --> [N],{ist_nomen(N,S)}. Prolog-Prädikat ist_nomen gibt an, welche Wörter sind Nomina Numerus der Wörter ist_nomen(banana,singular). ist_nomen(bananas,plural). Phrase vom Typ nomen kann Form eines beliebigen einzelnen Wortes N annehmen Einschränkung: N muss in ist_nomen-sammlung sein und Numerus S aufweisen Numerus der Phrase ist S und der erzeugte Analyse-Baum besteht einfach aus Wort N (befindet sich unterhalb des nomen-knotens) {ist_nomen(n,s)} = Relation, ohne Bezug zur Eingabefolge Ohne {} wird Ausdruck übersetzt z.b. ist_nomen(n,s,s1,s2) Problem: nicht deckungsgleich mit den ist_nomen-klauseln {} verhindert Übersetzung z.b nomen(s,nomen(n),[n Seq],Seq) :- ist_nomen(n,s). zwei ist_nomen-klauseln für jedes neu eingeführte Nomen angeben für Singular- und Pluralform jedoch Beziehung zwischen Singular und Plural durch einfache Regel: Wenn X Singularform eines Nomens ist, dann ist das Wort, das durch Hinzufügen eines s an das Ende von X gebildet wird, die Pluralform dieses Nomens KPWR Sommer 2004 Prolog & DCG Nr. 39 KPWR Sommer 2004 Prolog & DCG Nr. 40 Aufgabe: nomen-definition überarbeiten Ergebnis: Menge neuer Bedingungen, die N erfüllen muss, um als Nomen zu gelten {} Schreibweise: Bedingungen, die interne Struktur des Wortes betreffen Platz in der Eingabefolge ohne Bedeutung natürlichsprachliche Wörter als Prolog-Atome dargestellt Wie werden diese Wörter in Buchstaben zerlegt? Überlegungen über Zeichen, die das Atom bilden notwendig: Prädikat name vl_beispiel_name.pl setzt atom mit Liste von character in Beziehung verbesserte Regel über Pluralbildung (allgemein): nomen(plural,nomen(rootn))--> [N], {(name(n,plname), append(singname, s,plname), name(rootn,singname), ist_nomen(rootn,singular))}. Ausnahmen extensiv angegeben s Zeichen als Teil der Liste ist_nomen-klauseln für Singularformen von regelmäßigen Nomina angeben im Analyse-Baum wird jeweiliges Element in seiner Grundform eingefügt KPWR Sommer 2004 Prolog & DCG Nr. 41 KPWR Sommer 2004 Prolog & DCG Nr. 42

8 Syntaxbeschreibung Syntaxbeschreibung durch Regeln selbst informelle Definition grammar_rule --> grammar_head, [ --> ], grammar_body. grammar_head --> non_terminal. grammar_head --> non_terminal,[, ],terminal. grammar_body --> grammar_body, [, ],grammar_body. grammar_body --> grammar_body, [ ; ],grammar_body. grammar_body --> grammar_body_item. grammar_body_item --> [! ]. grammar_body_item --> [ { ],prolog_goals, [ } ]. grammar_body_item --> non_terminal. grammar_body_item --> terminal.... Syntaxbeschreibung non_terminal: Phrase, die Teil der Eingabefolge einnehmen kann Form einer Prolog-Struktur, Funktor bezeichnet Kategorie, zu der die Phrase gehört, Argumente liefern zusätzliche Informationen (z.b. Numerus) terminal: Anzahl an Wörtern, die Teil einer Eingabefolge einnehmen können Form einer Prolog-Liste [] oder beliebige Länge Elemente der Liste sind Prolog-Elemente, sollten mit den Wörtern deckungsgleich sein, wenn sie in der angegebenen Reihenfolge erscheinen KPWR Sommer 2004 Prolog & DCG Nr. 43 KPWR Sommer 2004 Prolog & DCG Nr. 44 Syntaxbeschreibung prolog-goals: beliebige Prolog-Ziele zur Darstellung zusätzlicher Tests und Operationen bewirken, dass zusätzliche Analysewege genutzt werden geben an, wie komplexe Ergebnisse aus einfachen zusammengesetzt sind Übersetzung: prolog-goals bleiben unverändert in non-terminals werden 2 zusätzliche Argumente eingefügt hinter die explizit angegebenen Argumente entsprechen den Wortfolgen, die vom Satz eingenommen oder übrig gelassen werden terminals erscheinen innerhalb der zusätzlichen Argumente der non-terminals Syntaxbeschreibung zweite Grammatik-Regel für grammar-head enthält weitere Art Grammatikregel grammar_head --> non_terminal,[, ],terminal. bisher: terminals und non_terminals dadurch definiert, dass Eingabefolge in bestimmten Maß aufgebraucht wird jedoch nützlich: Dinge definieren, die Elemente in die Eingabefolge einfügen Beispiel Imperativsatz: Eat your supper. So analysieren als ob you hinzugefügt wäre You eat your supper. somit - Satz wohlgeformt mit Nominalphrase und Verbalphrase (stimmt mit unserer bisherigen Vorstellung von Satzstruktur überein) KPWR Sommer 2004 Prolog & DCG Nr. 45 KPWR Sommer 2004 Prolog & DCG Nr. 46 Syntaxbeschreibung erreichbar durch Grammatik: satz --> imperativ, nominalphrase, verbalphrase. imperativ,[you] --> []. imperativ --> []. Zweite Regel übersetzt in: imperativ(l,[you L]. d.h. Folge wird ausgegeben, die länger ist, als die ursprünglich vorgegebene Folge Im Allgemeinen Linke Seite der Grammatikregel besteht aus non_teminal (Phrase), durch Komma von Liste von Wörtern getrennt nachdem Ziele auf rechter Seite die jeweilige Anzahl von Wörtern der Eingabefolge verbraucht haben einfügen dieser Wörter bei Analyse in die Eingabefolge Grammatikregeln z.b. genutzt, um die Bedeutung der Sätze unmittelbar zu erhalten ohne Zwischenschaltung eines Analyse-Baums folgende Regeln (s. folgende Folie) übersetzen eingeschränkte Anzahl von Sätzen in eine Darstellung ihrer Bedeutungen im Prädikatenkalkül every man loves a woman liefert Beispiel all(x,(man(x) -> exists(y,(woman(y) & loves(x,y))))) KPWR Sommer 2004 Prolog & DCG Nr. 47 KPWR Sommer 2004 Prolog & DCG Nr. 48

9 Beispiel op(500,xfy,&). op(600,xfy,->). satz(p) --> nominalphrase(x,p1,p),verbalphrase(x,p1). nominalphrase(x,p1,p)--> artikel(x,p2,p1,p),nomen(x,p3),rel_satz(x,p3,p2). nominalphrase(x,p,p)--> eigenname(x). verbalphrase(x,p)--> trans_verb(x,y,p1),nominalphrase(y,p1,p). verbalphrase(x,p)--> intrans_verb(x,p). rel_satz(x,p1,(p1 & P2))--> [that],verbalphrase(x,p2). rel_satz(_,p,p)--> []. artikel(x,p1,p2,all(x,(p1 -> P2)))--> [every]. artikel(x,p1,p2,exists(x,(p1 & P2)))--> [a]. nomen(x,man(x))--> [man]. nomen(x,woman(x))--> [woman]. eigenname(john) --> [john]. eigenname(mary) --> [mary]. trans_verb(x,y,loves(x,y))--> [loves]. intrans_verb(x,lives(x))--> [lives]. vl_beispiel_7.pl KPWR Sommer 2004 Prolog & DCG Nr. 49 Beispiel Ergänzung (Deklarieren von Operatoren) Operatoren können Syntax beim Lesen und Schreiben von Termen vereinfachen 3 Eigenschaften Position Prioritätsklasse Präfix-Operatoren Operator mit 2 Argumenten kann zwischen diesen stehen Operator mit 1 Argument kann dahinter oder davor stehen Prioritätsklasse durch ganze Zahl ausgedrückt Zahlenbereich von Implementierung abhängig macht Ausdrücke eindeutig, bei denen Syntax der Terme nicht explizit durch Klammern angegeben ist Assoziativität von Operatoren ermöglicht eindeutiges Verständnis von Ausdrücken, in denen Operatoren mit gleichen Prioritäten vorkommen KPWR Sommer 2004 Prolog & DCG Nr. 50 Beispiel Ergänzung (Deklarieren von Operatoren) Operator wird Atom zugeordnet spezifiziert Position und Assoziativität Spezifikatoren = Bilder der möglichen Verwendung der Operatoren Spezifikatoren (infix) xfx xfy yfx yfy f ist Operator x und y sind Argumente Spezifikatoren (präfix / postfix) fx fy / xf yf Aussagen über die Assoziativität durch x und y Voraussetzung: keine Klammerung y besagt, dass das Argument Operatoren derselben oder einer niedrigeren Prioritätsklasse enthalten kann x besagt, dass alle Operatoren im Argument unbedingt eine niedrigere Prioritätsklasse als dieser Operator haben müssen KPWR Sommer 2004 Prolog & DCG Nr. 51 Beispiel Ergänzung (Deklarieren von Operatoren) Operator + (yfx) a + b + c Interpretation als (a + b) + c oder a + (b + c) zweite Interpretation gilt nicht, weil Argument hinter dem ersten + einen Operator derselben Prioritätsklasse enthalten müsste (z.b. weiteres +) dies widerspricht dem Vorhandensein des x hinter dem Spezifikator f ein in der Form yfx deklarierter Operator ist linksassoziativ ein in der Form xfy deklarierter Operator ist rechtsassoziativ Wenn gewünschte Assoziativität eines Infix-Operators bekannt ist, der deklariert werden soll, so ist Spezifikator damit eindeutig bestimmt not not a syntaktisch zulässig, wenn not als fy deklariert unzulässig, wenn not als fx deklariert KPWR Sommer 2004 Prolog & DCG Nr. 52 Beispiel Ergänzung (Deklarieren von Operatoren) in Prolog wenn Operator mit gegebener Position, Priorität und Assoziativität beim Lesen und Schreiben von Termen erkannt werden soll Prädikat op op(prec,spec,name) name = gewünschter Operator (Atom, das zu einem Operator gemacht werden soll) prec = Prioritätsklasse (ganze Zahl innerhalb des gültigen Bereichs) spec = Spezifikator der Position/Assoziativität (eines der oben genannten Atome) Wenn Operator-Deklaration zulässig ist, kann Zielvorgabe erfüllt werden Beispiele Kernoperatoren op(1200,xfx, :-). op(1200,fx,?-). op(1100,xfy, ;). op(100,xfy,, ). op(700,xfx, <).... KPWR Sommer 2004 Prolog & DCG Nr. 53 Beispiel Argumente: zur Strukturbildung (stellen Bedeutungen von Sätzen dar) letztes Argument jeder Phrase stellt Bedeutung dar Bedeutung abhängig von Faktoren, die in anderen Argumenten angegeben sind. Beispiel lives (intransitiv ein Argument) intrans_verb(x,p). intrans_verb(x,lives(x))--> [lives]. Verb lives Aussage der Form lives(x), X steht für die Person, die lebt Bedeutung wird bestimmten Objekt zugeordnet Kontext, in dem Verb benutzt wird, bestimmt das Objekt Definition besagt nur, das für jedes X die Bedeutung lives(x) gilt, wenn das Verb auf X angewendet wird KPWR Sommer 2004 Prolog & DCG Nr. 54

10 Beispiel Beispiel every (transitiv zwei Argumente) trans_verb(x,y,p1) trans_verb(x,y,loves(x,y))--> [loves]. Bedeutung auf eine Variable und zwei Aussagen (enthalten diese Variable) übertragen ergibt Einsetzen eines Objektes für eine Variable in der ersten Aussage etwas Wahres dann ergibt das Einsetzen desselben Objektes für die Variable in der zweiten Aussage ebenfalls etwas Wahres. vl_beispiel_7.pl KPWR Sommer 2004 Prolog & DCG Nr. 55

Abstrakte Syntax von Prolog (1)

Abstrakte Syntax von Prolog (1) 3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die

Mehr

Terme. Heute: Terme vergleichen. Struktur von Termen. Operatoren. Logik in der Praxis Logikprogrammierung (Prolog) p.1

Terme. Heute: Terme vergleichen. Struktur von Termen. Operatoren. Logik in der Praxis Logikprogrammierung (Prolog) p.1 Terme Heute: Terme vergleichen Struktur von Termen Operatoren Logik in der Praxis Logikprogrammierung (Prolog) p.1 Termgleichheit: ==?- a == a.?- a == b. no?- X == Y. no?- X == X.?- X == a. no Logik in

Mehr

Terme. Programmierkurs Prolog p.1

Terme. Programmierkurs Prolog p.1 Terme Programmierkurs Prolog p.1 Heute: Terme vergleichen Struktur von Termen Operatoren Programmierkurs Prolog p.2 Termgleichheit:?- a a.?- a no?- X no b. Y.?- X X.?- X no a. Programmierkurs Prolog p.3

Mehr

Tutorium Prolog für Linguisten 12

Tutorium Prolog für Linguisten 12 Tutorium Prolog für Linguisten 12 Sebastian Golly 29. Januar 2013 Sebastian Golly Tutorium Prolog für Linguisten 12 1 / 13 Plan für heute Fürs Langzeitgedächtnis Zusammenfassung des letzten Seminars Übungsblatt

Mehr

13. Übungsblatt

13. Übungsblatt Prolog für Linguisten 13. Übungsblatt 12.2.2011 Dieses Übungsblatt ist verpflichtend und wird benotet (48 Punkte + 8 Zusatzpunkte ). Achte besonders auf die Funktionalität des Programms mit verschiedenen

Mehr

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 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,

Mehr

Einführung in PROLOG VI

Einführung in PROLOG VI Terme vergleichen Einführung in PROLOG VI PROLOG kennt ein wichtiges Prädikat zum Vergleichen von Termen, dass wir auch schon kennengelernt haben: == Zur Erinnerung sei ch einmal gesagt, dass es nicht

Mehr

Verfügbare arithmetische Operationen ( reelle Zahlen): +, -,, /, //, mod und ggf. weitere

Verfügbare arithmetische Operationen ( reelle Zahlen): +, -,, /, //, mod und ggf. weitere Prolog-Arithmetik Verfügbare arithmetische Operationen ( reelle Zahlen): +, -,, /, //, mod und ggf. weitere Verfügbare arithmetische Vergleichsoperationen: >, =, =

Mehr

Lösungen zum Aufgabenblatt 4 Computerlinguistische Anwendungen

Lösungen zum Aufgabenblatt 4 Computerlinguistische Anwendungen Lösungen zum Aufgabenblatt 4 Computerlinguistische Anwendungen Universität München, CIS, SS 2013 Hans Leiß Abgabetermin: Do, 31.5.2013 Aufgabe 4.1 Die Grammatik in Beispiele/programmierer.pl berücksichtigt

Mehr

LR-Parser, Shift-Reduce-Verfahren

LR-Parser, Shift-Reduce-Verfahren LR-Parser, Shift-Reduce-Verfahren Bottom-Up-Syntaxanalyse LR-Parser L: Eingabe von links nach rechts; R: Rechtsherleitung Shift-Reduce-Verfahren Beachte: Kein Backtracking nicht auf jede Grammatik anwendbar

Mehr

Algorithmen und Formale Sprachen

Algorithmen und Formale Sprachen Algorithmen und Formale Sprachen Algorithmen und formale Sprachen Formale Sprachen und Algorithmen Formale Sprachen und formale Algorithmen (formale (Sprachen und Algorithmen)) ((formale Sprachen) und

Mehr

Logik I. Symbole, Terme, Formeln

Logik I. Symbole, Terme, Formeln Logik I Symbole, Terme, Formeln Wie jede geschriebene Sprache basiert die Prädikatenlogik erster Stufe auf einem Alphabet, welches aus den folgenden Symbolen besteht: (a) Variabeln wie zum Beispiel v 0,v

Mehr

Grammatiken in Prolog

Grammatiken 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

Mehr

Einführung in unifikationsbasierte Grammatikformalismen

Einführung in unifikationsbasierte Grammatikformalismen Universität Potsdam Institut für Linguistik Computerlinguistik Einführung in unifikationsbasierte Grammatikformalismen Thomas Hanneforth head: VP form: finite subj: pers: 3 num: pl Merkmalsstrukturen:

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Alphabet, formale Sprache

Alphabet, formale Sprache n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l

Mehr

Teil 4: Rekursion und Listen

Teil 4: Rekursion und Listen Einführung in das Programmieren Prolog Sommersemester 2006 Teil 4: Rekursion und Listen Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln,

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/

Mehr

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht

Mehr

Übungen zu Kognitive Systeme I

Übungen zu Kognitive Systeme I Übungen zu Kognitive Systeme I Kognitive Systeme / WIAI / Uni Bamberg 14. Oktober 2005 Inhalt 1 2 3 4 5 6 Ablauf der Übungen Ablauf SWI-Prolog Ab nächster Woche wird es Übungszettel geben Ablauf der Übungen

Mehr

Einführung in PROLOG 7 Kontextfreie Grammatiken

Einführung in PROLOG 7 Kontextfreie Grammatiken Einführung in PROLOG 7 Kontextfreie Grammatiken Der Erschaffer von PROLOG, Alain Colmerauer, war ein Computer-Linguist. Daher ist die Computer-Linguistik immer noch das klassische Anwendungsfeld von PROLOG.

Mehr

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

SS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4. R. C. Ladiges, D. Fast 10. Juni 2010 SS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4 R. C. Ladiges, D. Fast 10. Juni 2010 Inhaltsverzeichnis 4 Aufgabe 4 3 4.1 Sich mit dem Programmpaket vertraut machen.................... 3 4.1.1 Aufgabenstellung.................................

Mehr

Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren?

Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren? Attribut-Werte-Paare Eine Eigenschaft kann beschrieben werden durch ein Paar [a,w]. Dabei bezeichnet a das Attribut und w den konkreten Wert aus dem Wertebereich W a des Attributs. Die Eigenschaften eines

Mehr

Überblick. Ausdrücke. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke

Überblick. Ausdrücke. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke 3 Mathematische Grundlagen 3 Ausdrücke Einf. Progr. (WS 08/09) 148 Ausdrücke Betrachten wir folgende

Mehr

Typengetriebene Interpretation. Arnim von Stechow Einführung in die Semantik

Typengetriebene Interpretation. Arnim von Stechow Einführung in die Semantik Typengetriebene Interpretation Arnim von Stechow Einführung in die Semantik arnim.stechow@uni-tuebingen.de Programm Logische Typen Typengesteuerte Interpretation λ-schreibweise Prädikatsmodifikation (PM)

Mehr

2 Logikprogrammierung am Beispiel Prolog

2 Logikprogrammierung am Beispiel Prolog 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

Mehr

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

Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen Gliederung Programmierparadigmen Programmieren in Prolog D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 26. April

Mehr

Übungen zu Kognitive Systeme I

Übungen zu Kognitive Systeme I Übungen zu Kognitive Systeme I Stephan Weller (Stephan.Weller@wiai.uni-bamberg.de) Kognitive Systeme / WIAI / Uni Bamberg 19. Oktober 2005 Inhalt Intro Was ist Prolog? Wie funktioniert Prolog? Rekursion

Mehr

Einführung in die Computerlinguistik

Einführung in die Computerlinguistik Einführung in die Computerlinguistik Merkmalstrukturen und Unifikation Dozentin: Wiebke Petersen WS 2004/2005 Wiebke Petersen Formale Komplexität natürlicher Sprachen WS 03/04 Universität Potsdam Institut

Mehr

Semantik und Pragmatik

Semantik und Pragmatik Semantik und Pragmatik SS 2005 Universität Bielefeld Teil 4, 6. Mai 2005 Gerhard Jäger Semantik und Pragmatik p.1/35 Prädikatenlogik: atomare Formeln Syntax JO, BERTIE, ETHEL, THE-CAKE... sind Individuenkonstanten

Mehr

Einführung in die Logik

Einführung in die Logik Einführung in die Logik Klaus Madlener und Roland Meyer 24. April 2013 Inhaltsverzeichnis 1 Aussagenlogik 1 1.1 Syntax................................. 1 1.2 Semantik............................... 3 1.3

Mehr

Das Programm ist deterministisch: es gibt für jedes Ziel höchstens eine Klausel, die zur erfolgreichen Ableitung des Zieles

Das Programm ist deterministisch: es gibt für jedes Ziel höchstens eine Klausel, die zur erfolgreichen Ableitung des Zieles Green Cuts Klauseln zum Mischen zweier geordneten Listen: merge ( [X Xs ], [Y Ys ], [X Zs ] ) : X < Y, merge ( Xs, [ Y Ys ], Zs ). (1) merge ( [X Xs ], [Y Ys ], [ X,Y Zs ] ) : X =:= Y, merge (Xs, Ys, Zs

Mehr

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 3.3 Boolsche Algebra Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 72 / 179 Beweisprinzip der vollständigen Induktion

Mehr

Künstliche Intelligenz

Künstliche Intelligenz Künstliche Intelligenz Prolog - Definite Clause Grammar Claes Neuefeind Sprachliche Informationsverarbeitung Universität zu Köln 25. Januar 2012 Wiederholung: DCGs Parser, Kongruenz, Semantik Praxis Hausaufgaben

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben

Mehr

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik

Mehr

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002 1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben

Mehr

Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1

Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1 Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1 Einführende Gentle-Programme Dieses Papier soll die Syntax und Semantik (die Schreibweise und Bedeutung) von einfachen Gentle Programmen anhand

Mehr

Syntax und Morphologie

Syntax und Morphologie Syntax und Morphologie Einführungskurs 8. Vorlesung Strukturanalyse Aufgabe der syntaktisch-funktionalen Analyse ist es, alle Informationen bereitzustellen, die es der semantischen Analyse ermöglichen,

Mehr

Einführung in die Programmierung II. 5. Zeiger

Einführung in die Programmierung II. 5. Zeiger Einführung in die Programmierung II 5. Zeiger Thomas Huckle, Stefan Zimmer 16. 5. 2007-1- Bezüge als Objekte Bisher kennen wir als Bezüge (Lvalues) nur Variablennamen Jetzt kommt eine neue Sorte dazu,

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR. Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

Lösungsvorschlag für das Übungsblatt 8. Aufgabe1.

Lösungsvorschlag für das Übungsblatt 8. Aufgabe1. Lösungsvorschlag für das Übungsblatt 8. Aufgabe1. 3 Det A N VP R6 4 Any A N VP L3 5 Any intelligent N VP L4 6 Any intelligent cat VP L2 Nach den Regeln kann der Satz weiter nicht erzeugt warden, deswegen

Mehr

Karl Heinz Wagner

Karl Heinz Wagner PATR II Funktionale Beschreibungen Der PATR II Formalismus Auch für PATR II gilt Sprachliche Ausdrücke werden durch funktionale Beschreibungen oder Deskriptionen (engl. functional descriptions,, FD beschrieben

Mehr

Semantik und Pragmatik

Semantik und Pragmatik Semantik und Pragmatik SS 2005 Universität Bielefeld Teil 6, 20. Mai 2005 Gerhard Jäger Semantik und Pragmatik p.1/16 Typentheorie: Motivation Viele syntaktische Konstruktionen der natürlichen Sprachen

Mehr

Logische und funktionale Programmierung

Logische und funktionale Programmierung Logische und funktionale Programmierung Vorlesung 10: Prolog - Das Prädikat CUT Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 12. Dezember 2016 1/38 UNTERBINDEN

Mehr

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Kapitel 5: Syntaxdiagramme und Grammatikregeln 5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische

Mehr

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

Resolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren: Resolutionskalkül Ein Kalkül ist eine Kollektion von syntaktischen Umformungsregeln, die unter gegebenen Voraussetzungen aus bereits vorhandenen Formeln neue Formeln erzeugen. Der Resolutionskalkül besteht

Mehr

Logische Programmierung & Deduktive Datenbanken Klausur

Logische Programmierung & Deduktive Datenbanken Klausur Prof. Dr. Stefan Brass 22. September 2011 Institut für Informatik MLU Halle-Wittenberg Logische Programmierung & Deduktive Datenbanken Klausur Name: Matrikelnummer: Studiengang: Aufgabe Punkte Max. Punkte

Mehr

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Sprachen sind durch folgenden Aufbau gekennzeichnet: BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder

Mehr

Teil 111. Chart-Parsing

Teil 111. Chart-Parsing Teil 111 Chart-Parsing 102 Die im ersten Teil des Buches behandelten einfachen Parsingalgorithmen sind, anders als die meisten vor allem im Compilerbau verwendeten Algorithmen (z.b. die LLoder LR-Parsingalgorithmen),

Mehr

Charts. Motivation. Grundfrage. Chart als Graph

Charts. Motivation. Grundfrage. Chart als Graph Charts Motivation Übersicht Chart bzw. Well-Formed Substring Table (WFST) Als azyklischer Graph, Tabelle und Relation Kantenbeschriftungen Kategorien: WFST Regeln: Passive Charts Regelhyposen: Aktive Charts

Mehr

Übersicht. Prädikatenlogik höherer Stufe. Syntax der Prädikatenlogik 1. Stufe (mit Gleichheit)

Übersicht. Prädikatenlogik höherer Stufe. Syntax der Prädikatenlogik 1. Stufe (mit Gleichheit) Übersicht I Künstliche Intelligenz II Problemlösen III Wissen und Schlussfolgern 7. Logische Agenten 8. Prädikatenlogik 1. Stufe 9. Schließen in der Prädikatenlogik 1. Stufe 10. Wissensrepräsentation IV

Mehr

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht Zusammenhang: Formale Sprache Grammatik Formale Sprache kann durch Grammatik beschrieben werden. Zur Sprache L = L(G) gehören nur diejenigen Kombinationen der Zeichen des Eingabealphabets, die durch die

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 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 Programmiersprache Festlegung, wie Programme

Mehr

Logisches und funktionales Programmieren

Logisches und funktionales Programmieren Prof. Dr. Christoph Beierle, Dr. Harald Ganzinger, Prof. Dr. Michael Hanus Kurs 01816 Logisches und funktionales Programmieren LESEPROBE Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten

Mehr

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden

Mehr

Lösungen zum Aufgabenblatt 4 Syntax natürlicher Sprachen

Lösungen zum Aufgabenblatt 4 Syntax natürlicher Sprachen Lösungen zum Aufgabenblatt 4 Syntax natürlicher Sprachen Universität München, CIS, WS 2015/16 H. Leiß Abgabetermin: Mi, 18.11.2015 Aufgabe 4.1 Zum Programmieren von Grammatiken verwenden wir das DCG-Grammatikformat

Mehr

2.2 Syntax, Semantik und Simulation

2.2 Syntax, Semantik und Simulation 2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?

Mehr

Satz Umstrukturierung für statistisch. Anna Schiffarth Dozentin: Miriam Kaeshammer Fortgeschrittene Methoden der statistisch maschinellen Übersetzung

Satz Umstrukturierung für statistisch. Anna Schiffarth Dozentin: Miriam Kaeshammer Fortgeschrittene Methoden der statistisch maschinellen Übersetzung Satz Umstrukturierung für statistisch maschinelle Übersetzung Anna Schiffarth Dozentin: Miriam Kaeshammer Fortgeschrittene Methoden der statistisch maschinellen Übersetzung Einführung Beschreibung einer

Mehr

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Boolsche Algebra 3.3 Induktion und Rekursion

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Boolsche Algebra 3.3 Induktion und Rekursion Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Boolsche Algebra 3.3 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 92 / 708 Beweisprinzip der vollständigen Induktion

Mehr

Teil 1: Ein motivierendes Beispiel

Teil 1: Ein motivierendes Beispiel Einführung in das Programmieren Prolog Sommersemester 2006 Teil 1: Ein motivierendes Beispiel Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax,

Mehr

Ein fundamentales mathematisches Beweisprinzip p ist die vollständige Induktion: Sei p : Falls

Ein fundamentales mathematisches Beweisprinzip p ist die vollständige Induktion: Sei p : Falls Beweisprinzip der vollständigen Induktion Ein fundamentales mathematisches Beweisprinzip p ist die vollständige Induktion: Sei p : Falls ein totales Prädikat. 1. p(0) (Induktionsanfang) und 2. für beliebiges

Mehr

5.2 Endliche Automaten

5.2 Endliche Automaten 114 5.2 Endliche Automaten Endliche Automaten sind Turingmaschinen, die nur endlichen Speicher besitzen. Wie wir bereits im Zusammenhang mit Turingmaschinen gesehen haben, kann endlicher Speicher durch

Mehr

Grundlagen von Datenbanken SS 2010

Grundlagen von Datenbanken SS 2010 Grundlagen von Datenbanken SS 2010 6. Tupelkalkül und relationale Vollständigkeit Prof. Dr. Stefan Böttcher Universität Paderborn mit Material von Prof. Dr. Gregor Engels Grundlagen von Datenbanken - SS

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

13 Abstrakte Datentypen

13 Abstrakte Datentypen 13 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen auf den Elementen (Konstruktoren, Selektoren, Typprädikate) Eigenschaften abgeleitet Jetzt: Abstrakte Datentypen (ADT)

Mehr

Semantik: Semantik von Merkmalsstrukturen

Semantik: Semantik von Merkmalsstrukturen Spezielle Themen der KI : von Subsumption Notation: t 1 t 2 Definition: Eine Merkmalsstruktur t 1 subsumiert eine Merkmalsstruktur t 2 gdw. die Menge der von t 2 beschriebenen Elemente eine Teilmenge der

Mehr

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie Gliederung 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.1. 2.2. Reguläre Sprachen 2.3. Kontextfreie Sprachen 2/1, Folie 1 2015 Prof. Steffen

Mehr

3 Terme und Algebren 3.1 Terme

3 Terme und Algebren 3.1 Terme 3 Terme und Algebren 3.1 Terme Mod - 3.1 In allen formalen Kalkülen benutzt man Formeln als Ausdrucksmittel. Hier betrachten wir nur ihre Struktur - nicht ihre Bedeutung. Wir nennen sie Terme. Terme bestehen

Mehr

Eigenschaften der SLD-Resolution

Eigenschaften der SLD-Resolution Eigenschaften der SLD-Resolution Vollständigkeit der SLD-Resolution für Hornklauseln Sei F eine inkonsistente Hornklauselmenge. Dann gibt es eine SLD-Widerlegung von F. Beweisskizze: Für inkonsistentes

Mehr

Grundlagen der Logik

Grundlagen der Logik Grundlagen der Logik Denken Menschen logisch? Selektionsaufgabe nach Watson (1966): Gegeben sind vier Karten von denen jede auf der einen Seite mit einem Buchstaben, auf der anderen Seite mit einer Zahl

Mehr

Logikprogrammierung. Berechnung durch Resolution Die Programmiersprache Prolog

Logikprogrammierung. Berechnung durch Resolution Die Programmiersprache Prolog Logikprogrammierung Berechnung durch Resolution Die Programmiersprache Prolog Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung Berechnung durch Resolution 213 Resolution

Mehr

5.3 Auswertung von Ausdrücken

5.3 Auswertung von Ausdrücken 5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n

Mehr

Inhalt Kapitel 11: Formale Syntax und Semantik

Inhalt Kapitel 11: Formale Syntax und Semantik Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte

Mehr

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

Binä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.

Mehr

Normalformen der Prädikatenlogik

Normalformen der Prädikatenlogik Normalformen der Prädikatenlogik prädikatenlogische Ausdrücke können in äquivalente Ausdrücke umgeformt werden Beispiel "X (mensch(x) Æ sterblich(x)) "X (ÿ mensch(x) sterblich(x)) "X (ÿ (mensch(x) Ÿ ÿ

Mehr

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik FH Wedel Prof. Dr. Sebastian Iwanowski GTI22 Folie 1 Grundlagen der Theoretischen Informatik Sebastian Iwanowski FH Wedel Kap. 2: Logik, Teil 2.2: Prädikatenlogik FH Wedel Prof. Dr. Sebastian Iwanowski

Mehr

Einführung in die Logik (Vorkurs)

Einführung in die Logik (Vorkurs) Einführung in die Logik (Vorkurs) Jürgen Koslowski 2014-04-07 Ein Beispiel Familie A will im kommenden Jahr eine Waschmaschine, ein Auto und ein Moped anschaffen. Aber falls Herr A seinen üblichen Bonus

Mehr

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann. Der Satz von Kleene Wir haben somit Folgendes bewiesen: Der Satz von Kleene Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden

Mehr

Programmiersprache Prolog

Programmiersprache Prolog Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.2 Logikprogrammierung Prolog 240 Programmiersprache Prolog Prolog-Programm ist Liste von Fakten (einelementige Hornklausel) und Regeln (mehrelementige

Mehr

Bisher. Programme, Sequenzen von Formen. Ausdrücke und ihre Auswertung (Substitutionsmodell)

Bisher. Programme, Sequenzen von Formen. Ausdrücke und ihre Auswertung (Substitutionsmodell) Bisher Programme, Sequenzen von Formen Ausdrücke und ihre Auswertung (Substitutionsmodell) Konstruktionsanleitung für Prozeduren Kurzbeschreibung Sorten und Verträge Gerüst Testfälle Rumpf ausfüllen Testen

Mehr

Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 7

Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 7 Prof. J. Esparza Technische Universität München S. Sickert, J. Krämer KEINE ABGABE Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt 7 Übungsblatt Wir unterscheiden zwischen Übungs-

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Empfehlenswerte Referenzen

Empfehlenswerte Referenzen Wenn Google etwas nicht finden kann, fragen sie Jack Bauer. ("Fakten über Jack Bauer") Inhalt Empfehlenswerte Referenzen...1 0 Wozu reguläre Ausdrücke?...1 1 Die Elemente regulärer Ausdrücke...2 2 Ein

Mehr

Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen

Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen 1. Was ist eine formale Sprache? Menge von Zeichenketten, die aus den Symbolen eines beliebigen Alphabets aufgebaut sind. Zeichenkette:

Mehr

Ein Fragment von Pascal

Ein Fragment von Pascal Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2015 22.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen

Mehr

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

PROLOG Syntax. Einführung in PROLOG II. Atome. Variablen. Es gibt vier Arten von Termen: Atome. Zahlen. Variablen. Komplexe Terme PROLOG Syntax Es gibt vier Arten von Termen: Atome Variablen Atome Zahlen Variablen Komplexe Terme 1. uni, uni_hannover 2. KI Kurs, $ % 45 3. @=, ====> 1. X, Y 2. Variable, Output 3. _tag, _head 4. X_256

Mehr

Operatoren in C/C++ und Java:

Operatoren in C/C++ und Java: Operatoren in C/C++ und Java: C/C++/Java hat eine riesige Anzahl von Operatoren (im Vergleich zu anderen Programmiersprachen). Außer den üblichen arithmetischen Operatoren +, -, *, / (und % für Ganzzahlen)

Mehr

Fakten, Regeln und Anfragen

Fakten, Regeln und Anfragen Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de 18.10.99 GK Prolog - Fakten, Regeln und Anfragen 1 Programmieren = Problemlösen Prolog ist eine deklarative

Mehr