13
Logikorientierte Programmierung Eine Vorschau Die Logikorientierte Programmierung ist eines der grund- legenden Programmierparadigmen. Als konkrete Program- miersprache verwenden wir Prolog (programmation en logi- que), den bekanntesten Vertreter, gemeinsam mit den neue- sten Erweiterungen — Constraints. Die folgenden Bilder sind dem an unserem Institut entwickel- ten System GUPU entnommen, das in der Lehrveranstaltung 185.179 VL Logikorientierte Programmierung zum Einsatz kommt. 1

Logikorientierte Programmierung Eine Vorschau

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Logikorientierte Programmierung Eine Vorschau

Logikorientierte ProgrammierungEine Vorschau

Die Logikorientierte Programmierung ist eines der grund-legenden Programmierparadigmen. Als konkrete Program-miersprache verwenden wir Prolog (programmation en logi-que), den bekanntesten Vertreter, gemeinsam mit den neue-sten Erweiterungen — Constraints.

Die folgenden Bilder sind dem an unserem Institut entwickel-ten System GUPU entnommen, das in der Lehrveranstaltung185.179 VL Logikorientierte Programmierung zum Einsatzkommt.

1

Page 2: Logikorientierte Programmierung Eine Vorschau

Mit Prolog durch Europa

Die Knoten des europaischen Eisenbahnnetzes dienen uns als Einstieg in Prolog. Mit einemeinzeiligen Programm werden die einzelnen Eisenbahnknoten aufgezeigt.So erfahrt man auch, dass Dax —entgegen landlaufiger Meinung— nicht in der Nahe vonFrankfurt liegt.

2

Page 3: Logikorientierte Programmierung Eine Vorschau

Noch ein Bruderzwist im Hause Habsburg

Hier ist einiges durcheinander geraten. Wer ist nun der Vater von Franz II, dem Grunderunserer Universitat? Ist es Joseph II, der Furst der Vernunft, oder sein Bruder Leopold II?Und wie kommt die große Maria Theresia dazu, ihr eigenes Enkelkind zu sein?GUPU zeigt die unterlaufenen Inkonsistenzen auf und reduziert mittels automatisierterProgrammdiagnose das Problem auf die wenigen dafur verantwortlichen Fakten. Die genaueUrsache kann GUPU jedoch nicht ergrunden. Dazu ist zu wenig Wissen vorhanden.

3

Page 4: Logikorientierte Programmierung Eine Vorschau

Gleich und gleich gesellt sich gern

Der umfassende Begriff der Unifikation ersetzt und vereinheitlicht, was in herkommlichenProgrammiersprachen durch viele verschiedene Konzepte wie Zuweisung, Zugriff, Vergleichausgedruckt wird.Im Bild wird die Gleichung [U|Us] = [[a]] veranschaulicht.Dabei werden die freien Teile (Variable, dargestellt durch Rechtecke) mit passenden be-kannten Teilen gebunden.

4

Page 5: Logikorientierte Programmierung Eine Vorschau

Komplexe Datenstrukturen

Komplexe Datenstrukturen wie Arrays in herkommlichen Sprachen werden in Prolog mitTermen dargestellt.Das Rautenmuster im Bild —beliebt bei Einlegearbeiten seit antiken Zeiten— wird mitTermen beschrieben.

5

Page 6: Logikorientierte Programmierung Eine Vorschau

Alle Wege fuhren nach...

Alle Wege fuhren nach Rom? Eulen nach Athen tragen? Fur Prolog heißt diese StadtMarseille. Dort erblickte Anfang der 1970er-Jahre Prolog und damit die LogikorientierteProgrammierung durch Alain Colmerauer das Licht der Welt.Ein Jahrzehnt spater nahm die nachste Neuerung (Constraintlogische Programmierung)wieder diese Stadt zu ihrem Ausgangspunkt.In dieser Lehrveranstaltung befassen wir uns mit beiden Richtungen.

6

Page 7: Logikorientierte Programmierung Eine Vorschau

Barocke Kunstliche Intelligenz

Mit diesem”Denkring“ erzeugte der Dichterfurst Georg Philipp Harsdorffer deutsche Worter

bzw. solche, die deutsch klingen. So gesehen handelt es sich um einen der ersten Versuche,unsere Sprache rein mechanisch zu beschreiben. 350 Jahre nach seinem Erscheinen hilft unsHarsdorffers Denkring, Prologs Ausfuhrungsmechanismus zu veranschaulichen. In GUPUwurde die Anweisung an den Buchbinder leicht modernisiert umgesetzt:An den Buchbinder. Dieses Blatlein muß heraus geschnidten/ in funff Ringe zertheilet/ und auf funff gleich-grosse Scheibenvon Papyr/ also aufeinander gehefftet werden/ daß man jeden Ring absonderlich umbdrehen kan/ wann solchs geschehen/ mußman dies funfffache Blat wider hinein pappen.

7

Page 8: Logikorientierte Programmierung Eine Vorschau

Baume wachsen nicht in den Himmel

In der Informatik konnen Baume beliebig groß sein! Aber sie wachsen nicht hinauf in denHimmel, sondern von oben nach unten!Im Bild ist der Abstrakte Syntaxbaum des Ausdrucks (1+((1+1)+(1+1))) zu sehen. DerAbstrakte Syntaxbaum ist das konzeptuelle Ruckgrat eines jeden Compilers. Er ist dasBindeglied zwischen syntaktischer Analyse und den semantischen Komponenten.

8

Page 9: Logikorientierte Programmierung Eine Vorschau

Sekundarfaltung der Transfer-RNA

C CAC

GG

CC

G A T AT

CC

TTA

G C T TGGG

TGCTG

GA

TG A C T

A A TG

TTC

AGTCA

ACGAG

ATG

GAC

GA

CTCGA

TTTG

GC

CG

Ein Teil der Bedeutung des genetischen Codes lasst sich aus der Struktur ersehen, wieein RNA-Strang sich in sich selbst falten kann. Kann er sich wie ein Kleeblatt (Bild)falten, so konnte sich hier eine Transfer-RNA befinden, die fur die Erzeugung eines Proteinsverantwortlich ist.Innerhalb der Molekularbiologie wurden in den 1980-er Jahren linguistische Strukturen wiediese mit Grammatiken untersucht.

9

Page 10: Logikorientierte Programmierung Eine Vorschau

Planung eines Bruckenbausot

her

conc

rete

_ex

cava

torc

ater

pilla

rpile

_driv

eca

rpen

try

bric

klay

incr

ane

t0 10 20 30 40 50 60 70 80 90 100

stop

k2

rth

ct6

ct4

k1

ct3

ct2

ct1

ct5

eth

start

cf6

cf4

cf3

cf2

cf1

cf5

ex6

ex4

ex2

ex3

ex1

ex5

fg2

fg1

fp2

fp1

fw6

fw4

fw3

fw2

fw1

fw5

mw6

mw4

mw3

mw2

mw1

mw5

pg4

pg5

pg3

pg2

pg1

dfb

Um eine Brucke zu bauen, mussen viele voneinander abhangige Arbeiten durchgefuhrtwerden. Ziel der Planung ist ein moglichst kostengunstiger Plan. Mit Constraints werdendiese Abhangigkeiten beschrieben, damit Prolog eine Losung findet.Bauhutte: Errichtung (eth), Abriss (rth)Widerlager/Pfeiler: Aushub (ex), Fundament (fp), Schalung (fw), Betonfundament (cf)und Absetzzeit (ct) Maurerarbeiten (mw)Trager: Lieferung (dfb), Aufsetzen (pg)

10

Page 11: Logikorientierte Programmierung Eine Vorschau

Planung periodischer Echtzeitaufgaben

Periodic Plan: Db=big

ihih igig ifif ieie

idid icic ibib iaiahhhh hghg hfhf hehe

hdhd hchc hbhb haha

gb

gafbfaebeb

eaea dddd dcdcdcdcdbdb dada

cccc cccbcaca

bbbaag

af

ae

adacabaa

ihih igig ifif ieie

idid icic ibib iaiahhhh hghg hfhf hehe

hdhd hchc hbhb haha

gb

gafbfaebeb

eaea dddd dcdcdcdcdbdb dada

cccccccbcaca

bbba

ihih igig ifif ieie

idid icic ibib iaiahhhh hghg hfhf hehe

hdhd hchc hbhb haha

gb

gafbfaebeb

eaea dddd dcdcdcdcdbdb dada

cccccccbcaca

bbbaag

af

ae

adacabaa

ihih igig ifif ieie

idid icic ibib iaiahhhh hghg hfhf hehe

hdhd hchc hbhb haha

gb

gafbfaebeb

eaea dddd dcdcdcdcdbdb dada

cccccccbcaca

bbba

bus

cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7

0 31

bus

cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7

32 63

bus

cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7

64 95

bus

cpu0cpu1cpu2cpu3cpu4cpu5cpu6cpu7

96 127

Transactions: a b c d e f g h i

In vielen Echtzeitsystemen laufen standig sich wiederholende Aufgaben ab, wobei zeitlicheGarantien zur Reaktionszeit des Gesamtsystems im Vordergrund stehen. Die Aufgabenwerden hier von acht Prozessoren ubernommen (cpu0-cpu7), die uber einen Bus miteinanderkommunizieren.

11

Page 12: Logikorientierte Programmierung Eine Vorschau

In der Hohle des Wumpus

-6Musste sich einst Odysseus in der Hohle des Zyklopen und Theseus in der des Minotaurusbewahren, werden heutzutage Softwareagenten (Pfeil) in die Hohle des Wumpus geschickt— mit nur einem Schuss in der Flinte. Dabei helfen ihnen weder List noch Ariadnefaden.Die Hohle ist so dunkel, dass nicht einmal die angrenzenden Felder zu sehen sind. Manspurt nur die kalte Brise einer nahen Grube (blau). Neben dem Wumpus (braun) riechtman seinen Gestank. Trifft man ihn mit der Flinte, hort man noch seinen Schrei. DenGlanz des Goldes (gelb) sieht man einzig auf dem Feld selbst.Der Agent ist auf seine Fahigkeit angewiesen, mit diesen wenigen Wahrnehmungen zumGold und zuruck zu gelangen. GUPU zeigt das Wissen des Agenten als kleine Quadrate inden Feldern. Rechts oben halt der Agent falschlicherweise eine Grube fur ein freies Feld.

12

Page 13: Logikorientierte Programmierung Eine Vorschau

Ein Agentenfilm mit einem Intelligenten Agenten

0 -1 -2 -3 -4

-5 -6 -7 -8 -9

-10 -11 -12 -13 -14

-15 -16 -17 -18 -19

-20 -21 -22 977Wagemutig lotst sich der Agent am Wumpus vorbei zum Gold. Mit jedem Schritt erfahrt ermehr uber die Beschaffenheit der Hohle und seine Vermutungen (kleine Quadrate) werdenzur Gewissheit (Felder in kraftigen Farben). Dabei kostet ihm jeder Schritt einen Punkt.Allerdings hat sich unser Agent nicht fur das kostengunstigste Verhalten entschieden. DerSchuss auf den Wumpus ist nicht nur unbarmherzig, sondern verursacht auch unnotigeKosten, da der Agent ohnehin wusste, wo sich das Ungeheuer befindet.

13