Diskrete Mathematik Ausgewählte Musterlösungen, 3. PS-Blatt LVA 703015 Institut für Informatik 2) Lösung. Basis (F = atomare Aussage E): E enthält keine Operatoren, also ist E = E 0 . Schritt: • (F = ¬A): Laut IH existiert eine zu A äquivalente Formel A0 , welche als einzigen Operator Z verwendet. F 0 = (A0 ZA0 ) enthält dann ebenfalls als einzigen Operator Z. Die Äquivalenz F ≡ F 0 kann über eine Wahrheitstabelle gezeigt werden. • (F = (A ∨ B)): Laut IH existieren A0 und B 0 welche zu A bzw. B äquivalent sind und als einzigen Operator Z enthalten. F 0 = ((A0 Z A0 ) Z (B 0 Z B 0 )) enthält dann als einzigen Operator Z. Die Äquivalenz F ≡ F 0 kann wieder über eine Wahrheitstabelle gezeigt werden. • (F = (A ∧ B)): Analog zum Fall (A ∨ B) mit F 0 = ((A0 Z B 0 ) Z (A0 Z B 0 )). 4) Lösung. Sei a ≺ b genau dann wenn a 6= b und a ein Teiler von b ist. Die Ordnung a ≺ b auf {n ∈ N | n ≥ 2} ist wohlfundiert. Wir zeigen nun für ein beliebiges n ≥ 2 mittels wohlfundierter Induktion bezüglich ≺, dass n als Produkt von Primzahlen dargestellt werden kann. Wenn n selbst eine Primzahl ist, dann gilt die Aussage trivialerweise. Wenn n keine Primzahl ist, dann gibt es natürliche Zahlen n1 ≥ 2 und n2 ≥ 2 für die gilt n = n1 n2 , n1 6= n und n2 6= n. Also auch n1 ≺ n und n2 ≺ n. Über die Induktionshypothese erhalten wir daher Primzahlen p1 , . . . , pk und q1 , . . . , q` so dass n1 = p1 · · · pk und n2 = q1 · · · q` . Da n = p1 · · · pk q1 · · · q` ist der Beweis abgeschlossen. 5) Lösung. • Rekursive Aufrufe von nat finden nur auf lexikographisch kleineren Argumenten statt: x0 >gradlex x und x1 >gradlex x, wenn x ∈ B. Rekursive Aufrufe von bin finden nur auf echt kleineren Argumenten statt: 2n > n und 2n + 1 > n, wenn n ∈ N+ . • Mittels Induktion auf x: bin(nat(1)) = bin(1) = 1, bin(nat(x0)) = bin(2nat(x)) = bin(nat(x))0 = x0 und bin(nat(x1)) = bin(2nat(x) + 1) = bin(nat(x))1 = x1. Wobei in den letzten beiden Gleichungsketten die Induktionshypothese jeweils im letzten Schritt verwenden wird. Mittels Induktion auf n: nat(bin(1)) = nat(1) = 1, nat(bin(2n)) = nat(bin(n)0) = 2nat(bin(n)) = 2n und nat(bin(2n + 1)) = nat(bin(n)1) = 2nat(bin(n)) + 1 = 2n + 1. Wobei in den letzten beiden Gleichungsketten die Induktionshypothese jeweils im letzten Schritt verwenden wird. • Mittels Induktion auf x. – Für x = 1 gilt 20 = 1 ≤ 1 < 2 = 21 . – Für x = y0 erhalten wir die Induktionshypothese 2|y|−1 ≤ nat(y) < 2|y| . Dann gilt 2|x|−1 = 2|y| = 2 · 2|y|−1 ≤ 2nat(y) < 2 · 2|y| = 2|x| und wir schließen mit 2nat(y) = nat(y0) = nat(x). – Für x = y1 erhalten wir die Induktionshypothese 2|y|−1 ≤ nat(y) < 2|y| . Dann gilt 2|x|−1 = 2|y| = 2 · 2|y|−1 ≤ 2nat(y) < 2nat(y) + 1 < 2 · 2|y| = 2|x| und wir schließen mit 2nat(y) + 1 = nat(y1) = nat(x). 1 • Zuerst zeigen wir die dass x <gradlex y auch nat(x) < nat(y) impliziert. Laut Definition von x <gradlex y gilt entweder |x| < |y| oder |x| = |y| und x <lex y. – Wenn |x| < |y| dann 2|x| ≤ 2|y|−1 . Mit Hilfe des vorherigen Punktes erhalten wir sowohl nat(x) < 2|x| als auch 2|y|−1 ≤ nat(y). – Im Fall |x| = |y| wenden wir Induktion auf diese Länge an. ∗ Dass die Länge 1 ist kann nicht auftreten (da dann x = y gelten würde). ∗ Also gibt es sowohl u und v in B als auch Bits b und c, so dass x = ub und y = vc gelten. Wenn u = v dann b = 0 und c = 1 und wir schließen mit 2nat(u) < 2nat(u) + 1 = 2nat(v) + 1. Wenn u <lex v, dann erhalten wir die Induktionshypothese nat(u) < nat(v). Also gilt nat(x) = 2nat(u) + b < 2nat(v) + c = nat(y). Um die andere Richtung zu zeigen nehmen wir nat(x) < nat(y) an. Da ≤gradlex total und wohl-fundiert ist muss eine der folgenden drei Fälle zutreffen. – x = y. Aber dann wäre nat(x) = nat(y), was der Annahme nat(x) < nat(y) widerspricht. – y <gradlex x. Wegen des vorigen Beweises würde dann nat(y) < nat(x) gelten, was wiederum der Annahme nat(x) < nat(y) widerspricht. – Also ist x <gradlex y der einzige Fall der übrig bleibt und er muss daher stets gelten. 2