Math & Logik 2008W Listen Länge Induktion Rekursion Anhängen Spiegeln Verkettung Mathematik und Logik für WIN Assoziativität Neutrales Element Homomorphismus Kürzungsregeln 2008W Franz Binder Institut für Algebra Johannes Kepler Universität Linz Vorlesung im 2008W http://www.algebra.uni-linz.ac.at/Students/Win/ml Math & Logik 2008W Inhalt Listen Länge Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus Kürzungsregeln Listen Länge Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus Kürzungsregeln Math & Logik 2008W Listen Listen Länge I Durch Hintereinanderreihung von Objekten entsteht eine Liste. I Ist Σ eine Menge, dann bezeichne Σ∗ die Menge der Listen über dem Grunddatentyp Σ. I Die einfachste Liste ist die leere Liste: ∈ Σ. I Ist α ∈ Σ und u ∈ Σ∗ , dann ist auch αu ∈ Σ∗ . Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus Kürzungsregeln Beispiel Seien a, b, c, d ∈ Σ. , a, a(b), a(b(c(d))), d(c), b(c(c(a(b)))) sind Listen. Notation Rechts-assoziative Klammerung: αβu = α(βu). Das Zeichen für die leere Liste ist oft entbehrlich. Beispiel , a, ab, abcd, dc, bccab. Oder noch einfacher: , a, ab, abcd, dc, bccab. Math & Logik 2008W Länge einer Liste Listen Länge I Durch die Länge wird jeder Liste eine Zahl zugeordnet. I Notation: |u|. I Die leere Liste hat Länge 0. I Fügt man einer Liste ein Element hinzu, dann wird sie um 1 länger. I Es gelten daher die Gleichungen: Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus Kürzungsregeln || = 0 ∀ ∀ α∈Σ u∈Σ∗ I I |αu| = 1 + |u| (len-nil), (len-pre). Frage: Ist die Länge damit ordentlich definiert? Beispiel: |abcc| = |a(b(c(c)))| = 1 + |b(c(c))| = 1 + (1 + |c(c)|) = 1+(1+(1+|c|)) = 1+(1+(1+(1+||))) = 1+(1+(1+(1+0))) = 4 Math & Logik 2008W Listen-Induktion Listen Länge I Induktion Rekursion I Anhängen Spiegeln Verkettung Assoziativität I Neutrales Element Homomorphismus Kürzungsregeln I I Die Länge ist für die leere Liste definiert. Ist die Länge für eine Liste u definiert, dann auch für jede Liste der Form αu. Jede Liste läßt sich aus der leeren Liste durch Hinzufügen von Elementen konstruieren. Daher ist die Länge für jede Liste definiert. Die Schlußfolgerung erfolgte nach folgendem Schema: P() ∀ ∀ P(u) =⇒ P(au) a∈Σ u∈Σ∗ ∀ P(w) List E w∈Σ∗ I I Dabei ist P eine beliebige Eigenschaft für Listen. Dieses Induktionsprinzip bedeutet gerade, daß jede Liste durch die beiden Konstruktoren, leere Liste und Voranstellen, konstruiert werden kann. Es schließt insbesondere aus, daß Listen unendlich lange sein könnten. Math & Logik 2008W Listen-Rekursion Listen Länge I |abcc| = 4, |abc| = 3. Wenn abcc = abc, dann ist 4 = 3. I Dann wäre die Länge nicht wohldefiniert. I Listen sollten nur dann gleich sein, wenn sie gleich konstruiert wurden. I Dies wird durch das folgende Rekursionsprinzip garantiert: Für jede Menge X , jedes x ∈ X und jedes ϕ : Σ → Σ∗ → X → X definiert das Gleichungssystem I Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus Kürzungsregeln f () = x ∀ ∀ α∈Σ u∈Σ∗ (f -nil), f (αu) = α ϕ f (u) u I genau eine Funktion f : Σ∗ → X . − x. f (u) = u ← ϕ I − x = a ϕ b ϕ c ϕ x. f (abc) = abc ← ϕ bc c (f -pre). Math & Logik 2008W Listen Länge Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus Append – Hinten anhängen Definition Satz Analog zum Voranstellen definieren wir eine Funktion die ein Element hinten anhängt, z.B. (abcd)b = abcdb. Sie sollte erfüllen: Es gilt ∀ Kürzungsregeln I I Es sei β ∈ Σ. Wir müssen zeigen: ∀ |wβ| = 1 + |w|. w∈Σ∗ β∈Σ (app-nil), I Dies erledigen wir gemäß dem Induktionsprinzip: I ∀ ∀ β∈Σ α∈Σ ∀ u∈Σ∗ (αu)β = α(uβ) I (app-pre). Bemerkung In αuβ brauchen wir keine Klammern. |wβ| = 1 + |w| . Beweis. β = β ∀ ∀ β∈Σ w∈Σ∗ Wir zeigen, daß diese Eigenschaft hat. Und wir zeigen, daß wenn ein u ∈ Σ∗ diese Eigenschaft hat, dann auch jedes αu. Math & Logik 2008W Induktionsbeweis: ∀ |wβ| = 1 + |w| ∗ w∈Σ Listen Länge Induktion I Rekursion Anhängen Induktionsanfang: Wir zeigen |β| = 1 + ||: Spiegeln Verkettung |β| = |β| Assoziativität Neutrales Element = 1 + || Homomorphismus (app-nil) (len-pre). Kürzungsregeln I Induktionsschritt: Wir nehmen nun für ein u ∈ Σ∗ die Induktionshypothese |uβ| = 1 + |u| an. Für jedes α ∈ Σ zeigen wir nun |(αu)β| = 1 + |αu|: |(αu)β| = |α(uβ)| (app-pre) = 1 + |uβ| = 1 + (1 + |u|) (len-pre) (IH) = 1 + |αu| (len-pre-R). Math & Logik 2008W Listen Länge Induktion Rekursion Anhängen Spiegeln reversion - Spiegelung Definition Beweis. Die Spiegelung (reversion) e ∈ Σ∗ → Σ∗ läßt sich rekursiv definieren durch I e = (rev-nil), =e β = β αu f =u eα (rev-pre). = β (app-nil) = βe (rev-nil-R); Verkettung Assoziativität Neutrales Element Homomorphismus Kürzungsregeln f = βe IA: Zu zeigen β : f f β = β (app-nil) Satz Für α ∈ Σ, u ∈ Σ∗ gilt f = βe uβ u (rev-app). I (rev-pre) (rev-nil) f = βe IS mit IH: uβ u; ^ Zu zeigen: (αu)β = βe(αu): ^ = α(uβ) ^ (app-pre) (αu)β Satz f = uβα e u e = u (rev-inv). = (βe u )α (IH) = β(e u α) (app-pre) Satz |e u | = |u| (len-rev). = β αu f (rev-pre) (rev-pre-R). Math & Logik 2008W Listen Länge Induktion Spiegelung und Allaussagen Satz Sei P eine Eigenschaft für Listen. Dann gilt Rekursion Anhängen ∀ P(u) ⇐⇒ Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus u∈Σ∗ Beweis. I Kürzungsregeln I Von links nach rechts: Annahme: ∀ P(u); zu zeigen: u ). ∀ P(e u∈Σ∗ u ). ∀ P(e u∈Σ∗ u∈Σ∗ u∈Σ u∈Σ Weitere Anname: u ∈ Σ∗ ; nur noch zu zeigen: P(e u ). Es gilt u e ∈ Σ∗ ; wir wenden daher die erste Annahme auf u e an und erhalten somit P(e u ), was zu zeigen war. Von rechts nach links: Annahme: ∀ P(e u ); zu zeigen: ∀ P(u). ∗ ∗ Weitere Annahme: u ∈ Σ∗ ; nur noch zu zeigen: P(u). Es gilt u e ∈ Σ∗ ; wir wenden daher die erste Annahme auf u e an e und erhalten somit P(u e). e e Da u e = u, ist auch P(u e) ⇐⇒ P(u), insbesondere somit e P(u e) =⇒ P(u), woraus unser Beweisziel unmittelbar folgt. Math & Logik 2008W Listen Länge Induktion Rekursion Induktion von hinten Satz Sei P ∈ Σ∗ → P eine Eigenschaft. Dann gilt das Induktionsprinzip Anhängen P() Spiegeln Verkettung ∀ Assoziativität ∀ P(w) Neutrales Element Homomorphismus Kürzungsregeln ∀ P(w) =⇒ P(wβ) β∈Σ w∈Σ∗ w∈Σ∗ Beweis. Wir setzen die beiden Prämissen voraus. Statt der Konklusion zeigen wir die dazu äquivalente Aussage ∀ P(e w ). Mit der Eigenschaft w∈Σ∗ ∼ P (w) : ⇐⇒ P(e w) ∀ P ∼ (w) schreiben und mit Induktion beweisen. IA: Wir zeigen P (). Gemäß obiger Definition, P ∼ () ⇐⇒ P(e ), und wegen e = , auch P(e ) ⇐⇒ P(). Letzteres ist in der Voraussetzung. IS mit IH: P ∼ (u) (äquivalent zu P(e u )). Zu zeigen haben wir P ∼ (αu), das ist P(αu), f also P(e u α). Die Voraussetzung liefert (wir setzen u e für w ein): P(e u ) =⇒ P(e u α). Mit IH sind wir fertig. läßt sich dies als w∈Σ∗ ∼ Math & Logik 2008W Palindrom Listen Länge Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Definition Eine Liste ist ein Palindrom, kurz PD(u), wenn sie von vorne und hinten gelesen gleich erscheint. Dies läßt sich induktiv durch die folgenden Introduktionsregeln ausdrücken: Neutrales Element Homomorphismus Kürzungsregeln PD() α∈Σ PD(α) u ∈ Σ∗ PD(u) α ∈ Σ PD(αuα) Die zugehörige Eliminationsregel lautet dann P() ∀ P(α) α∈Σ ∀ u∈Σ∗ PD(u) ∀ ∀ P(αuα) u∈Σ∗ α∈Σ P(u) P(u) für eine beliebige Eigenschaft P ∈ Σ∗ → P. Satz ∀ u∈Σ∗ PD(u) ⇐⇒ u = u e. Math & Logik 2008W Verkettung Listen Länge I Wir definieren die Verkettung von Listen, eine binäre Verknüpfung von Listen, welche die Elemente einfach aneinanderreiht, z.B. (ab)(cbb) = abcbb. I Sie sollte für alle u, v ∈ Σ∗ und α ∈ Σ diese beiden Gleichungen erfüllen: Induktion Rekursion Anhängen Spiegeln Verkettung Assoziativität Neutrales Element Homomorphismus Kürzungsregeln v = v (αu)v = α(uv) I (cat-nil), (cat-pre). Gemäß Rekursionsprinzip gibt es genau eine Funktion mit diesen Eigenschaften. Beispiel (abc)(cbb) c(b(b)) = a( b(c) c(b(b)) ) = = a(b(c)) a(b( c c(b(b)) )) = a(b(c( c(b(b)) ))) = a(b(c(c(b(b))))) = abcbb. Math & Logik 2008W Assoziativität Listen Länge Induktion Rekursion Anhängen Satz Die Listenverkettung ist assoziativ, d.h. Spiegeln Verkettung ∀ Assoziativität u,v,w∈Σ∗ Neutrales Element (uv)w = u(vw). Homomorphismus Kürzungsregeln Beweis. I Es seien v, w ∈ Σ∗ . I Wir müssen zeigen, daß ∀ (uv)w = u(vw). u∈Σ∗ I Dies erledigen wir gemäß dem Induktionsprinzip: I I Wir zeigen, daß diese Eigenschaft hat. Und wir zeigen, daß wenn ein u ∈ Σ∗ diese Eigenschaft hat, dann auch jedes αu. Math & Logik 2008W Induktionsbeweis: ∀ (uv)w = u(vw) ∗ u∈Σ Listen Länge Induktion I Rekursion Anhängen Induktionsanfang: Wir zeigen (v)w = (vw): Spiegeln Verkettung (v)w = vw Assoziativität Neutrales Element = (vw) Homomorphismus (cat-nil) (cat-nil-R). Kürzungsregeln I Induktionsschritt: Wir nehmen nun für ein u ∈ Σ∗ die Induktionshypothese (uv)w = u(vw) an. Für jedes α ∈ Σ zeigen wir nun ((αu)v)w = (αu)(vw): ((αu)v)w = (α(uv))w = α((uv)w) (cat-pre) (cat-pre) = α(u(vw)) (IH) = (αu)(vw) (cat-pre-R). Math & Logik 2008W ist ein neutrales Element Listen Länge Induktion Rekursion Anhängen Lemma Die leere Liste verhält sich bei Listenverkettung neutral, d.h. Spiegeln Verkettung ∀ u = u = u. Assoziativität u∈Σ∗ Neutrales Element Homomorphismus Kürzungsregeln Beweis. Der Teil u = u ist Bestandteil der Definition. Wir zeigen noch u = u mittels Listeninduktion: = (cat-nil); (αu) = α(u) = αu (cat-pre) (IH). Math & Logik 2008W Länge als Homomorphismus Listen Länge Induktion Rekursion Anhängen Spiegeln Lemma Die Länge ist ein Homomorphismus in die Halbgruppe der natürlichen Zahlen mit Addition, d.h.: Verkettung Assoziativität |uv| = |u| + |v| Neutrales Element Homomorphismus Kürzungsregeln Satz Die Spiegelung ist ein Anti-Homomorphismus: u fv = e vu e. Math & Logik 2008W Kürzungsregeln Listen Länge Induktion Rekursion Anhängen Satz Für Listen u, v, w ∈ Σ∗ gelten die Kürzungsregeln: Spiegeln Verkettung uv = uw =⇒ v = w, Assoziativität Neutrales Element uw = vw =⇒ u = v. Homomorphismus Kürzungsregeln Beweis. I IA: Es sei v = w, dann ist v = w (cat-nil); I IS mit IH uv = uw =⇒ v = w: Zu zeigen: (αu)v = (αu)w =⇒ v = w Annahme: (αu)v = (αu)w; Nur noch zu zeigen v = w. Mit (cat-pre) erhalten wir aus der Annahme α(uv) = α(uw). Da Listen nur dann gleich sind, wenn sie gleich konstruiert sind, ist somit uv = uw. Die (IH) liefert nun u = w.