22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

s (T, state) = wahr<br />

s (F, state) = falsch<br />

s (Prädikat Symbol (termlist), state) = B(Prädikat Symbol) (slist (termlist, state))<br />

s (Konstantes Prädikat, state) = B(Konstantes Prädikat)<br />

s (Term1 = Term2, state) = if s (Term1, state) = s (Term2, state)<br />

then wahr else falsch<br />

s ((¬ Satz), state) = (nicht s (Satz, state))<br />

s ((Satz1 ∧ Satz), state) = (s (Satz1, state) und s (Satz2, state))<br />

s ((Satz1 ∨ Satz), state) = (s (Satz1, state) o<strong>der</strong> s (Satz2, state))<br />

s ((Satz1 ⇒ Satz), state) = (s (Satz1, state) impl s (Satz2, state))<br />

s ((Satz1 ⇔ Satz), state) = (s (Satz1, state) gleich s (Satz2, state))<br />

s ((∀ Variable : Bereich . Satz), state) = if Bereich = {} then wahr<br />

else let x ∈ Bereich in<br />

s (Satz, state + [Variable ↦→ x]) und<br />

s ((∀ Variable : Bereich-{x} . Satz), state)<br />

s ((∃ Variable : Bereich . Satz ), state) = if Bereich = {} then falsch<br />

else let x ∈ Bereich in<br />

s (Satz, state + [Variable ↦→ x]) o<strong>der</strong><br />

s ((∃ Variable : Bereich-{x} . Satz), state)<br />

s (Variable, state) = state(Variable)<br />

s (Konstante, state) = B(Konstante)<br />

s (Funktions Symbol (termlist), state) = B(Funktions Symbol) (slist (termlist, state))<br />

slist (termlist, state) = if einelementig(termlist)<br />

then s (termlist, state)<br />

else s (head(termlist), state) cons<br />

slist (tail(termlist), state))<br />

Abbildung 2.13: Semantik prädikatenlogischer Formeln mit endlichen Bereichen<br />

Analog zu dem ’if then else’-Konstrukt, wird hier eine weitere, die Bildung <strong>der</strong> Zielsprachensätze betreffende<br />

Konstruktion verwandt, das ’let’-Konstrukt. ‘let x = Ausdruck1 in Ausdruck2’ bedeutet, daß einmal <strong>der</strong><br />

Wert von Ausdruck1 bestimmt wird und dann alle Vorkommen von x in Ausdruck2 durch den Wert von<br />

Ausdruck1 ersetzt werden. Erst dann erfolgt die Bestimmung von Ausdruck2.<br />

Eine Liste ist eine geordnete Reihung ihrer Elemente, in <strong>der</strong> im Gegensatz zu einer Menge Elemente auch<br />

mehrfach vorkommen dürfen. Die nicht weiter definierte Funktion tail angewandt auf eine Liste von Termen<br />

liefert uns die Liste <strong>der</strong> Terme, die sich aus <strong>der</strong> Ausgangsliste ohne das erste Element ergeben. Das erste<br />

Element (<strong>der</strong> “Kopf”) wird von <strong>der</strong> Funktion head geliefert. Die Funktion einelementig testet, ob eine<br />

Liste nur ein Element hat und die (Infix-)Funktion cons hängt ein Element vor den Anfang einer Liste. Der<br />

Ausdruck state + [Variable ↦→ e] bedeutet, daß sich die Funktionstabelle für diesen Ausdruck von <strong>der</strong> des<br />

Zustandes state nur an <strong>der</strong> Stelle Variable unterscheidet. Sie hat hier den Eintrag Variable ↦→ e.<br />

Die auf den ersten Blick vielleicht aufwendige Konstruktion im Fall des ∃ und des ∀ Operators dient nur dazu,<br />

die Elemente aus <strong>der</strong> Menge Bereich 6 aufzuzählen. ’ . ’ trennt dabei die Festlegung <strong>der</strong> durch den Quantor<br />

gebundenen Variablen und die Bereichsangabe von <strong>der</strong> eigentlichen Aussage. Man mache sich klar, daß im<br />

Fall endlicher Bereiche die Bedeutung <strong>der</strong> beiden Operatoren durch eine (unter Umständen ziemlich lange)<br />

6 An dieser Stelle sei noch einmal deutlich herausgehoben, daß im Rahmen dieser Vorlesung nur Quantoren mit endlichen<br />

Bereichen benutzt werden. Die allgemeine Logik erklärt Quantoren natürlich auch für unendliche Bereiche wie den <strong>der</strong> natürlichen<br />

Zahlen. Dabei än<strong>der</strong>t sich die Syntax nicht im geringsten, aber die obige, konstruktive Definition <strong>der</strong> Semantik muß durch eine<br />

weniger konstruktive ersetzt werden, welche Zielsprachenoperatoren “für alle” und “es gibt” benutzt. Die Bedeutung solcher<br />

Zielsprachenoperatoren kann allerdings wesentlich weniger klar angegeben werden als z.B. die von und und ist deshalb in <strong>der</strong><br />

Fachwelt durchaus umstritten.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!