Induktionsbeweise in der Informatik Der knuffige Leitfaden zum Kuscheln und Liebhaben 21. Juli 2017 Zusammenfassung Dieser Haufen Text stellt die ausformulierte Mitschrift einer Sonderveranstaltung zum Thema Induktionsbeweise von Prof. Dr. Berghammer dar. Wir werden uns die strukturelle Induktion (inklusive ihrer Anwendungen auf natürliche Zahlen und Zeichenreihen) und noethersche Induktion ansehen und dabei immer erst versuchen, das grundlegende Prinzip zu verstehen, bevor wir uns an Beispiele heran wagen. Die Beispiele stammen ebenfalls aus jener Veranstaltung. Inhaltsverzeichnis 1 Wann werden Induktionsbeweise benutzt? 1.1 Induktiv definierte Mengen . . . . . . . . . . . . . . . . . . . . . 1.2 Wann funktionieren Induktionsbeweise? . . . . . . . . . . . . . . 2 2 3 2 Strukturelle Induktion 2.1 Vollständige Induktion . . . . . . . . . . . 2.1.1 Beispiel: Summe von Potenzen . . 2.1.2 Beispiel: Zwei Funktionen . . . . . 2.2 Strukturelle Induktion über Zeichenreihen 2.2.1 Beispiel: Zeichenvorkommen zählen 4 5 6 7 9 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Noethersche Induktion 11 3.1 Beispiel: Summe von Potenzen . . . . . . . . . . . . . . . . . . . 12 3.2 Beispiel: Nieder mit undefinierten Funktionswerten . . . . . . . . 13 1 1 Wann werden Induktionsbeweise benutzt? Der erste Schritt beim Führen eines Beweises ist, festzustellen, was genau man überhaupt beweisen soll, also die Behauptung aufzustellen. Eine zu beweisende Behauptung soll im Allgemeinen für einen ganzen Haufen von Fällen gelten, zum Beispiel für alle natürlichen Zahlen. Hat man sich die zu beweisende Behauptung klargemacht, muss man überlegen, auf welche Art man die Behauptung beweisen kann. Dazu stellt man sich die Frage, unter welchen Bedingungen sie angeblich gelten soll. Abhängig davon wählt man nun die Beweismethode aus. Induktionsbeweise bieten sich potentiell dann an, wenn die Richtigkeit der Behauptung für alle Elemente aus einer Menge gezeigt werden soll. So kann man per Induktion zum Beispiel ganz wunderbar zeigen, dass eine Behauptung für alle natürlichen Zahlen gilt. Für die reellen Zahlen aber funktioniert das schon nicht mehr: um einen Induktionsbeweis führen zu können muss die Menge, für deren Elemente eine Behauptung bewiesen werden soll, also bestimmte Eigenschaften erfüllen. Welche das sind werden wir uns in der nächsten Sektion anschauen. Hat man sich entschieden, dass man einen Beweis über Induktion führen will,1 bleibt noch zu klären, welche Art von Induktionsbeweis man führen möchte. Derer gibt es grundsätzlich zwei: strukturelle Induktion und noethersche Induktion (auch starke Induktion genannt). Wann welche zum Einsatz kommt schauen wir uns später noch genau an; hier nur so viel um die Spannung bereits jetzt in’s Unermessliche zu steigern: nicht immer stehen einem beide Wege offen. 1.1 Induktiv definierte Mengen Eine Möglichkeit, Mengen zu definieren, ist, sie induktiv zu definieren. Induktiv bedeutet, dass man sich einen Startpunkt wählt von dem man losgeht und feste Regeln dafür aufstellt, wie man sich aus einem Mengenelement das nächste baut. Was das anschaulich bedeutet wird an einem kleinen, beeindruckend realitätsnahen Beispiel vielleicht am besten deutlich: Man stelle sich ein beliebiges im Bau befindliches Hochhaus vor, welches auf dem Fußboden einer beliebigen Stadt stehe und unendlich viele Stockwerke habe (wie gesagt, beeindruckend realitätsnah). Nehmen wir nun einen beliebigen Bauingenieur her, welcher dafür zuständig ist, vom Fundament des Hochhauses ausgehend jedes Stockwerk auf dem letzten aufzubauen. Wir gehen also vom Fundament des Hochhauses aus und benutzen unseren Bauingenieur, um das erste Stockwerk zu bekommen. Da uns ein Stockwerk natürlich nicht reicht,2 benutzen wir ihn wieder, um ausgehend vom ersten Stockwerk ein zweites zu bekommen. Wir könnten nun theoretisch aufhören, aber weil wir grundsätzlich sadistisch veranlagt sind (und eine gute Metapher für induktiv definierte Mengen haben wollen) lassen wir unseren Bauingeneur bis in die Unendlichkeit weitere Stockwerke liefern. Nimm das, imaginärer Bauingenieur! 1 Oder haben die Menschen, welche die Aufgabenzettel zusammenbauen, das für einen entschieden. . . 2 Gerüchten zufolge ist „Eins“ knapp weniger als „Unendlich“. 2 In der Mathematik kann das ganze im Prinzip genauso funktionieren falls wir geeignete Bauingenieure finden. Wir nehmen uns ein Fundament für unsere induktiv definierte Menge (die Basis) und definieren uns einen oder mehr Bauingeneure (die Konstruktoren), um, ausgehend von der Basis, an jedes Element der Menge heranzukommen. Auf diese Weise können wir nun zum Beispiel die Menge der natürlichen Zahlen definieren. Unsere Basis wäre die 0 (Basismenge B := {0}) und wir haben eine einzige Konstruktorfunktion, nämlich die, welche uns, ausgehend von einer natürlichen Zahl, deren Nachfolger liefert (succ(x) := x + 1). Auf diese Weise können wir alle natürlichen Zahlen erreichen indem wir von der 0 ausgehen und wiederholt unsere Konstruktorfunktion benutzen. So können wir die 3 zum Beispiel folgendermaßen darstellen: N 3 = succ(succ(succ(0))) = succ(succ(1)) = succ(2) =3 Die induktive Definition unserer natürlichen Zahlen heißt also, dass wir von unserer Basis ausgehen und uns hochhangeln können, wie beim Hochklettern an einer Leiter Sprosse für Sprosse. Wir müssen erst eine Sprosse erreicht haben bevor wir die nächste besteigen können. Ein weiteres Beispiel ist die Menge der ganzen Zahlen . Unsere Basis ist wieder die 0, und für die Konstruktorfunktionen haben wir gleich mehrere Möglichkeiten. Eine ist, zwei Funktionen succ(x) und pred(x) zu definieren (succ(x) := x + 1 und pred(x) := x − 1). Eine weitere ist, zwei Funktionen succ(x) und neg(x) zu definieren (succ(x) wie gehabt und neg(x) := −x). Z 1.2 Wann funktionieren Induktionsbeweise? Wie bereits erwähnt gibt es zwei Arten von Induktionsbeweisen: den strukturellen und den noetherschen Induktionsbeweis. Für beide gelten etwas andere Voraussetzungen. • Strukturelle Induktion: Um einen strukturellen Induktionsbeweis durchführen zu können müssen die Elemente, für die wir eine Behauptung beweisen wollen, Teil einer induktiv definierten Menge sein. Wir hangeln uns bei diesem Beweis quasi an der Struktur der Menge entlang. • Noethersche Induktion: Ein Beweis durch noethersche Induktion setzt voraus, dass die Elemente, für die wir die Behauptung zeigen wollen, Teil einer Menge sind, die noethersch geordnet ist. Eine geordnete Menge (M, ≤) heißt noethersch geordnet, wenn jede ihrer Teilmengen (abgesehen von der leeren Menge) mindestens ein minimales Element besitzt. Da die Menge natürlich Teilmenge ihrer selbst ist, heißt das, dass die Menge selbst auch mindestens ein minimales Element hat. Darauf bauen wir später unseren Beweis auf. Nun, da wir wissen, welche Beweisart wir wann anwenden können, auf zu den Beweisarten selbst. 3 2 Strukturelle Induktion Wie bereits erwähnt müssen die Elemente, über die der Beweis geführt werden soll, Teil einer induktiv definierten Menge sein. Haben wir das sichergestellt müssen wir klären, wie die Menge genau definiert ist. Bei den natürlichen Zahlen ist die Definition recht einfach, bei Zeichenketten zum Beispiel ist das aber schon etwas schwieriger und liegt nicht mehr direkt auf der Hand. Worüber wir uns klar werden müssen ist also, aus welcher Basis und mit Hilfe welcher Konstruktoren unsere Menge definiert ist. Haben wir Basis und Konstruktoren ist das Prinzip der strukturellen Induktion gar nicht so schwer. Wir fangen einfach damit an, zu zeigen, dass die Behauptung für alle Elemente der Basis gilt. Ist das so, haben wir schonmal das Fundament für unseren Beweis gelegt und können uns nun den anderen Elementen der Menge zuwenden. Wir können alle Elemente einer induktiv definierten Menge erreichen indem wir von der Basis ausgehen und unsere Konstruktoren benutzen. Was wir nun, da wir gezeigt haben, dass die Behauptung für die Basis gilt, noch zu zeigen haben, ist, dass sie auch nach Anwendung aller Konstruktoren gilt. Das tun wir, indem wir voraussetzen, dass die Behauptung für ein beliebiges Element unserer Menge gilt (da wir ja bereits gezeigt haben, dass es Elemente in der Menge gibt, für welche die Behauptung gilt – nämlich die Basis – können wir das einfach tun). Unter dieser Voraussetzung müssen wir nun nur noch zeigen, dass die Behauptung auch für das Element gilt, welches wir erhalten, wenn wir unsere Konstruktoren auf unser beliebiges Element anwenden. Dabei wenden wir natürlich nicht alle Konstruktoren gleichzeitig darauf an, sondern beweisen für jeden Konstruktor einzeln, dass die Behauptung für das damit neu konstruierte Element gilt. Wenn wir beides gezeigt haben ist die Behauptung für alle Elemente der Menge bewiesen. Für die Basis haben wir sie “zu Fuß” bewiesen und für die Konstruktoren wissen wir nun, dass die Behauptung für die Elemente gilt, die wir nach der Anwendung der Konstruktoren erhalten. Formal sieht das Prinzip der vollständigen Induktion nun folgendermaßen aus: ∀x ∈VB : P (x) nc ∀c ∈ C ∀x1 , . . . , xnc ∈ S : ( i=1 P (xi )) → P c(x1 , . . . , xnc ) ∀x ∈ S : P (x) Die erste Zeile heißt nichts anderes als dass wir unsere Behauptung, P (x) genannt, für alle Elemente x aus unserer Basis B zeigen. Dies wird als Induktionsbeginn, Induktionsanfang oder Induktionsanker bezeichnet und mit IB oder IA abgekürzt. Die zweite Zeile ist etwas unverständlicher. Sie bedeutet, dass wir uns erst einmal alle Konstruktoren zusammensuchen, mit der wir unsere Menge definieren (∀c ∈ C). Dann nehmen wir uns genau so viele Elemente beliebig aus unsere Menge, wie unser jeweiliger Konstruktor als Parameter erwartet, um ein nächstes Element zu liefern (die Anzahl der Parameter bezeichnen wir hier als nc ). Wir zeigen dann, dass immer folgendes gilt: wenn die Behauptung für all diese Elemente gilt, dann gilt sie auch für das vom Konstruktor neu gelieferte Element. 4 Das klingt vergleichsweise kompliziert. Am Beispiel der natürlichen Zahlen haben wir gesehen, dass der Konstruktor succ(x) genau einen Parameter erwartet. Wir suchen uns also ein Element x1 heraus und nehmen an, dass für dieses Element unsere Behauptung gilt. Diese Annahme wird als Induktionshypothese oder Induktionsvoraussetzung bezeichnet und mit IV abgekürzt. Dann zeigen wir, dass sie dann auch immer für die Zahl gilt, welche wir erhalten, wenn wir unseren Konstruktor anwenden, hier also das Element succ(x1 ). Dies wird als Induktionsschluss bezeichnet und mit IS abgekürzt. Haben wir gezeigt, dass die beiden Zeilen über dem Strich (auch Oberformeln oder Prämissen genannt) wahr sind, ist die Zeile unter dem Strich (auch Unterformel oder Konklusion) auch wahr. Und die Unterformel ist genau das, was wir beweisen wollten, nämlich, dass unsere Behauptung P (x) für alle x aus unserer Menge S gilt. So, dann gleich mal auf zu zwei Anwendungen von struktureller Induktion. 2.1 Vollständige Induktion Haben wir entschieden, dass wir zeigen wollen, dass eine Behauptung für alle Elemente der natürlichen Zahlen gilt, können wir herangehen und einen strukturellen Induktionsbeweis über die natürlichen Zahlen führen (wie bereits erwähnt sind die natürlichen Zahlen ja induktiv definiert) und das ganze eine vollständige Induktion nennen.3 Wir müssen uns nun zunächst klarmachen, welche Basis und Konstruktoren wir haben. Letzteres ist einfach, die natürlichen Zahlen kommen mit einer Konstruktorfunktion aus (die bereits erwähnte Funktion succ(x) := x + 1). Bei der Basis müssen wir unterscheiden ob wir uns in der Welt der Informatik oder der Mathematik bewegen. In der Informatik ist die Basis der natürlichen Zahlen üblicherweise die 0, in der Mathematik meist die 1. Wir entscheiden uns hier selbstverständlich für die Informatik und nehmen als Basis die 0 an. Das Prinzip der strukturellen Induktion, angewendet auf die natürlichen Zahlen, sieht also folgendermaßen aus: P (0) ∀x ∈ N : P (x) → P (x + 1) ∀x ∈ N : P (x) Wir können und müssen dieses Prinzip manchmal ändern und an unser vorliegendes Problem anpassen. Es könnte zum Beispiel vorkommen, dass eine bestimmte Behauptung erst ab einer bestimmten Zahl gilt, was eine entsprechende Anpassung der Basismenge nach sich zieht. Oder wir wollen zeigen, dass eine Behauptung nur für ungerade Zahlen gilt, was für eine Basismenge B = {1} und eine Konstruktorfunktion succodd (x) = x + 2 sprechen würde. Man beachte, dass wir dann nicht mehr über die natürlichen Zahlen selbst, sondern nur noch über eine Teilmenge induzieren. Solange wir die aber auch induktiv definiert bekommen, ist alles prima. 3 Der Hauptgrund dafür ist natürlich, dass wir grundsätzlich faul sind und „vollständige Induktion“ kürzer ist als „strukturelle Induktion über natürliche Zahlen“. 5 2.1.1 Beispiel: Summe von Potenzen Beh.: ∀n ∈ N∀x ∈ R \ {1} : n X xi = i=0 xn+1 − 1 x−1 Zunächst müssen wir uns aus dieser Behauptung unser P zusammensuchen. Da die Aussage für alle reellen Zahlen (außer 1) gelten soll, könnten wir schauen, ob wir den Beweis nicht über alle reelen Zahlen (außer 1) führen wollen. Dummerweise sind die reellen Zahlen (auch mit 1) nicht induktiv aufgebaut, also dürfte das etwas schwierig werden. Praktischerweise soll die Aussage aber auch für alle natürlichen Zahlen gelten, also entscheiden wir uns einfach für eine vollständige Induktion. P (n) := ∀x ∈ R \ {1} : n X xi = i=0 xn+1 − 1 x−1 Nun, wo wir unsere Behauptung haben, aufi-auf zum Beweis! Bew.: durch vollständige Induktion. IA: n = 0. Zu zeigen ist P (0), das heißt P (0) = ∀x ∈ R \ {1} : 0 X xi = i=0 Sei also x ∈ x0+1 − 1 x−1 R \ {1} beliebig. Dann: 0 X xi = x0 = 1 i=0 Nun nehmen wir uns die rechte Seite der Gleichung vor, und schauen, ob sie auch 1 wird. x0+1 − 1 x−1 = =1 x−1 x−1 Damit haben wir gezeigt, dass beide Seiten der Gleichung für n = 0 gleich sind und die Behauptung für die Basis der natürlichen Zahlen gilt. Weiter geht’s mit dem Induktionsschluss. IV: Sei n ∈ N und gelte P (n). IS: P (n) → P (n + 1). Zu zeigen: P (n + 1) = ∀x ∈ R \ {1} : n+1 X i=0 6 xi = xn+1+1 − 1 x−1 Sei also x ∈ R \ {1} beliebig. Dann: n+1 X xi = i=0 n X xi + xn+1 i=0 n+1 −1 + xn+1 x−1 xn+1 − 1 + xn+1 · (x − 1) = x−1 n+1 x − 1 + xn+1+1 − xn+1 = x−1 xn+1+1 − 1 = x−1 IV = x Was haben wir hier getan? Zunächst haben wir den letzten Summanden aus der Summe herausgezogen und explizit hingeschrieben. Damit haben wir die Summe auf i = 0 bis n zurückgeführt. Und nun kommt das interessante beim Induktionsschluss: Wir setzen voraus, dass P (n) gilt und P (n) sagt in diesem Fall etwas darüber aus, was Pn xn+1 −1 i i=0 x ist, nämlich x−1 . Und genau das dürfen wir nun für unsere Summe einsetzen. Der Rest ist nur noch einfaches Ausrechnen. Und damit sind wir auch schon fertig. 2.1.2 Beispiel: Zwei Funktionen Es seien die folgenden beiden Funktionen gegeben: 1 :x=0 f : → , f (x) = 2 · f (x − 1) : x 6= 0 y :x=0 g : × → , g(x, y) = g(x − 1, 2y) : x 6= 0 N N N N N Beh.: N : f (x) = g(x, 1) Hier haben wir eine Behauptung für alle x ∈ N. Das heißt, hier brauchen ∀x ∈ wir gar nicht lange überlegen was wir tun, da sich die vollständige Induktion förmlich aufzwingt.4 Damit können wir auch schon unser P aufstellen: P (x) := f (x) = g(x, 1) Bew.: durch vollständige Induktion. IA: x = 0. Zu zeigen ist P (0), das heißt P (0) = (f (0) = g(0, 1)) Dass P (0) wahr ist sieht man sofort an den Definitionen der Funktionen. f (0) ist 1, und g(0, 1) liefert ebenfalls 1. Also weiter. IV: Sei x ∈ 4 Allein N und gelte P (x). schon, weil dieses Beispiel im Abschnitt über vollständige Induktion steht. 7 IS: P (x) → P (x + 1). Zu zeigen: P (x + 1) = (f (x + 1) = g(x + 1, 1)) Aufi-auf: IV f (x + 1) = 2 · f (x) = 2 · g(x, 1) Da wir an dieser Stelle mit unseren Definitionen erstmal nicht weiterkommen schauen wir einfach mal, ob wir die rechte Seite unserer Behauptung so umformen können, dass wir auf das Ergebnis kommen, das wir gerade erhalten haben: g(x + 1, 1) = g(x, 2 · 1) An dieser Stelle kommen wir schon wieder nicht weiter. Wir müssen also irgendwie zeigen, dass gilt 2 · g(x, 1) = g(x, 2 · 1) Da das nicht sofort aus den Definitionen folgt müssen wir uns an dieser Stelle etwas einfallen lassen. Und weil wir so viel Spaß daran haben, zeigen wir die Gleichheit der beiden Terme für alle x (wir erinnern uns, dass wir in unserer Induktionsvoraussetzung ein beliebiges x herausgegriffen haben) mit Hilfe einer vollständigen Induktion. Beh.: Wir verallgemeinern unser Problem einfach ein wenig und stellen die folgende Behauptung auf: ∀x ∈ N∀y ∈ N : 2 · g(x, y) = g(x, 2y) Da wir dies für alle x zeigen wollen ergibt sich unser P zu folgendem: P (x) = ∀y ∈ : 2 · g(x, y) = g(x, 2y) N Fangen wir also an, indem wir das ganze in unserem Induktionsanfang für x = 0 zeigen. Bew.: durch vollständige Induktion. IA: x = 0 Zu zeigen ist P (0), das heißt P (0) = ∀y ∈ Sei y ∈ N : 2 · g(0, y) = g(0, 2y) N also beliebig. Dann: 2 · g(0, y) = 2y = g(0, 2y) Nun, da wir die Behauptung für x = 0 gezeigt haben, auf zum Induktionsschluss. IV: Sei x ∈ und gelte P (x). IS: P (x) → P (x + 1). Zu zeigen: N P (x + 1) = ∀y ∈ Sei y ∈ N : 2 · g(x + 1, y) = g(x + 1, 2y) N also beliebig. Dann: IV Def 2 · g(x + 1, y) = 2 · g(x, 2y) = g(x, 2 · 2y) = g(x + 1, 2y) 8 Um einzusehen, dass die letzte Gleichheit gilt, wende man die Definition von g auf den rechten Teil an und bemerke, dass man auf wundersame Weise beim linken Teil herauskommt. Toll! Nun, da wir die Gültigkeit unserer zweiten Behauptung auch gezeigt haben, zurück zu unserer Hauptinduktion. Wir haben nun gezeigt, dass folgendes gilt: 2 · g(x, 1) = g(x, 2 · 1) Damit haben wir unsere Behauptung also bewiesen und sind fertig. 2.2 Strukturelle Induktion über Zeichenreihen Haben wir die Gültigkeit einer Behauptung für Zeichenreihen zu zeigen müssen wir die allgemeine strukturelle Induktion auf Zeichenreihen anwenden. Zeichenreihen kann man durchaus induktiv definieren: die Basis enthält lediglich die leere Zeichenreihe (B = {ε}) und als Konstruktoren haben wir für jeden möglichen Buchstaben a aus einer Menge von Buchstaben A die Möglichkeit, aus ihm und einem bereits existierenden Wort w ∈ A∗ ein neues Wort zu bauen: pref ixa (w) = a&w postf ixa (w) = w&a Es gibt hier zwei Möglichkeiten: entweder, wir hängen a von links an w oder von rechts. Es genügt, sich für eine der beiden (äquivalenten) Möglichkeiten zu entscheiden. Im Folgenden entscheiden wir uns einfach für das Anfügen von links (pref ixa (w)). Nun, da wir eine induktive Definition haben, können wir strukturelle Induktion also benutzen. Deren Anwendung sieht in diesem Fall folgendermaßen aus: P (ε) ∀a ∈ A, ∀w ∈ A∗ : P (w) → P pref ixa (w) ∀w ∈ A∗ : P (w) Die Basis der Zeichenreihen ist immer die leere Zeichenreihe, daher zeigen wir die Gültigkeit der Behauptung zunächst für jene (erste Zeile). Nun haben Zeichenreihen aber nicht nur einen Konstruktor: es gibt immer genau so viele Konstruktoren, wie wir Zeichen in unserem Zeichenvorrat A haben. Hätten wir einen Zeichenvorrat von 26 Buchstaben hätten wir auch 26 Konstruktoren, nämlich für jedes Zeichen a ∈ A einen Konstruktor pref ixa (w). Bei der zweiten Zeile nehmen wir an, dass die Behauptung für eine beliebige Zeichenreihe gilt und zeigen dann, dass sie immer noch gilt, wenn wir einen unserer Konstruktoren auf die Zeichenreihe anwenden. 2.2.1 Beispiel: Zeichenvorkommen zählen Wir wollen uns nun eine Funktion zusammenbauen, welche sich induktiv durch eine Zeichenreihe wühlt und das Vorkommen eines bestimmten Zeichens in der Zeichenreihe zählt: 9 anz : A∗ × A → N anz(ε, x) = 0 1 + anz(w, x) : x = a anz(a&w, x) = anz(w, x) : x 6= a Soll die Funktion also das Vorkommen eines bestimmten Zeichens in einer leeren Zeichenreihe bestimmen gibt sie 0 zurück, da kein Zeichen in der leeren Zeichenreihe vorhanden ist. Wird sie dagegen auf eine nichtleere Zeichenreihe angewandt (welche wir immer darstellen können mit Hilfe eines unserer Konstruktoren), prüft sie, ob das erste Zeichen gleich dem Zeichen ist, nach dem wir suchen. Ist das der Fall, addiert sie 1 zum Vorkommen des Zeichens im Rest der Zeichenreihe. Wenn nicht gibt sie die Anzahl der Vorkommen des Zeichens in der Restzeichenreihe zurück. An dieser Stelle zahlt sich aus, dass wir uns weiter oben rein zufällig für den pref ixa (w)-Konstruktor entschieden haben: er passt passgenau zur Art und Weise, wie anz sich durch eine Zeichenreihe wühlt. Damit wir gleich etwas zu beweisen haben definieren wir uns jetzt noch eine Funktion conc : A∗ × A∗ → A∗ , welche zwei beliebige Zeichenreihen aneinander hängt: conc(ε, t) = t conc(a&s, t) = a&conc(s, t) Also, Zeit für eine Behauptung, die wir beweisen können. Beh.: ∀s ∈ A∗ ∀t ∈ A∗ ∀x ∈ A : anz conc(s, t), x = anz(s, x) + anz(t, x) Daraus müssen wir uns nun erstmal wieder unser P heraussuchen. Wenn wir uns die Definition der conc-Funktion ansehen, entdecken wir folgende Zeile: conc(a&s, t) = a&conc(s, t) Die Funktion wird also über den induktiven Aufbau des ersten Arguments definiert. Und genau das machen wir uns zunutze um die Induktion zu führen: P (s) := ∀t ∈ A∗ ∀x ∈ A : anz conc(s, t), x = anz(s, x) + anz(t, x) Bew.: durch strukturelle Induktion. IA: s = ε. Zu zeigen ist P (ε), das heißt P (ε) = ∀t ∈ A∗ ∀x ∈ A : anz conc(ε, t), x = anz(ε, x) + anz(t, x) Seien also t ∈ A∗ und x ∈ A beliebig. Dann: anz conc(ε, t), x = anz(t, x) (Definition von conc) = 0 + anz(t, x) = anz(ε, x) + anz(t, x) 10 (Definition von anz) Damit haben wir die Gültigkeit unserer Behauptung für die Basis der Zeichenreihen, die leere Zeichenreihe, bewiesen. Auf zum Induktionsschluss. IV: Sei s ∈ A∗ und gelte P (x). IS: Zu zeigen ist P (s) → P (a&s) für alle a ∈ A und s ∈ A∗ . Seien also t ∈ A∗ und x ∈ A beliebig. Dann: anz conc(a&s, t), x = anz a&conc(s, t), x 1 + anz conc(s, t), x :x=a = anz conc(s, t), x : x 6= a 1 + anz(s, x) + anz(t, x) : x = a IV = anz(s, x) + anz(t, x) : x 6= a Die erste Zeile folgt aus der Definition der conc-Funktion. Die zweite Zeile ist die Anwendung der zweiten Zeile der Definition der anzFunktion. Bei der dritten Zeile nun kommt wieder mal unsere Induktionsvoraussetzung ins Spiel. Von der ersten auf die zweite Zeile haben wir unsere Gleichung auf eine Form gebracht, die es uns erlaubt, unsere Induktionsvoraussetzung anzuwenden. Indem wir das getan haben haben wir schließlich gezeigt, dass unsere Behauptung für eine beliebige Zeichenreihe gilt und damit den Beweis abgeschlossen. 3 Noethersche Induktion Die noethersche Induktion ist vom Prinzip her ähnlich wie die strukturelle Induktion. Es gelten lediglich etwas andere Voraussetzungen. Um einen Beweis per noetherscher Induktion führen zu können muss die Variable, über die wir den Beweis führen wollen, Teil einer noethersch geordneten Menge sein. Haben wir das sichergestellt, suchen wir uns die minimalen Elemente heraus und beweisen unsere Behauptung zunächst für jene. Dann nehmen wir uns ein beliebiges Element der Menge und dürfen annehmen, dass die Behauptung für alle kleineren Elemente der Menge gilt (Induktionsvoraussetzung oder Induktionshypothese). Dann zeigen wir, dass die Behauptung für das Element unter den gegebenen Voraussetzungen gilt. Formal sieht das Prinzip der noetherschen Induktion für eine Menge M mit minimalen Elementen B ⊆ M wie folgt aus: ∀x ∈ B : P (x) ∀x ∈ M : ∀y ∈ M : y < x → P (y) → P (x) ∀x ∈ M : P (x) Vergleichen wir die Definition mal mit der Definition der strukturellen (und damit auch der vollständigen) Induktion. Beiden ist gemeinsam, dass wir die Behauptung zunächst für alle Elemente einer Basis explizit zeigen. Danach unterscheiden sie sich allerdings: bei struktureller Induktion hangeln wir uns an den Konstruktoren entlang. Am Beispiel der natürlichen Zahlen nehmen wir uns beispielsweise eine Zahl heraus und nehmen an, dass unsere Behauptung für die Zahl gilt. Dann zeigen wir, dass unsere Behauptung dann auch für die 11 Zahl gelten muss, die wir bekommen, wenn wir den Konstruktor der natürlichen Zahlen anwenden. Wir können dabei nur auf die Zahl zurückgreifen, die wir uns herausgegriffen haben. Bei der noetherschen Induktion ist unsere Induktionsvoraussetzung in gewisser Weise stärker (weswegen einige diese Art der Induktion auch als starke Induktion bezeichnen). Hier können wir bei unserem Beweis nicht nur auf die herausgegriffene Zahl zurückgreifen, sondern auch noch alle kleineren Zahlen. Wann sollte man noethersche Induktion benutzen? Nun, immer dann, wenn wir einen gegebenen Fall auf „kleinere“ Fälle zurückführen können, aber nicht wissen, wie viel kleiner sie tatsächlich sind. 3.1 Beispiel: Summe von Potenzen Wir wollen an dieser Stelle noch einmal das erste Beispiel zur vollständigen Induktion aufgreifen und den Beweis zum Vergleich mit einer noetherschen Induktion auf ( , ≤) führen. Das minimale Element ist die 0. N Beh.: ∀n ∈ N∀x ∈ R \ {1} : n X xi = i=0 xn+1 − 1 x−1 Analog zum Beispiel der vollständigen Induktion definieren wir uns unser P wie folgt: P (n) := ∀x ∈ R \ {1} : n X xi = i=0 xn+1 − 1 x−1 Nun wo wir unser P haben können wir mit dem Führen des Beweises beginnen. Bew.: durch noethersche Induktion. IA: n = 0 (also minimal). Zu zeigen ist P (0), das heißt P (0) = ∀x ∈ R \ {1} : 0 X xi = i=0 x0+1 − 1 x−1 Der Beweis der Induktionsbehauptung ist analog zum Beispiel im Abschnitt über vollständige Induktion. IA: Sei n ∈ N>0 und gelte P (y) für alle y ∈ N<n. IS: Zu zeigen: Dann gilt auch P (n), das heißt: P (n) = ∀x ∈ R \ {1} : n X i=0 12 xi = xn+1 − 1 x−1 Sei also x ∈ R \ {1} beliebig. Dann: n X xi = i=0 n−1 X xi + xn i=0 n−1+1 −1 + xn x−1 xn−1+1 − 1 + xn · (x − 1) = x−1 xn − 1 + xn+1 − xn = x−1 xn+1 − 1 = x−1 IV = x Zunächst haben wir versucht, unsere Summe aufzuteilen, nämlich in die Summe von xi von 0 bis n − 1 und xn . Nun haben wir bei der Summe eine obere Grenze n − 1, die kleiner ist als n. Damit können wir unsere Induktionsvoraussetzung einsetzen, welche nämlich sagt, dass unsere Behauptung für alle Werte gilt, die kleiner sind als n. Der Rest ist nur noch das Vereinfachen der Brüche. Am Ende bekommen wir genau die rechte Seite unserer Behauptung heraus und haben jene damit bewiesen. Da wir die Summe bis n auf die Summe bis n − 1 zurückführen konnten, hätten wir auch einfach weiter vollständige Induktion verwenden können. Der Punkt ist aber, dass wir bei noethersch geordneten Mengen genauso gut noethersche Induktion anwenden können weil die Induktionsvoraussetzung dort nicht schwächer, sondern stärker ist. 3.2 Beispiel: Nieder mit undefinierten Funktionswerten Sei folgende Funktion gegeben: f: N×N→N f (0, y) = 1 (1) f (x + 1, 0) = f (x, 1) (2) f (x + 1, y + 1) = f x, f (x + 1, y) (3) Was wir hier haben ist eine Funktion, welche zwei Argumente übergeben bekommt. Bevor wir nun weitermachen, brauchen wir erst einmal unsere Behauptung die wir beweisen wollen. Beh.: ∀x, y ∈ N : f (x, y) 6= undef Das bedeutet, wir behaupten, dass es keine einzige Kombination von x und y gibt, für welche der Funktionswert undefiniert ist. Wir haben also eine Behauptung, welche sich auf zwei natürliche Zahlen bezieht, über welche die Funktion auch definiert wird. Wir müssen also die Gültigkeit 13 der Aussage über ein Zahlenpaar beweisen. Zur Verdeutlichung könnten wir die Behauptung auch folgendermaßen schreiben: N × N : f (x, y) 6= undef ∀hx, yi ∈ Unser P ergibt sich damit zu folgendem: P (hx, yi) := f (x, y) 6= undef Um die Behauptung mit einem noetherschen Induktionsbeweis beweisen zu können, benötigen wir erst einmal eine Ordnung auf hx, yi. Was wir nun tun können, ist, uns die beiden Zahlen als Zeichen vorzustellen und das Paar hx, yi als Zeichenreihe. Dann wenden wir auf die Menge aller Paare hx, yi ∈ × folgende Ordnung an, welche erst nach der ersten und dann nach der zweiten Komponente ordnet (wie es auch eine lexikographische Ordnung tun würde): N N hx, yi ≤ hu, vi ⇐⇒ (x < u) ∨ (x = u ∧ y ≤ v) Im Klartext bedeutet das folgendes: Ein Paar hx, yi ist genau dann kleiner als oder gleich einem Paar hu, vi wenn die rechte Seite der Äquivalenz wahr ist. Die rechte Seite unterscheidet erst einmal zwischen zwei Fällen. Wenn das x kleiner als das u ist, soll hx, yi auf jeden Fall kleiner als oder gleich dem Paar hu, vi sein. Ist x = u schauen wir uns das zweite Element der Paare an. Wenn y kleiner als oder gleich v ist, ist hx, yi kleiner als oder gleich hu, vi, ansonsten nicht. Diese Beziehungen kann man sich auch anschaulich vorstellen indem man sich Paare von Ziffern denkt, welche die Zahlen von 0 bis 99 darstellen sollen. Wollen wir feststellen, ob 53 ≤ 32 ist schauen wir zunächst auf die erste Ziffer der beiden Zahlen. Die 5 ist weder kleiner als noch gleich 3, daher kann nicht 53 ≤ 32 sein. Schauen wir uns an, ob dagegen 32 ≤ 53 gilt stellen wir fest, dass 3 < 5 ist und damit auf jeden Fall 32 ≤ 53 sein muss. Bei 53 ≤ 54 ist 5 = 5, daher schauen wir uns die zweite Ziffer an. Da 3 ≤ 4 ist 53 ≤ 54. N × N, ≤) ist h0, 0i. Das minimale Element von ( Bew.: durch noethersche Induktion. IA: hx, yi = h0, 0i (also minimal). Zu zeigen ist P (h0, 0i), das heißt P (h0, 0i) = f (0, 0) 6= undef Da laut der Definition von f gilt f (0, 0) = 1 6= undef , ist der Induktionsbeginn schnell abgehakt. Auf zum Induktionsschluss, der bei diesem Beweis etwas komplexer ist als bei den bisher erbrachten Beweisen. N × N mit hx, yi > h0, 0i und gelte P (hu, vi) für alle N N mit hu, vi < hx, yi.5 IV: Sei hx, yi ∈ hu, vi ∈ × 5 Eine gute Verständnisübung ist, herauszufinden, an welchen Stellen des Beweises wir diese starke Voraussetzung brauchen statt nur auf ein Element der Menge zurückzugreifen, wie bei struktureller Induktion. 14 IS: Zu zeigen: Dann gilt auch P (hx, yi), das heißt: P (hx, yi) = f (x, y) 6= undef Beobachte zunächst, dass hx, yi > h0, 0i impliziert, dass x 6= 0 oder y 6= 0. Wir haben jetzt zwei Fälle: y = 0 (und damit x 6= 0) und y 6= 0, also machen wir eine kleine Fallunterscheidung. Fall 1: y = 0. Dann ist x 6= 0 und es gilt: f (x, 0) = f (x − 1, 1) IV 6= undef Wenn wir uns die Definition unserer Funktion einmal anschauen, gibt es eine Zeile, die etwas darüber aussagt, was passiert, wenn y = 0 ist, nämlich die zweite. Die können wir hier ganz wunderbar anwenden und indem wir unser x in die Funktionsdefinition einsetzen. Da in der Funktionsdefinition auf der linken Seite für das erste Argument x + 1 statt x steht und auf der rechten Seite vom x + 1 eins abgezogen wird müssen wir sicherstellen, dass unser x größer ist als null, was aber gilt, da y = 0 ist. Wir kommen auf diese Weise also auf f (x, 0) = f (x − 1, 1), der Funktionswert von f für das Paar hx, 0i wird also auf den Funktionswert des Paares hx − 1, 1i zurückgeführt. Laut unserer Ordnung gilt nun hx, 0i ≤ hx − 1, 1i, da x < x − 1 ist. Damit greift mal wieder unsere Induktionsannahme, die besagt, dass die Behauptung für alle hu, vi < hx, yi wahr ist, und damit wissen wir, dass der Funktionswert von hx − 1, 1i nicht undefiniert ist. Kommen wir nun also zum zweiten Fall. Fall 2: y 6= 0. Wenn y nicht 0 ist haben wir für unser x zwei Möglichkeiten: x = 0 und x 6= 0. Also machen wir eine weitere Fallunterscheidung: Fall 1: x = 0. Dann: f (0, y) = 1 6= undef Dies folgt aus der ersten Zeile unserer Funktionsdefinition. Fall 2: x 6= 0. Dann: f (x, y) = f x − 1, f (x, y − 1) Wir betrachten nun einmal f (x, y − 1). Da hx, y − 1i ≤ hx, yi, da y−1 ≤ y, ist der Funktionswert von f (x, y−1) nach der Induktionsvoraussetzung nicht undefiniert. Definieren wir uns nun ein c mit c := f (x, y − 1) können wir dies in die obige Gleichung einsetzen und erhalten: f (x, y) = f (x − 1, c) f (x−1, c) ist nach der Induktionsvoraussetzung also ebenfalls nicht undefiniert, da hx − 1, ci ≤ hx, yi da x − 1 < x. Damit haben wir nun insgesamt bewiesen, dass unsere Behauptung gilt. 15