2 Syntax versus Semantik

Größe: px
Ab Seite anzeigen:

Download "2 Syntax versus Semantik"

Transkript

1 2 Syntax versus Semantik There are 10 types of people: those that understand binary, and those that don t. Bisher haben wir lediglich die Syntax von Sprachen sowie verschiedene Methoden zu ihrer Spezifikation betrachtet. In diesem Kapitel beschreiben wir einen Ansatz, wie man Zeichenketten bestimmte Bedeutungen zuordnen kann. Wir definieren zu jeder Sprache, die interpretiert werden soll, eine Auswertungsfunktion. Diese Funktion berechnet zu jedem Wort der Sprache einen Wert, der die Bedeutung (Semantik) des Wortes darstellt. Die so behandelten Sprachen reichen dabei von sehr einfachen arithmetischen Ausdrucksmengen (Abschnitt 2.1), über allgemeine Termsprachen (Abschnitt 2.3) und logische Formeln (Abschnitt 2.4) bis zu einer einfachen Programmiersprache (Abschnitt 2.5). 2.1 Arithmetische Ausdrücke als einfaches Beispiel Additive Terme Als Ausgangspunkt betrachten wir die additiven Terme über den Ziffern 0 bis 9. Sei T = L(G), wobei G = {T }, {(, ), +, 0,...}, P, T und P = { T 0 9 ( T + T ) } T enthält Worte wie etwa ((1+2)+3). Um diesen Zeichenketten ihre natürliche Bedeutung zuzuordnen, definieren wir die Funktion M: T ω, die jedem additiven Term eine natürliche Zahl zuordnet: 1 M(0) = 0,..., M(9) = 9 M(( t 1 + t 2 )) = M(t 1 ) + M(t 2 ) Damit lässt sich nun der Wert von ((1+2)+3) berechnen: für t 1, t 2 T M(((1+2)+3)) = M((1+2)) + M(3) = M(1) + M(2) + M(3) = = 6 Eine solche Berechnung bezeichnet man auch als (Top-Down-)Auswertung. 1 Die Bezeichnung M für die Semantikfunktion leitet sich vom englischen Wort meaning ab; ω bezeichnet die Menge aller natürlichen Zahlen {0, 1, 2...}. 1

2 Terme mit Variablen Die Erweiterung der additiven Terme um Variablen, wie es sie in praktisch jeder Programmiersprache gibt, ist vom syntaktischen Standpunkt einfach: man muss lediglich entsprechende Produktionen zur Grammatik hinzufügen, etwa T x y z Wenn wir an die üblichen Programmiersprachen denken, dann repräsentiert jeder Variablenname eine Speicherzelle, ist also eine symbolische Adresse dieser Zelle. Wird der Wert der Variablen in einem Ausdruck benötigt, so muss zu diesem Zeitpunkt die Belegung der Speicherzelle abgefragt und dieser Wert statt der Variablen im Ausdruck verwendet werden. Formal gesehen ist die Speicherbelegung eine Abbildung von Variablennamen auf gespeicherte Werte, in unserem Beispiel auf natürliche Zahlen: {x, y, z,...} ω. Derartige Abbildungen werden im Folgenden auch Variablenbelegungen oder Environments genannt. Sei ENV die Menge aller möglichen Variablenbelegungen. Wir erweitern die Semantikfunktion um einen Parameter und erhalten die Funktion M: ENV T ω definiert durch: M(I, 0) = 0,..., M(I, 9) = 9 M(I, v) = I(v) für v {x, y, z,...} M(I, ( t 1 + t 2 )) = M(I, t 1 ) + M(I, t 2 ) für t 1, t 2 T 2.1 Beispiel Wir werten den Ausdruck ((x+2)+y) in der Variablenbelegung I(x) = 1 und I(v) = 3 für alle v x aus: M(I, ((x+2)+y)) = M(I, (x+2)) + M(I, y) = M(I, x) + M(I, 2) + M(I, y) = I(x) I(y) = = 6 Wählen wir eine andere Variablenbelegung, etwa J(x) = 5, J(y) = 2, J(v) = 0 sonst, erhalten wir auch einen anderen Wert: M(J, ((x+2)+y)) = M(J, (x+2)) + M(J, y) Grammatik versus Induktive Definition = M(J, x) + M(J, 2) + M(J, y) = J(x) J(y) = = 9 Die Produktionen kontextfreier Grammatiken haben Ähnlichkeiten mit den Abschlussbedingungen induktiver Definitionen. Zu diesen Bedingungen lassen sich wiederum parallel die Gleichungen rekursiver Funktionen spezifizieren, die auf der Sprache operieren sollen, etwa ihre Semantik berechnen sollen. 2

3 Grammatik Induktive Definition Rekursive Definition der Semantik T = L(G) T ist kleinste Menge mit: M: ENV T ω T 0 9 {0,... 9} T M(I, 0) = 0,... T x y z {x, y, z} T M(I, x) = I(x),... T ( T + T ) t 1, t 2 T ( t 1 + t 2 ) T M(I, ( t 1 + t 2 )) = M(I, t 1 ) + M(I, t 2 ) Ein wesentlicher Unterschied besteht allerdings zwischen Grammatik einerseits und induktiver Definition andererseits: Verschiedene Vorkommnisse eines Nonterminals, etwa T, entsprechen verschiedenen mathematischen Variablen in der induktiven Definition, hier t 1 und t 2. Werden gleiche Nonterminale in gleiche mathematische Variablen übersetzt, erhalten wir im Allgemeinen eine andere Sprache. Wird etwa im Beispiel oben die letzte Abschlusseigenschaft der induktiven Definition ersetzt durch t T ( t + t ) T ist T nicht mehr kontextfrei! Ein weiteres Problem kann bei der Definition rekursiver Funktionen auftreten, die sich an induktiven Definitionen orientieren. Die folgende Sprache E und ihre Semantik ist analog zu den additiven Ausdrücken weiter oben definiert. Grammatik Induktive Definition Rekursive Definition der Semantik E = L(G) E ist kleinste Menge mit: M: E ω E 0 9 {0,... 9} E M(0) = 0,... E E + E e 1, e 2 E e 1 + e 2 E M(e 1 + e 2 ) = M(e 1 ) + M(e 2 ) E E E e 1, e 2 E e 1 e 2 E M(e 1 e 2 ) = M(e 1 ) M(e 2 ) Man beachte, dass man die Klammersymbole aus der Sprache der additiven Terme eliminieren kann ohne die Eindeutigkeit des Wertes M(t) für einen entsprechenden Term t zu gefährden. Erweitert man dann allerdings die Sprache um ein Multiplikationssymbol so zeigt sich, dass die Definition von M im Allgemeinen nicht eindeutig ist, wenn sie in strikter Analogie zur induktiven Definition der Sprache erfolgt. Die Berechnung des Wertes von ist mehrdeutig: M(2 3+4) = M( 2 3 ) + M( 4 ) = M( 2 ) M( 3+4 ) = (M( 2 ) M( 3 )) + 4 = 2 ((M( 3 ) + M( 4 )) = (2 3) + 4 = 2 (3 + 4) = 10 = 14 M liefert also für eine Eingabe zwei verschiedene Ergebnisse, und ist somit keine wohldefinierte Funktion. Intuitiv würde man die linke Berechnungsfolge bevorzugen, da sie die höhere Priorität der Multiplikation gegenüber der Addition berücksichtigt. Diese Information steckt aber nicht in der induktiven Definition von E bzw. M. Es gibt zwei Auswege: 1. Man lässt die Definition von E, wie sie ist, und fügt lediglich eine informelle Bemerkung hinzu, dass Multiplikationen vor Additionen ausgewertet werden müssen. Der 3

4 Vorteil dieser Methode liegt in der einfachen Definition, die alle für einen menschlichen Leser notwendigen Informationen enthält. Wie wir gesehen haben, liegt der Nachteil darin, dass M nicht systematisch aus der induktiven Definition abgeleitet werden kann. 2. Man formuliert die Definition von E so um, dass zwar immer noch dieselbe Menge definiert wird, aber die natürliche Auswertungsreihenfolge reflektiert wird. Damit kann M automatisch aus der Definition von E abgeleitet werden, allerdings wird letztere schwerer konstruier- und lesbar. Eine Definition von E, die Multiplikation und Addition unterscheidet, könnte unter Verwendung einer Hilfsmenge H folgendermaßen aussehen. E ist die kleinste Menge, für die gilt: (a) H E (b) Wenn e 1, e 2 E, dann e 1 + e 2 E. H ist die kleinste Menge, für die gilt: (a) {0, 1,..., 9} H (b) Wenn e 1, e 2 H, dann e 1 e 2 H. Für jede der beiden Mengen ist eine eigene Auswertungsfunktion erforderlich, die aber völlig parallel zur induktiven Definition von E und H festgelegt werden kann: M E (e) = M H (e) falls e H M E (e 1 + e 2 ) = M E (e 1 ) + M E (e 2 ) M H (0) = 0,..., M H (9) = 9 M H (e 1 e 2 ) = M H (e 1 ) M H (e 2 ) M E und M H sind wohldefinierte Funktionen. Als einzigen Wert von erhält man: 2.2 Modellstrukturen M E (2 3+4) = M E (2 3) + M E (4) = M H (2 3) + M H (4) = M H (2) M H (3) + 4 = = 10 Wir haben in den vorangehenden Beispielen zur Definition der Semantik an ein informelles Verständnis einfacher arithmetischer Funktionen über Zahlen appelliert. Der Bereich bzw. Datentyp der ganzen Zahlen wird auch weiterhin unser wichtigstes Beispiel für eine Struktur bleiben, auf die wir uns in der exakten Definition der Bedeutung von formalsprachlichen Ausdrücken beziehen wollen. Es sollte aber klar sein, dass dies eben nur ein Beispiel für eine semantische Struktur ist. Wir definieren daher zunächst den allgemeinen Begriff einer Modellstruktur. 2.2 Definition (Modellstruktur) Eine Modellstruktur ist ein 4-Tupel D, F, P, K deren Bestandteile wie folgt sind: D ist eine nichtleere Menge, genannt Gegenstandsbereich von D, 4

5 F ist eine endliche Menge von totalen Funktionen des Typs D k D l mit k, l > 0, P ist eine endliche Menge von totalen Prädikaten des Typs D k {t, f} mit k > 0, K D ist eine Menge von Konstanten. In einer Modellstruktur wird also eine Menge mit bestimmten auf ihr definierten Funktionen und Prädikaten zusammengefasst. Prädikate werden dabei als Funktionen in die Menge der Wahrheitswerte t (für true ) und f (für false ) aufgefasst. Mehrstellige Prädikate werden auch Relationen genannt. Modellstrukturen finden als abstrakte Datentypen ihre Entsprechung in der modularen bzw. objekt-orientierten Programmierung. Dabei werden Datenstrukturen etwa Stacks, binäre Bäume oder Listen mit den zugehörigen Zugriffsprozeduren in Module gekapselt bzw. formen eigene Objekte. Allerdings ist der Begriff der Modellstruktur allgemeiner und grundlegender als diese programmierungsbezogene Sichtweise vermuten lässt: In der Prädikatenlogik, die wir in Abschnitt 4 behandeln werden, repräsentieren Modellstrukturen beliebige Gegenstandsbereiche der Welt (bzw. der Informatik oder Mathematik) über die wir exakte Aussagen treffen wollen. 2.3 Beispiel Die Modellstruktur der ganzen Zahlen: Z = Z, {+,, }, {<, =}, Z, wobei Z = {..., 2, 1, 0, 1, 2,...} die Menge aller ganzen Zahlen bezeichnet. Weiters bezeichnen +, und die üblichen arithmetischen Operationen Addition, Subtraktion und Multiplikation, sowie < und = die üblichen kleiner als - und gleich -Relationen. Zur Erinnerung: Die beiden Relationen werden als (infix-notierte) Funktionen vom Typ Z 2 {t, f} aufgefasst. Wir schreiben daher, z.b., (3 < 4) = f und (3 = 3) = t. 2.4 Beispiel Die Modellstruktur der natürlichen Zahlen: N = ω, {+,., }, {<, =}, {0, 1}, wobei ω = {0, 1, 2, 3,...} die Menge der natürlichen Zahlen bezeichnet und weiters (wie für Z) +,, < und = die übliche Addition, Multiplikation bzw. die kleiner als - und gleich -Relation repräsentieren. Da die Subtraktion auf den natürlichen Zahlen keine totale Funktion ist, wird sie in N durch die Funktion. ersetzt, die wie folgt definiert ist: x. { x y für x y y = 0 für x < y Man beachte außerdem, dass wir in N im Gegensatz zu Z nicht jedes Element des Gegenstandsbereichs, sondern nur 0 und 1 als Konstanten vorsehen. 2.5 Beispiel Die Modellstruktur der binären Stacks: S = S, {push0, push1, pop}, {ist0?, ist1?, istleer?}, {ε}, 5

6 wobei S = {0, 1} ; d.h., jeder binäre Stack wird als eine Zeichenkette bestehend aus 0 und 1 aufgefasst. Das obere Ende des Stacks ist jeweils der Anfang der Zeichenkette, wie folgende Definition der Funktionen und Prädikate von S deutlich macht (s, s S, b {0, 1}): push0(s) = 0s push1(s) = 1s { ε für s = ε pop(s) = s für s = bs ist0?(s) es gibt ein s S mit s = 0s ist1?(s) es gibt ein s S mit s = 1s istleer?(s) s = ε 2.6 Beispiel Eine Modellstruktur zu Familie X: FamX = Personen X, {Vater, Mutter }, {Geschwister, Onkel, weiblich, männlich, =}, {Abdul, Berta, Chris, Dorlan, Ege,...}. Wir haben uns bei dieser Modellierung der Familie X also dazu entschieden Vater und Mutter als Funktionen aufzufassen. So bezeichnet beispielsweise Mutter(Vater(Berta)) die Großmutter väterlicherseits von Berta. Da alle Funktionen total sein müssen, sollte die Menge Personen X entweder unendlich sein oder ein Fehlerelement Unbekannt enthalten, für das Mutter(Unbekannt) = Vater(Unbekannt) = Unbekannt gilt. Geschwister und Onkel sind jeweils zweistellige Relationen; weiblich und männlich sind einstellige Prädikate. Das zweistellige Prädikat = drückt die Gleichheit von Personen aus. Wenn Abdul ein Onkel von Chris ist, dann ist Onkel(Abdul,Chris) wahr. Hingegen könnte gleichzeitig Geschwister(Abdul,Mutter(Chris)) falsch sein. 2.3 Terme über Modellstrukturen Um nun formal und auf allgemeine Weise über eine beliebige Modellstruktur D sprechen zu können werden wir zwei kontextfreie Sprachen definieren: T (D), die Menge der Terme über D, sowie, darauf aufbauend, im Abschnitt 2.4 die Sprache BA(D) der Booleschen Ausdrücke über D. Dazu benötigen wir zunächst ein Alphabet, das Symbole zur Repräsentation der Funktionen, Prädikate und Konstanten von D enthält. 2.7 Definition (Signatur) Eine Signatur zu einer Modellstruktur D = D, F, P, K besteht aus folgenden drei Bestandteilen: eine Menge FS(D), die zu jeder Funktion in F ein entsprechendes Funktionssymbol enthält, eine Menge PS(D), die zu jedem Prädikat in P ein entsprechendes Prädikatensymbol enthält, sowie 6

7 eine Menge KS(D), die zu jeder Konstante in K ein entsprechendes Konstantensymbol enthält. Jedem Funktions- und Prädikatensymbol wird eine Zahl n 1 zugeordnet, die der Stelligkeit, also der Anzahl der Argumente der jeweiligen Funktion bzw. des Prädikats entspricht. FS n und PS n bezeichnen jene Teilmengen von FS bzw. PS, die genau die n-stelligen Symbole enthalten. Als Symbole verwenden wir auch weiterhin meist die unterstrichenen Namen der Funktionen, Prädikate und Konstanten. Für die oben beschriebenen Modellstrukturen Z, N, S und FamX erhalten wir: Signatur zu den ganzen Zahlen: FS 2 (Z) = {+,, }, PS 2 (Z) = {<, =}, KS(Z) = {..., 2, 1, 0, 1, 2...}, FS n (Z) = {} und PS n (Z) = {} für n 2. Signatur zu den natürlichen Zahlen: FS 2 (N) = {+,., }, PS 2 (N) = {<, =}, KS(N) = {0, 1}, FS n (N) = {} und PS n (N) = {} für n 2. Signatur zu den binären Stacks: FS 1 (S) = {push0, push1, pop}, PS 1 (S) = {ist0?, ist1?, istleer?}, KS(S) = {leer}, FS n (S) = {} und PS n (S) = {} für n > 1. Signatur zur Familie X: FS 1 (FamX) = {Vater, Mutter}, FS n (FamX) = {} für n > 1, PS 1 (FamX) = {weiblich, männlich}, PS 2 (FamX) = {Geschwister, Onkel, =}, PS n (FamX) = {} für n > 2. KS(FamX) = {Abdul, Berta, Chris, Dorlan, Ege,...} Das Alphabet der Sprache der Terme über D enthält neben den Elementen von FS(D) und KS(D) auch die Menge IVS = {x, y, z, x 1, x 2, x 3,...} der Individuenvariablensymbole 2 (kurz: Variablen), sowie die Hilfssymbole ( und ) und,. 2.8 Definition (Syntax von Termen) Die Menge T (D) der Terme über einer Modellstruktur D ist die kleinste Menge, für die gilt: (T1) IVS T (D); 2 Um das Alphabet endlich zu halten, müssten wir eigentlich IVS, aber auch die Menge der Konstantenund Funktionssymbole auf eine endliche Menge beschränken. Der Einfachheit halber wollen wir hier aber von dieser Einschränkung absehen. 7

8 (T2) KS(D) T (D); (T3) f (t 1,...,t n ) T (D), wenn f FS n (D) und t 1,..., t n T (D); Genau genommen müssten wir von den Termen über einer Signatur zu einer Modellstruktur sprechen. Da wir hier aber jeder Modellstruktur eine eindeutige Signatur zuordnen, ist die knappere Sprechweise von Definition 2.8 gerechtfertigt. 2.9 Beispiel Wir zeigen, dass push0(push1(pop(x))) T (S) gilt, d.h., dass der Ausdruck ein Term über der Modellstruktur der binären Stacks ist. Um die Zugehörigkeit eines Ausdruckes zu einer Sprache nachzuweisen, muss gezeigt werden, wie er mittels der Regeln gebildet werden kann, die diese Sprache definieren. Wir verwenden A = B C als Abkürzung für C folgt aus A mittels Regel B. x IVS = T 1 x T (S) pop FS 1 (S), x T (S) = T 3 pop(x) T (S) push1 FS 1 (S), pop(x) T (S) = T 3 push1(pop(x)) T (S) push0 FS 1 (S), push1(pop(x)) T (S) = T 3 push0(push1(pop(x))) T (S) 2.10 Beispiel push0( push1( 10)) ist kein Term über den binären Stacks. Die Menge der Symbole, die in einem Term auftreten können, umfasst die Variablen-, die Konstantenund die Funktionssymbole sowie die drei Hilfssymbole. Im Fall der Modellstruktur S ist das die Menge IVS {leer, push0, push1, pop, (,,, )}. Es fehlen also die Symbole 0 und 1, die aber im Ausdruck der Aufgabe auftreten. Gemäß Definition 2.8 ist +(1,x ) ein Term über Z, aber (1+x ) nicht. Wir wollen aber die vertrautere Infix-Notation für Terme über den ganzen Zahlen ebenfalls zulassen. Dazu brauchen wir die offizielle Definition von T (Z) gar nicht zu ändern, sondern vereinbaren, dass ein Term der Form (t 1,t 2 ), wobei FS 2 (Z), ab nun auch als ( t 1 t 2 ) geschrieben werden darf. (Dieselbe Vereinbarung gilt sinngemäß auch für T (N).) Zur Festlegung der Bedeutung von Termen beziehen wir uns auf Variablenbelegungen; das sind Zuordnungen von Elementen des Gegenstandsbereichs einer Modellstruktur D zu Individuenvariablensymbolen, also Funktionen des Typs IVS D. Vor allem im Kontext von Programmiersprachen werden Variablenbelegungen, wie bereits erwähnt, auch Environments oder Speicherbelegungen genannt. ENV bezeichnet die Menge aller Variablenbelegungen Definition (Semantik von Termen) Die Semantik von T (D) wird durch die Funktion M T : ENV T (D) D festgelegt, die wie folgt definiert ist: (MT1) M T (I, v) = I(v) für v IVS; (MT2) M T (I, c ) = c für c KS(D), wobei c die Konstante zum Symbol c ist; 8

9 (MT3) M T (I, f (t 1,...,t n )) = f(m T (I, t 1 ),..., M T (I, t n )), wobei f die Funktion zum Symbol f FS n (D) ist Beispiel Wir berechnen den Wert von t = +( (x,1),y) über der Modellstruktur Z in der Variablenbelegung I(x) = 0, I(y) = 2. (Zur Verdeutlichung wird hier die offizielle Präfixnotation für Terme beibehalten.) M T (I, t) MT 3 = M T (I, (x,1)) + M T (I, y) = M T (I, (x,1)) + I(y) MT 3 = (M T (I, x) M T (I, 1)) + 2 = (I(x) M T (I, 1)) + 2 MT 2 = (0 1) + 2 = = 1 Im Gegensatz dazu ist der Wert von t = +(. (x,1),y) über der Modellstruktur N in der Variablenbelegung I(x) = 0, I(y) = 2 wie folgt bestimmt: M T (I, t) MT 3 = M T (I, (x,1)). + M T (I, y) = M T (I, (x,1)). + I(y) MT 3 = (M T (I, x). M T (I, 1)) + 2 = (I(x). M T (I, 1)) + 2 MT 2 = (0. 1) + 2 = = Beispiel Wir berechnen den Wert von t = push0( pop( x)) in der Variablenbelegung I(x) = 11. MT 3 M T (I, t) = push0(m T (I, pop(x))) MT 3 = push0(pop(m T (I, x))) = push0(pop(i(x))) = push0(pop(11)) = push0(1) = 01 Bei der semantischen Auswertung formalsprachlicher Ausdrücke sind offensichtlich immer zwei Sprachebenen zu unterscheiden: Die syntaktische Ebene nennt man dabei auch Objektsprache, während die übliche mathematische Sprache, in der man auf die Semantik direkt Bezug nimmt, in diesem Zusammenhang als Metasprache bezeichnet wird. 2.4 Boolesche Ausdrücke über Modellstrukturen Terme beziehen sich nur auf die Funktionen und Konstanten einer Modellstruktur und stehen immer für einzelne Elemente des Gegenstandsbereichs. Um darüberhinaus einfache Aussagen über Modellstrukturen bilden zu können, müssen wir auch Prädikatensymbole sowie einfache logische Verknüpfungen in eine entsprechende Sprache einbauen. 9

10 2.14 Definition (Syntax von Booleschen Ausdrücken) Die Menge BA(D) der Booleschen Ausdrücke über der Modellstruktur D ist die kleinste Menge, für die gilt: (BA1) p (t 1,...,t n ) BA(D), wenn p PS n (D) und t 1,..., t n T (D); p (t 1,...,t n ) heißt Atomformel; (BA2) F BA(D), wenn F BA(D); (BA3) (F G) BA(D), wenn F, G BA(D); (BA4) (F G) BA(D), wenn F, G BA(D). Die neuen Symbole,, und sollen die vertrauten logischen Operationen nicht, und, bzw. oder repräsentieren. Daher definieren wir die Bedeutung Boolescher Ausdrücke wie folgt als Funktion mit den beiden Wahrheitswerten als Wertebereich: 2.15 Definition (Semantik von Booleschen Ausdrücken) Die Semantik von BA(D) wird durch die Funktion M BA : ENV BA(D) {t, f} festgelegt, die definiert ist durch: (MBA1) M BA (I, p (t 1,...,t n )) = p(m T (I, t 1 ),..., M T (I, t n )), wobei p das Prädikat zum Symbol p PS n (D) ist. { t falls MBA (I, F ) = f (MBA2) M BA (I, F ) = f falls M BA (I, F ) = t { (MBA3) M BA (I, (F G)) = t falls MBA (I, F ) = t und M BA (I, G) = t f sonst { (MBA4) M BA (I, (F G)) = t falls MBA (I, F ) = t oder M BA (I, G) = t f sonst Wir erinnern an dieser Stelle an die vereinbarte Zulässigkeit der Infixnotation für Terme über Z und N. Aus Gründen der besseren Lesbarkeit verwenden wir außerdem auch folgende Schreibvereinfachungen: Infixnotation auch für Atomformeln: ( t 1 = t 2 ) bzw. ( t 1 < t 2 ) steht für = ( t 1, t 2 ) bzw. für < ( t 1, t 2 ). (t 1 <t 2 ) kann auch als (t 2 >t 1 ) geschrieben werden. Statt (t 1 <t 2 ), (t 1 =t 2 ) etc. schreiben wir t 1 t 2, t 1 t 2 usw. Klammern können entfallen, sofern dadurch der Wirkungsbereich von Prädikatenund Funktionssymbolen ersichtlich bleibt Beispiel Wir bestimmen den Wahrheitswert des Booleschen Ausdrucks B = (x. y 0) (x>y) über N in einer Variablenbelegung I mit I(x) = 3 und I(y) = 4. Um die schrittweise Anwendung der Definitionen 2.15 und 2.11 besser zu verstehen, 10

11 sollte man sich daran erinnern, dass B in offizieller Syntax, also ohne die vereinbarten Schreibvereinfachungen, die Form ( =(. (x,y),0) <(y,x)) hat. M BA (I, B) MBA4 = t falls M BA (I, ((x y) 0)). = t oder M BA (I, (x>y)) = t Daher bestimmen wir zunächst M BA (I, ((x. y) 0)): M BA (I, ((x. y) 0)) M BA (I, ((x y)=0)). MBA2 = t falls M BA (I, ((x y)=0)). = f MBA1 = (M T (I, (x y)). = M T (I, 0)) MT 3,MT 2 = (M T (I, x). M T (I, y) = 0) = (3. 4 = 0). Def. Def.= = (0 = 0) = t daher: M BA (I, ((x. y) 0)) = f Es muss also noch M BA (I, (x>y)) bestimmt werden: M BA (I, (x>y)) = M BA (I, (y<x)) Zusammenfassend ergibt sich daher M BA (I, B) = f. MBA1 = (M T (I, y) < M T (I, x)) = (4 < 3) = f 2.5 Syntax und Semantik von ALI Boolesche Ausdrücke werden unter anderem als Bedingungen in if-anweisungen und Schleifenkonstruktionen eingesetzt. Außerdem können Terme als jene Ausdrücke aufgefasst werden, die auf der rechten Seite einer Zuweisungsinstruktion vorkommen dürfen. Entsprechend können wir T (Z) und BA(Z) als Bestandteile einer einfachen imperativen Programmiersprache ALI verwenden, deren einziger Datentyp die Modellstruktur der ganzen Zahlen Z ist. (ALI steht für Assignment Language für Integers.) 2.17 Definition (Syntax von ALI) Die Menge ALI der Statements (Programme) über Z ist die kleinste Menge, für die gilt: (AL1) (AL2) (AL3) (AL4) Ist v IVS und t T (Z), dann ist v t AL(Z). Sind α, β ALI, dann ist begin α ; β end ALI. Ist B BA(Z) und sind α, β ALI, dann ist if B then α else β ALI. Ist B BA(Z) und α ALI, dann ist while B do α ALI Beispiel Folgendes ist ein syntaktisch wohlgeformtes ALI-Programm: 11

12 begin z 0 ; while (0<y) do begin z (z+x) ; y (y 1) end end Beachten Sie, dass wir von der vereinbarten Infixnotation für arithmetische Ausdrücke Gebrauch machen. Dass dieses Programm tatsächlich in ALI liegt, lässt sich an Hand der induktiven Definition überprüfen: z IVS, 0 T (Z) = AL1 α 1 = z 0 ALI z IVS, (z+x) T (Z) = AL1 α 2 = z (z+x) ALI y IVS, (y 1) T (Z) = AL1 α 3 = y (y 1) ALI α 2, α 3 AL = AL2 β = begin α 2 ; α 3 end ALI (0<y) BA(Z), β ALI = AL4 γ = while (0<y) do β ALI α 1, γ ALI = AL2 begin α 1 ; γ end ALI In der Sprache ALI bestehen begin-end Blöcke aus nur jeweils zwei Anweisungen. Für längere Anweisungsketten sind geschachtelte Blöcke vorgesehen. Das erleichtert die semantische Analyse, ist aber unpraktisch in der Formulierung konkreter Programme. Ohne die offizielle Syntax von ALI zu ändern, vereinbaren wir folgende abkürzende Schreibweise (für alle n > 2): α 1 ; α 2 ;... ; α n steht für α 1 ; begin α 2 ; begin... ; α n end end Die intendierte Bedeutung des obigen Beispiel-Programms besteht in der Multiplikation zweier positiver Zahlen, die anfangs in den Variablen x und y gespeichert sind. Nach Ende des Programms enthält die Variable z das Ergebnis. Diese Intention kann jedoch erst durch eine entsprechende Definition der Semantik von ALI adäquat bestätigt werden. Die Semantik von Programmen legt fest, was jeweils berechnet wird. Um zu einer kompakten Definition zu gelangen, fassen wir die Bedeutung eines ALI-Programms als eine Funktion von (Anfangs-)Variablenbelegungen in (End-)Variablenbelegungen auf. Dabei hilft folgende Notation: 2.19 Definition Für ein Variablensymbol v IVS heißen zwei Assignments I, I ENV äquivalent modulo v in Zeichen: I v I wenn für alle w IVS mit w v gilt, dass I(w) = I (w) ist. (I und I unterscheiden sich also höchstens im Wert der Variablen v.) 2.20 Definition (Semantik von ALI) Die Semantik der Statements aus ALI wird durch die Funktion M AL : ENV ALI ENV festgelegt, die definiert ist durch: 12

13 (MAL1) M AL (I, v t) = I, wobei I (v) = M T (I, t) und I (w) = I(w) für alle w IVS mit w v, d.h. I v I. (MAL2) M AL (I, begin α ; β end) = M AL (M AL (I, α), β) { MAL (I, α) falls M (MAL3) M AL (I, if B then α else β) = BA (I, B) = t M AL (I, β) falls M BA (I, B) = f { MAL (M (MAL4) M AL (I, while B do α) = AL (I, α), while B do α) für M BA (I, B) = t I für M BA (I, B) = f 2.21 Beispiel Wir berechnen das Ergebnis des Programms aus Beispiel 2.18 für eine Variablenbelegung I mit I(x) = 3, I(y) = 1 und I(z) = 1, wobei wir folgende Abkürzungen verwenden: β = begin z (z+x) ; y (y 1) end und γ = while (0<y) do β. M AL (I, begin z 0 ; γ end) MAL2 = M AL (M AL (I, z 0), γ) MAL1 = M AL (I, γ) wobei I (z) = M T (I, 0) = 0 und I (v) = I(v) für v z = M AL (I, while (0<y) do β) [ MBA (I, (0<y)) = (M T (I, 0)<M T (I, y)) = (0<I ] (y)) = (0<I(y)) = (0<1) = t MAL4 = M AL (M AL (I, β), while (0<y) do β) MAL2 = M AL (M AL (M AL (I, z (z+x)), y (y 1)), while (0<y) do β) MAL1 = M AL (M AL (I, y (y 1)), while (0<y) do β) wobei I (z) = M T (I, (z+x)) = M T (I, z) + M T (I, x) = I (z) + I (x) = 0 + I(x) = = 3 I (v) = I (v) für v z MAL1 = M AL (I, while (0<y) do β) wobei I (y) = M T (I, (y 1)) = M T (I, y) M T (I, 1) = I (y) 1 = I (y) 1 = I(y) 1 = 1 1 = 0 I (v) = I (v) für v y [ MBA (I, (0<y)) = (M T (I, 0)<M T (I ], y)) = (0<I (y)) = (0<0) = f MAL4 = I 13

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale 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

Mehr

4.0 VU Theoretische Informatik und Logik (Logik-Teil)

4.0 VU Theoretische Informatik und Logik (Logik-Teil) 4.0 VU Theoretische Informatik und Logik (Logik-Teil) Christian Fermüller unter Mitwirkung von Marion Oswald, Rudi Freund, Alex Leitsch, Gernot Salzer sowie 15 TutorInnen Institut für Computersprachen

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

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache 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

Mehr

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 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

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 8: kontextfreie Grammatiken Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/37 Überblick Kontextfreie Grammatiken

Mehr

2. Vorlesung. Slide 40

2. 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

Mehr

5 Logische Programmierung

5 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

Mehr

1 Syntax von Programmiersprachen

1 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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

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

Terme 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

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

Überblick über dieses Kapitel Grundlagen der Programmierung Kapitel 12: Information und Repräsentation

Überblick über dieses Kapitel Grundlagen der Programmierung Kapitel 12: Information und Repräsentation Überblick über dieses Kapitel Grundlagen der Programmierung Dr. Christian Herzog Technische Universität München Wintersemester 2007/2008 Kapitel 12: Information und Repräsentation! Repräsentation, Information,!

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische 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

Mehr

Programmierung und Modellierung

Programmierung 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:

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java 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

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische 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

Mehr

Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer:

Datenstruktur 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.

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was 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

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

Hello 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. 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

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java 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

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

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

Mehr

Klausur Formale Systeme Fakultät für Informatik WS 2009/2010

Klausur Formale Systeme Fakultät für Informatik WS 2009/2010 Klausur Formale Systeme Fakultät für Informatik WS 2009/2010 Prof. Dr. Bernhard Beckert 18. Februar 2010 Name: Mustermann Vorname: Peter Matrikel-Nr.: 0000000 Klausur-ID: 0000 A1 (15) A2 (10) A3 (10) A4

Mehr

Prädikatenlogik - Micromodels of Software

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

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 3: Alphabete (und Relationen, Funktionen, Aussagenlogik) Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Oktober 2008 1/18 Überblick Alphabete ASCII Unicode

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine 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

Mehr

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur Signatur Formeln Am Beispiel der Aussagenlogik erklären wir schrittweise wichtige Elemente eines logischen Systems. Zunächst benötigt ein logisches System ein Vokabular, d.h. eine Menge von Namen, die

Mehr

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Wintersemester 2009/10, Prof. Dr. Udo Hahn, Erik Fäßler Übungsblatt 3 vom 19.11.2009 Abgabe bis 26.11.2009, 14:30 Uhr; per

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie und, oder, nicht, wenn... dann zwischen atomaren und komplexen Sätzen. I. Aussagenlogik 2.1 Syntax Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen. Sätze selbst sind entweder wahr oder falsch. Ansonsten

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

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik Grundlagen der Informatik II Teil I: Formale Modelle der Informatik 1 Einführung GdInfoII 1-2 Ziele/Fragestellungen der Theoretischen Informatik 1. Einführung abstrakter Modelle für informationsverarbeitende

Mehr

Theoretische Informatik

Theoretische 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

Mehr

ax 2 + bx + c = 0, (4.1)

ax 2 + bx + c = 0, (4.1) Kapitel 4 Komplexe Zahlen Wenn wir uns auf die reellen Zahlen beschränken, ist die Operation des Wurzelziehens (also die Umkehrung der Potenzierung) nicht immer möglich. Zum Beispiel können wir nicht die

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

ARBEITSBLATT ZU FORMALEN SPRACHEN ARBEITSBLATT ZU FORMALEN SPRACHEN Aufgabe 1: Gegeben ist die folgende Formale Sprache L(G) mit G = (T, N, P, S). Die Produktionen lauten ZUWEISUNG ::= name zuweisungsoperator AUSDRUCK semikolon AUSDRUCK

Mehr

Logik und Mengenlehre. ... wenn man doch nur vernünftig mit Datenbanken umgehen können will?

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

Mehr

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Prädikate zum Testen und Manipulieren der Struktur der Terme; Mehr meta-logische Prädikate z.b. zum Testen des Zustands der Ableitung;

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

Mehr

Wortproblem für kontextfreie Grammatiken

Wortproblem für kontextfreie Grammatiken Wortproblem für kontextfreie Grammatiken G kontextfreie Grammatik. w Σ w L(G)? Wortproblem ist primitiv rekursiv entscheidbar. (schlechte obere Schranke!) Kellerautomat der L(G) akzeptiert Ist dieser effizient?

Mehr

Programmierung in Python

Programmierung 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

Mehr

Beschreibungslogiken. Daniel Schradick 1schradi@informatik.uni-hamburg.de

Beschreibungslogiken. 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

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

Mehr

Prinzipielle Ausführungsvarianten I

Prinzipielle 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!

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

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Lösung der Aufgaben (1/2) Lösung Aufgabe

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare Beispiele: (Funktionen auf Listen) (3) Bemerkungen: 5. Zusammenhängen der Elemente einer Liste von Listen: concat :: [[a]] -> [a] concat xl = if null xl then [] else append (head xl) ( concat (tail xl))

Mehr

5. Aussagenlogik und Schaltalgebra

5. Aussagenlogik und Schaltalgebra 5. Aussagenlogik und Schaltalgebra Aussageformen und Aussagenlogik Boolesche Terme und Boolesche Funktionen Boolesche Algebra Schaltalgebra Schaltnetze und Schaltwerke R. Der 1 Aussagen Information oft

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik - das Quiz zur Vorlesung Teil I - Grundzüge der Logik In der Logik geht es um... (A) die Formen korrekten Folgerns (B) die Unterscheidung von wahr und falsch (C) das Finden von

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der 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.

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

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

Mehr

Wissensbasierte Systeme/ Expertensysteme. Teil 2

Wissensbasierte 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)

Mehr

Grundlagen der Informationverarbeitung

Grundlagen der Informationverarbeitung Grundlagen der Informationverarbeitung Information wird im Computer binär repräsentiert. Die binär dargestellten Daten sollen im Computer verarbeitet werden, d.h. es müssen Rechnerschaltungen existieren,

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo Aufgabe ist die Entwicklung einer vereinfachten Variante der beliebten Programmiersprache Logo. Die Aufgabe ist in drei Stufen zu erledigen, von der wir zunächst nur die erste Stufe bekannt geben. Die

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Fixpunktsemantik 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

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Kapitel 5: Applikative Programmierung

Kapitel 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

Mehr

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Diskrete Strukturen und Logik WiSe 2007/08 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Diskrete Strukturen und Logik Gesamtübersicht Organisatorisches Einführung Logik & Mengenlehre

Mehr

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle.

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle. Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik Seminar Entscheidungsverfahren für logische Theorien Tobias Hebel Koblenz, am 18.02.2005 Inhaltsverzeichnis 1 Einleitung... 3 2 Grundlagen...

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

Syntax (= Satzgefüge), vgl. auch Grammatik

Syntax (= Satzgefüge), vgl. auch Grammatik 1 Natürliche Sprachen Natürliche Sprachen bezeichnen wie das Wort "Sprache" ausdrückt zunächst das Gesprochene. Das Schweizerdeutsch etwa ist eine typische natürliche Sprache. Mit der Erfindung der Aufzeichnung

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

L6. Operatoren und Ausdrücke

L6. Operatoren und Ausdrücke L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.

Mehr

Sprachen/Grammatiken eine Wiederholung

Sprachen/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:

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Programmieren I. Formale Sprachen. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Formale Sprachen. www.kit.edu. Institut für Angewandte Informatik Programmieren I Formale Sprachen KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Formale Sprachen: Allgemeines Sprachen werden

Mehr

Zur Definition von Definition Albert J. J. Anglberger, Peter Brössel

Zur Definition von Definition Albert J. J. Anglberger, Peter Brössel Zur Definition von Definition Albert J. J. Anglberger, Peter Brössel Zusammenfassung Wir werden in dieser Arbeit zwei neue Definitionsvorschläge von Definition entwickeln, die folgende Eigenschaften aufweisen:

Mehr

Die 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.

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

Mehr

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 6 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Satz 1 Seien F, G Boolesche Ausdrücke

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Betragsgleichungen und die Methode der Fallunterscheidungen

Betragsgleichungen und die Methode der Fallunterscheidungen mathe online Skripten http://www.mathe-online.at/skripten/ Betragsgleichungen und die Methode der Fallunterscheidungen Franz Embacher Fakultät für Mathematik der Universität Wien E-mail: franz.embacher@univie.ac.at

Mehr

Programmiersprachen und ihre Übersetzer. Syntaxorientierte Übersetzung

Programmiersprachen und ihre Übersetzer. Syntaxorientierte Übersetzung Folien zur Vorlesung Programmiersprachen und ihre Übersetzer Kapitel 3 Syntaxorientierte Übersetzung Faculty of Technology robert@techfak.uni-bielefeld.de May 27, 2013 Aufbau von Programmiersprachen Programmiersprachen

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 2.4 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibungsformen für Sprachen Mathematische Mengennotation Prädikate beschreiben Eigenschaften

Mehr

Fragenkatalog Software Engineering I & II 25 Februar 1997 Bernd Thomas Ich habe mal eine kleine Liste der Fragen, die ich so in den Prufungsprotokollen gefunden habe, zusammengetragen. Im groen und ganzen

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Hauptseminar: Nichtrelationale Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Mai 2006 Was ist eine Datenbank? Erweiterung relationaler um eine Deduktionskomponente Diese

Mehr

Tiramisu Deklarativ Aus Eigelb, Mascarpone und in Likör und Kaffee getränkten Biskuits hergestellte cremige Süßspeise

Tiramisu 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

Mehr