Dr. Vitaly Perevoshchikov [email protected] http://www.informatik.uni-leipzig.de/~perev/ Universität Leipzig Institut für Informatik SS 2016 Übungen zur Vorlesung von Prof. Dr. Manfred Droste ”Semantik von Programmiersprachen” Serie 1 • Seminaraufgaben, die mit ”S” gekennzeichnet sind, werden in der Übungsgruppe am 11.04.16 besprochen. S1-1 Ein Binärbaum ist ein Baum, dessen Knoten höchstens 2 Nachfolger haben. Die Menge B aller binären Bäume ist induktiv wie folgt definiert: (i) W ist ein Binärbaum. (ii) Sind T1 , T2 Binärbäume, so auch W(T1 ; T2 ). (iii) Ist T ein Binärbaum, so auch W(T). Die Menge B ist also eine Sprache in {W, (, ), ;}∗ . (a) Konstruieren Sie eine kontextfreie Grammatik, die B erzeugt. (b) Definieren Sie induktiv die folgenden Funktionen: • h : B → N, h(T ) ist die Höhe von T ∈ B. • a : B → N, a(T ) ist die Anzahl der Knoten in T . (c) Sei T ein Baum. Zeigen Sie induktiv über die Struktur des Baums T , dass a(T ) ≤ 2h(T ) − 1. S1-2 Die Grammatik <E> ::= <E> ∧ <E> | <E> ∨ <E> | ¬ <E> | (<E>) | true | false erzeugt die Menge der Booleschen Ausdrücke mit ∧, ∨, ¬, Klammern und Konstanten true, false. (a) Zeigen Sie, dass diese Grammatik mehrdeutig ist. (b) Konstruieren Sie eine äquivalente eindeutige Grammatik. Bitte wenden! S1-3 Es sei m, n ∈ N \ {0}. Die Folge (xk )k∈N mit xk = (ak , bk ) ∈ N × N ist gegeben durch: a0 = m, b0 = n, ( ak − bk , falls ak > bk , ak+1 = ak , sonst, ( bk − ak , falls bk > ak , bk+1 = bk , sonst. (a) Beweisen Sie die folgende Aussage für alle natürlichen k durch vollständige Induktion: xk ∈ (N \ {0})2 ∧ ggT(ak , bk ) = ggT(m, n). (b) Zeigen Sie, dass es ein k0 ∈ N gibt mit ak = bk = ggT(m, n) für alle k ≥ k0 . S1-4 Das Gödelsche β-Prädikat Rβ ⊆ N4 ist definiert durch Rβ = {(a, b, i, x) | x = a mod(1 + (i + 1)b)}, wobei k mod l der Rest der Division von k durch l ist. Beweisen Sie folgende Behauptungen: (a) Für alle k ∈ N gibt es eine positive ganze Zahl b, so dass die Zahlen 1 + b, 1 + 2b, 1 + 3b, ..., 1 + kb paarweise teilerfremd sind. (b) Für jede Folge n0 , ..., nk von natürlichen Zahlen gibt es n, m ∈ N mit: ∀j ∈ {0, ..., k} ∀x ∈ N : (n, m, j, x) ∈ Rβ ⇐⇒ x = nj . Hinweis: Verwenden Sie den Chinesischen Restsatz.