Kapitel 4. Funktionale Programmierung Es gilt nun für die

Werbung
Kapitel 4. Funktionale Programmierung
Es gilt nun für die Fixpunktgleichung eine Lösung f zu finden, die der durch die
Termersetzung realisierten Berechnung für die Deklaration von f entspricht.
Da rekursive Deklarationen für die funktionale Programmierung von fundamentaler Bedeutung sind, bildet die Fixpunkttheorie zur Festlegung der genauen Bedeutung von Rekursion eine der wichtigsten Grundlagen der funktionalen Programmierung. Sie klärt die Bedeutung von rekursiven Deklarationen und gibt eine Grundlage
für Beweise von Eigenschaften für rekursive Rechenvorschriften.
Wir beginnen mit einer Zusammenstellung einiger für die Fixpunkttheorie fundamentaler Begriffe.
Minimum
Maximum
gerichtete
Menge
Sei (M, v) eine partiell geordnete Menge. Ein kleinstes Element oder ein Minimum ist ein ⊥ ∈ M mit ∀ a ∈ M : ⊥ v a. Ein größtes Element oder ein
Maximum ist ein > ∈ M mit ∀ a ∈ M : a v >. Ein Minimum ist eindeutig im
Falle der Existenz; ebenso ist ein Maximum eindeutig, sofern es existiert.
Eine partiell geordnete Menge heißt gerichtet, wenn jede endliche Teilmenge
eine obere Schranke hat:
(M, v) partielle Ordnung und
(M, v) gerichtete Menge ⇔
.
∀ S⊆M : S endlich ⇒ ∃ z∈M ∀ s∈S : svz
Äquivalent dazu, eine partiell geordnete Menge ist gerichtet, wenn sie nicht
leer ist und je zwei Elemente der Menge eine obere Schranke in der Menge
haben:
(M, v) partielle Ordnung und M 6= ∅
(M, v) gerichtete Menge ⇔
.
und ∀ x, y ∈ M ∃ z∈M : xvz ∧ yvz
Kette
Eine Kette ist eine partielle Ordnung, in der je zwei Elemente vergleichbar
sind, d.h.
(M, v) Kette
vollständig
partiell
geordnet
Projektion
⇔
((M, v) partielle Ordnung ∧ ∀ x, y ∈ M : xvy ∨ yvx).
Eine partiell geordnete Menge heißt vollständig partiell geordnet 1 , wenn jede
gerichtete Teilmenge eine kleinste obere Schranke hat.
Die Fixpunkttheorie baut fundamental auf der hier stichpunktartig dargestellten
Theorie der partiell geordneten Mengen auf.
Gegeben Mengen Mi (i ∈
QI), unter Projektion auf die j-te Komponente verstehen
wir die Abbildung (.)j : Q i∈I Mi → Mj , x 7→ xj . Für die j-te
Q Projektion einer
ganzen Teilmenge D ⊆ i∈I Mi schreiben wir auch πj : P( i∈I Mi ) → P(Mj ),
D 7→ {xj | x ∈ D}.
1
In der Literatur verwendet man den Begriff gerichtet-vollständig partiell geordnet (engl. directedcomplete partial order, oder dcpo), da es auch sogenannte ketten-vollständige partielle Ordnungen gibt. Den zweiten Begriff verwenden wir nicht und kürzen den ersten Begriff daher zu
„vollständig partiell geordnet“ ab.
180
4.2 Auswertung von Termen: Rekursion und Berechnung
Lemma 4.13: Sei I eine Indexmenge
Q und (Mi , ≤i ) partielle Ordnungen (i ∈ I)
und eine Teilmenge des Produkts F ⊆ i∈I Mi sei mit komponentenweiser Ordnung
versehen. Ist D eine gerichtete Teilmenge von F , so ist für alle i ∈ I die Projektion
von D auf die i-te Komponente gerichtet.
Beweis: Sei v die punktweise Ordnung auf A → B. Sei i ∈ I und x, y ∈ πi (D). Also gibt es
a, b ∈ D mit ai = x und bi = y. Dann existiert ein c ∈ D mit a v c und b v c. Dann ai ≤i ci und
bi ≤i ci . Beachte, dass ci ∈ πi (D), x ≤i ci und y ≤i ci .
Lemma 4.14: Sei I eine Indexmenge,
(Mi , ≤i ) vollständig partiell geordnete
Q
Mengen (i ∈ I), und das Produkt P = i∈I Mi sei mit komponentenweiser Ordnung
versehen. Zu jeder gerichteten Teilmenge von P existiert das Supremum, und es wird
komponentenweise gebildet:
(sup D)i = sup (πi (D))
(D ⊆ P, D gerichtet, i∈I).
Beweis: Sei v die komponentenweise Ordnung auf P . Sei D ⊆ P gerichtet. Für jedes i ∈ I ist die
Menge {xi | x ∈ D} gerichtet nach Lemma 4.13, besitzt also ein Supremum. Sei
y = (sup {xi | x∈D})i∈I .
Wir zeigen:
„y ist eine obere Schranke von D“: Sei x ∈ D. Dann ∀ i ∈ I : xi ≤i sup{xi | x ∈ D} = yi . Also
x v y.
„y ist kleiner oder gleich jeder oberen Schranke von D“: Sei z eine obere Schranke von D. Dann
∀x ∈ D ∀ i ∈ I : xi ≤i zi . Wir vertauschen die Reihenfolge der Allquantoren: ∀i ∈ I ∀x ∈
D : xi ≤i zi . Also ∀ i ∈ I : sup{xi | x ∈ D} ≤ zi . Also ∀ i ∈ I : yi ≤i zi . Also y v z.
Korollar 4.15: Sei I eine Indexmenge,
(Mi , ≤i ) vollständig partiell geordnete
Q
Mengen (i ∈ I), und das Produkt P = i∈I Mi sei mit komponentenweiser Ordnung
v versehen. Dann ist (P, v) eine vollständig partiell geordnete Menge.
Der folgende Satz über die Existenz von Fixpunkten ist zentral für die Informatik. Er findet nicht nur im Zusammenhang mit rekursiven Funktionsdeklarationen
Verwendung.
Satz 4.16 (Pataraia): Sei M vollständig partiell geordnete Menge mit kleinstem Element und die Abbildung
τ :M→M
monoton, dann gilt:
τ hat einen eindeutigen kleinsten Fixpunkt.
181
Kapitel 4. Funktionale Programmierung
Es gibt zwei Beweise dieses Satzes: der erste erfordert transfinite Induktion und ist
kurz; der zweite, den wir hier darstellen, ist etwas länger, kommt aber mit einfacheren
Mitteln aus.
Wir starten mit dem folgenden Lemma.
Lemma 4.17: Sei A eine Menge, (B, ≤) eine vollständig partiell geordnete
Menge und die Menge der Funktionen F = (A → B) sei mit punktweiser Ordnung
versehen. Zu jeder gerichteten Teilmenge von F existiert das Supremum, und es wird
punktweise gebildet:
(sup D)(x) = sup{f (x) | f ∈D}
(D ⊆ F, D gerichtet, x∈A).
Beweis: Direkte Folgerung aus Lemma 4.14.
Korollar 4.18: Sei A eine Menge, (B, ≤) eine vollständig partiell geordnete
Menge und die Menge der Funktionen A → B sei mit punktweiser Ordnung v versehen. Dann ist ((A → B), v) eine vollständig partiell geordnete Menge.
Ist (C, ≤) eine partiell geordnete Menge, so nennen wir eine Abbildung g : C → C extensiv, wenn
x ≤ g(x) für alle x ∈ C gilt.
Beweis des Satzes von Pataraia: Wir bezeichnen mit ≤ die partielle Ordnung und mit ⊥ das
kleinste Element von M .
Ein Postfixpunkt von τ ist ein x ∈ M mit x ≤ τ (x). Sei P die Menge aller Postfixpunkte von τ .
Wir betrachten Teilmengen U ⊆ M , die die folgenden Eigenschaften erfüllen:
(a) ⊥ ∈ U ,
(b) τ (U ) ⊆ U ,
(c) Ist G ⊆ U und (G, ≤|G×G ) gerichtet, so supM G ∈ U , d.h. U ist vollständig partiell geordnet
mit denselben Suprema wie in M . (Wir benutzen den unteren Index M , um zu kennzeichnen,
dass das Supremum in M gebildet wird.)
Die Menge der Postfixpunkte erfüllt diese Eigenschaften:
„⊥ ∈ P “: Denn ⊥ ≤ τ (⊥).
“τ (P ) ⊆ P “: Denn ist x ∈ P gegeben, so x ≤ τ (x), also τ (x) ≤ τ (τ (x)) nach Monotonie, also
τ (x) ∈ P .
„P abgeschlossen unter Suprema gerichteter Teilmengen“: Sei (G, ≤|G×G ) gerichtet und G ⊆ P .
Dann existiert supM G. Für alle x ∈ G ist daher x ≤ [da x ∈ P ] τ (x) ≤ τ (supM G).
Daher ist τ (supM G) eine obere Schranke von G und somit supM G ≤ τ (supM G), also
(supM G) ∈ P .
Also ist
\
C :=
{U ⊆ M | U erfüllt (a), (b) und (c)}
wohldefiniert. Beachte, dass ⊥ ∈ C.
Nun zeigen wir, dass C vollständig partiell geordnet mit denselben Suprema wie in M ist. Dazu
sei G ⊆ C gerichtet. Dann G ⊆ U für jedes U ⊆ M , das (a), (b) und (c) erfüllt. Wegen (c) ist
sup G ∈ U für jedes solche U . Daher sup G ∈ C.
Also ist C eine vollständig partiell geordnete Menge mit kleinstem Element und denselben
Suprema wie in M . Sei
E(C) = {g ∈ (C → C) | g extensiv und monoton} und f = τ |C .
182
4.2 Auswertung von Termen: Rekursion und Berechnung
Bemerke: f (C) ⊆ C. Da C ⊆ P , ist f extensiv und somit f ∈ E(C).
Sei v die punktweise partielle Ordnung auf E(C). Nach Korollar 4.18 ist (E(C), v) eine vollständige partielle Ordnung.
Wir bemerken, dass für extensive und monotone g, h : C → C auch deren relationale Komposition g ◦ h (zuerst g, dann h) extensiv und monoton ist. Also ist E(C) unter relationaler Komposition
abgeschlossen.
Nun zeigen wir, dass (E(C), v) eine gerichtete Menge ist. Dazu seien g, h ∈ E(C). Da h extensiv
ist, gilt g(x) ≤ h(g(x)) (x ∈ C). Da g extensiv und h monoton ist, gilt h(x) ≤ h(g(x)) (x ∈ C).
Also ist g ◦ h eine obere Schranke für g und für h. Da E(C) 6= ∅, ist E(C) gerichtet.
Da E(C) vollständige partielle Ordnung ist, existiert m = sup E(C). Beachte, dass m◦f ∈ E(C)
und somit m ◦ f v m. Da aber f extensiv ist, ist m v m ◦ f . Also m ◦ f = m. Daher gilt
f (m(c)) = m(c) für alle c ∈ C. Also ist m(⊥) Fixpunkt von f , also auch von τ .
Wir zeigen, dass m(⊥) der kleinste Fixpunkt von τ ist. Sei nun x ein beliebiger Fixpunkt von
τ . Dann x ∈ P . Sei V = P ∩ {y ∈ M | y ≤ x}. Dann erfüllt V die Eigenschaften (a), (b) und (c):
„⊥ ∈ V “: Denn ⊥ ≤ x und ⊥ ∈ P .
„τ (V ) ⊆ V “: Sei v ∈ V . Da v ∈ P , gilt τ (v) ∈ P . Da v ≤ x, gilt τ (v) ≤ τ (x) = x. Daher τ (v) ∈ V .
„V abgeschlossen unter Suprema gerichteter Teilmengen“: Sei (G, ≤|G×G ) gerichtet und G ⊆ V .
Dann G ⊆ P . Da P unter Suprema gerichteter Mengen abgeschlossen ist, gilt supM G ∈ P .
Da x eine obere Schranke von G ist, supM G ≤ x. Also supM G ∈ V .
Also C ⊆ V . Insbesondere m(⊥) ≤ x. Also ist m(⊥) der kleinste Fixpunkt von τ .
Für vollständige partielle Ordnungen M, N heißt eine monotone Abbildung
f :M→N
stetig, wenn für alle gerichteten Mengen S ⊆ M die Gleichung
stetig
f (sup S) = sup {f (x) : x ∈ S}
gilt. Die Suprema existieren, da S gerichtet ist und da die Menge {f (x) : x ∈ S}
wegen Monotonie von f gerichtet ist.
Satz 4.19 (Einfache stetige Funktionen): Sei (M, ≤) eine vollständig partiell geordnete Menge. Dann gilt:
(a) Die Identität ist stetig.
(b) Die konstanten Funktionen sind stetig.
Sei zusätzlich K ⊆ M so dass (K, ≤|K×K ) partiell geordnet so dass M -Suprema
aller gerichteter Teilmengen von K zu K gehören. Dann gilt:
(c) Die Injektion inj : K → M , K 3 x 7→ x ∈ M ist stetig.
Sei I eine Indexmenge,
seien (Mi , ≤i ) (i ∈ I) vollständig partiell geordnete Mengen
Q
und trage P = i∈I Mi die komponentenweise Ordnung. Dann gilt:
(d) Die Projektionen (.)i : P → Mi , x 7→ xi sind stetig (i ∈ I).
Beweis:
(a) Die Identität idM ist monoton. Ist N ⊆ M gerichtet, so idM (sup N ) = sup N = sup(idM (N )).
(b) Sei c ∈ M , f : M → M, x 7→ c. Die Abbildung f ist monoton. Außerdem gilt f (sup N ) =
c = sup({c}) = sup(f (N )) für jede gerichtete (und daher nichtleere) Menge N ⊆ M .
(c) Seien x, y ∈ K mit x ≤|K×K y. Dann x ≤ y, also inj(x) ≤ inj(y). Also ist die Injektion monoton. Sei N ⊆ K gerichtet. Dann ist supM (inj(N )) = supM N = supK N = inj(supK N ).
183
Herunterladen